diff --git a/photos/IMG_20211105_104548.jpg b/photos/Luigi/IMG_20211105_104548.jpg
similarity index 100%
rename from photos/IMG_20211105_104548.jpg
rename to photos/Luigi/IMG_20211105_104548.jpg
diff --git a/photos/IMG_20211105_104551.jpg b/photos/Luigi/IMG_20211105_104551.jpg
similarity index 100%
rename from photos/IMG_20211105_104551.jpg
rename to photos/Luigi/IMG_20211105_104551.jpg
diff --git a/photos/IMG_20211105_104558.jpg b/photos/Luigi/IMG_20211105_104558.jpg
similarity index 100%
rename from photos/IMG_20211105_104558.jpg
rename to photos/Luigi/IMG_20211105_104558.jpg
diff --git a/photos/IMG_20211105_104559.jpg b/photos/Luigi/IMG_20211105_104559.jpg
similarity index 100%
rename from photos/IMG_20211105_104559.jpg
rename to photos/Luigi/IMG_20211105_104559.jpg
diff --git a/photos/IMG_20211105_104604.jpg b/photos/Luigi/IMG_20211105_104604.jpg
similarity index 100%
rename from photos/IMG_20211105_104604.jpg
rename to photos/Luigi/IMG_20211105_104604.jpg
diff --git a/photos/IMG_20211105_104610.jpg b/photos/Luigi/IMG_20211105_104610.jpg
similarity index 100%
rename from photos/IMG_20211105_104610.jpg
rename to photos/Luigi/IMG_20211105_104610.jpg
diff --git a/photos/IMG_20211105_104617.jpg b/photos/Luigi/IMG_20211105_104617.jpg
similarity index 100%
rename from photos/IMG_20211105_104617.jpg
rename to photos/Luigi/IMG_20211105_104617.jpg
diff --git a/photos/IMG_20211105_104628.jpg b/photos/Luigi/IMG_20211105_104628.jpg
similarity index 100%
rename from photos/IMG_20211105_104628.jpg
rename to photos/Luigi/IMG_20211105_104628.jpg
diff --git a/photos/Roland/20211103_170335.jpg b/photos/Roland/20211103_170335.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..476c3607e8be32cab5519d23ff00761b955bafb3
Binary files /dev/null and b/photos/Roland/20211103_170335.jpg differ
diff --git a/photos/Roland/20211103_170343.jpg b/photos/Roland/20211103_170343.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..2097065110cc101398b73053e83081b650b6f97c
Binary files /dev/null and b/photos/Roland/20211103_170343.jpg differ
diff --git a/photos/Roland/20211103_170348.jpg b/photos/Roland/20211103_170348.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..6531004040552972f2c9bfa0ab92e360ff63dfcc
Binary files /dev/null and b/photos/Roland/20211103_170348.jpg differ
diff --git a/photos/Roland/20211103_170452.jpg b/photos/Roland/20211103_170452.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..3c8903d8907079950212308f8c851d914ab8ebe6
Binary files /dev/null and b/photos/Roland/20211103_170452.jpg differ
diff --git a/photos/Roland/20211103_170458.jpg b/photos/Roland/20211103_170458.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..19c892bb8b0d6381f241a548964da3c35bc6928e
Binary files /dev/null and b/photos/Roland/20211103_170458.jpg differ
diff --git a/photos/Roland/20211103_171116.jpg b/photos/Roland/20211103_171116.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..246d52026ccffe968cdafb50a86c993dad82c188
Binary files /dev/null and b/photos/Roland/20211103_171116.jpg differ
diff --git a/photos/Roland/20211103_171213.jpg b/photos/Roland/20211103_171213.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..0c41e73f8e56d9162d93f64ac8dc4e45445cdcbc
Binary files /dev/null and b/photos/Roland/20211103_171213.jpg differ
diff --git a/photos/Roland/20211103_171959.jpg b/photos/Roland/20211103_171959.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..33baf87ae9ebecc8473440d71cb6ddfdb51b0194
Binary files /dev/null and b/photos/Roland/20211103_171959.jpg differ
diff --git a/photos/Roland/20211103_172002.jpg b/photos/Roland/20211103_172002.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..a783dc5e336d922f7d67c96ab630616585419fc0
Binary files /dev/null and b/photos/Roland/20211103_172002.jpg differ
diff --git a/photos/Roland/20211103_172046.jpg b/photos/Roland/20211103_172046.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..cfd6eddd4b528123722bdc0e857303ca1c250374
Binary files /dev/null and b/photos/Roland/20211103_172046.jpg differ
diff --git a/photos/Roland/20211103_172049.jpg b/photos/Roland/20211103_172049.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..efa73c61eab7fe492c40a71fa9d8c1c3e76b62a3
Binary files /dev/null and b/photos/Roland/20211103_172049.jpg differ
diff --git a/photos/Roland/20211103_172122.jpg b/photos/Roland/20211103_172122.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..106fc87768c3fc9a77a26092115e26589f14f186
Binary files /dev/null and b/photos/Roland/20211103_172122.jpg differ
diff --git a/photos/Roland/20211103_172144.jpg b/photos/Roland/20211103_172144.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..57acd9b1f4806ac9e31e304ac3edf5fb7212bc21
Binary files /dev/null and b/photos/Roland/20211103_172144.jpg differ
diff --git a/photos/Roland/20211104_082005.jpg b/photos/Roland/20211104_082005.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..e2e689983abf59dd4b180f1b9318edb534fada3a
Binary files /dev/null and b/photos/Roland/20211104_082005.jpg differ
diff --git a/photos/Roland/20211104_082010.jpg b/photos/Roland/20211104_082010.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..e4432d761d4cde79c25987075cf1d32abe8d9567
Binary files /dev/null and b/photos/Roland/20211104_082010.jpg differ
diff --git a/photos/Roland/20211104_133714.jpg b/photos/Roland/20211104_133714.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..24451b7380911f67c4854696b3c0add5df9b2e19
Binary files /dev/null and b/photos/Roland/20211104_133714.jpg differ
diff --git a/photos/Roland/20211104_133722.jpg b/photos/Roland/20211104_133722.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..ef473e198793479ede85c73682f58684b4e94fd6
Binary files /dev/null and b/photos/Roland/20211104_133722.jpg differ
diff --git a/photos/Roland/20211104_150531.jpg b/photos/Roland/20211104_150531.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..ae5b96c7fe8899aac5c6ac6dffce954083ab9eb9
Binary files /dev/null and b/photos/Roland/20211104_150531.jpg differ
diff --git a/photos/Roland/20211104_150533.jpg b/photos/Roland/20211104_150533.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..c9d784d6491cf19c8fc6ea3966fcece1b23b849e
Binary files /dev/null and b/photos/Roland/20211104_150533.jpg differ
diff --git a/photos/Roland/20211104_150535.jpg b/photos/Roland/20211104_150535.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..0a16ffd7a6fc22704a757185bb39354a235d828f
Binary files /dev/null and b/photos/Roland/20211104_150535.jpg differ
diff --git a/photos/Roland/20211104_150550.jpg b/photos/Roland/20211104_150550.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..053ade5734efe574fc98bdf2eb50273542db4eaa
Binary files /dev/null and b/photos/Roland/20211104_150550.jpg differ
diff --git a/photos/Roland/20211104_153311.jpg b/photos/Roland/20211104_153311.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..f7bacc00848a890b81531c85a7e6133e50dd64c3
Binary files /dev/null and b/photos/Roland/20211104_153311.jpg differ
diff --git a/photos/Roland/20211104_153315.jpg b/photos/Roland/20211104_153315.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..787d9b88680cd60a45a2ff8747a557cd18ad30af
Binary files /dev/null and b/photos/Roland/20211104_153315.jpg differ
diff --git a/photos/Roland/20211104_153919.jpg b/photos/Roland/20211104_153919.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..6dbf2d7553275c561d4a8d20b5a0848cbea1efa2
Binary files /dev/null and b/photos/Roland/20211104_153919.jpg differ
diff --git a/photos/Roland/20211104_153926.jpg b/photos/Roland/20211104_153926.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..e2aef5d922ea3c9264c096ca6615596c590e0d1e
Binary files /dev/null and b/photos/Roland/20211104_153926.jpg differ
diff --git a/photos/Roland/20211104_153930.jpg b/photos/Roland/20211104_153930.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..de216fe8081c4e706eff25ba23ee86953ddccf2b
Binary files /dev/null and b/photos/Roland/20211104_153930.jpg differ
diff --git a/photos/Roland/20211104_170855.jpg b/photos/Roland/20211104_170855.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..cbe5117fc777c379135b696a00e4caa2dd88ae30
Binary files /dev/null and b/photos/Roland/20211104_170855.jpg differ
diff --git a/photos/Roland/20211104_170906.jpg b/photos/Roland/20211104_170906.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..f94cf269f319719113c6a892378d7b28738de252
Binary files /dev/null and b/photos/Roland/20211104_170906.jpg differ
diff --git a/photos/Roland/20211104_200430.jpg b/photos/Roland/20211104_200430.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..4709c552c67e52632423366044746cea4e5b2916
Binary files /dev/null and b/photos/Roland/20211104_200430.jpg differ
diff --git a/photos/Roland/20211104_200434.jpg b/photos/Roland/20211104_200434.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..1ce3e1206408d78cdd29d9d2ed154c6a1d2118b8
Binary files /dev/null and b/photos/Roland/20211104_200434.jpg differ
diff --git a/photos/Roland/20211105_155152.jpg b/photos/Roland/20211105_155152.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..b11b2934c32cdc27c420d15cbe9d67b4a1258571
Binary files /dev/null and b/photos/Roland/20211105_155152.jpg differ
diff --git a/photos/Roland/20211105_155159.jpg b/photos/Roland/20211105_155159.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..54f550af602f31a591759c64f64b155aefc7bccf
Binary files /dev/null and b/photos/Roland/20211105_155159.jpg differ
diff --git a/photos/index.php b/photos/index.php
new file mode 100644
index 0000000000000000000000000000000000000000..d1f22d2fa462cac495ffbc367ef87b6c2440409f
--- /dev/null
+++ b/photos/index.php
@@ -0,0 +1,93 @@
+<?php
+
+$images=array("Luigi/","Roland/");
+$thumbnails="./";
+//$images="./";
+// $thumbnails="thumbnail/";
+// $images="images/"
+       
+
+?>
+<!doctype html>
+<html>
+    <head>
+        <title>19th RAMiCS photo gallery</title>
+        <link href='simplelightbox-master/dist/simple-lightbox.min.css' rel='stylesheet' type='text/css'>
+        <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
+        
+        <script type="text/javascript" src="simplelightbox-master/dist/simple-lightbox.jquery.min.js"></script>
+        
+        <link href='style.css' rel='stylesheet' type='text/css'>
+    </head>
+    <body>
+        <div class='container'>
+            <div class="gallery">
+              
+            <?php 
+            // Image extensions
+            $image_extensions = array("png","jpg","jpeg","gif");
+
+            // Target directory
+foreach ($images as $dir){
+            if (is_dir($dir)){
+                
+                if ($dh = opendir($dir)){
+                    $count = 1;
+
+                    // Read files
+                    while (($file = readdir($dh)) !== false){
+
+                        if($file != '' && $file != '.' && $file != '..'){
+                            
+                            // Thumbnail image path
+                            $thumbnail_path = $dir.$thumbnails.$file;
+
+                            // Image path
+                            $image_path = $dir.$file;
+                            
+                            $thumbnail_ext = pathinfo($thumbnail_path, PATHINFO_EXTENSION);
+                            $image_ext = pathinfo($image_path, PATHINFO_EXTENSION);
+
+                            // Check its not folder and it is image file
+                            if(!is_dir($image_path) && 
+                                in_array($thumbnail_ext,$image_extensions) && 
+                                in_array($image_ext,$image_extensions)){
+                                ?>
+
+                                <!-- Image -->
+                                <a href="<?php echo $image_path; ?>">
+                                    <img src="<?php echo $thumbnail_path; ?>" alt="" title=""/>
+                                </a>
+                                <!-- --- -->
+                                <?php
+
+                                // Break
+                                if( $count%4 == 0){
+                                ?>
+                                    <div class="clear"></div>
+                                <?php    
+                                }
+                                $count++;
+                            }
+                        }
+                            
+                    }
+                    closedir($dh);
+                }
+            }
+}
+            ?>
+            </div>
+        </div>
+
+
+        <!-- Script -->
+        <script type='text/javascript'>
+        $(document).ready(function(){
+
+            // Intialize gallery
+            var gallery = $('.gallery a').simpleLightbox();
+        });
+        </script>
+    </body>
+</html>
\ No newline at end of file
diff --git a/photos/simplelightbox-master/dist/simple-lightbox.css b/photos/simplelightbox-master/dist/simple-lightbox.css
new file mode 100644
index 0000000000000000000000000000000000000000..910f7a7447a2cfffbc770223b9dbbbc30002e1ab
--- /dev/null
+++ b/photos/simplelightbox-master/dist/simple-lightbox.css
@@ -0,0 +1,231 @@
+/*!
+	By André Rinas, www.andrerinas.de
+	Documentation, www.simplelightbox.de
+	Available for use under the MIT License
+	Version 2.7.0
+*/
+body.hidden-scroll {
+  overflow: hidden; }
+
+.sl-overlay {
+  position: fixed;
+  left: 0;
+  right: 0;
+  top: 0;
+  bottom: 0;
+  background: #fff;
+  opacity: 0.7;
+  display: none;
+  z-index: 1035; }
+
+.sl-wrapper {
+  z-index: 1040;
+  width: 100%;
+  height: 100%;
+  left: 0;
+  top: 0;
+  position: fixed; }
+  .sl-wrapper * {
+    box-sizing: border-box; }
+  .sl-wrapper button {
+    border: 0 none;
+    background: transparent;
+    font-size: 28px;
+    padding: 0;
+    cursor: pointer; }
+    .sl-wrapper button:hover {
+      opacity: 0.7; }
+  .sl-wrapper .sl-close {
+    display: none;
+    position: fixed;
+    right: 30px;
+    top: 30px;
+    z-index: 10060;
+    margin-top: -14px;
+    margin-right: -14px;
+    height: 44px;
+    width: 44px;
+    line-height: 44px;
+    font-family: Arial, Baskerville, monospace;
+    color: #000;
+    font-size: 3rem; }
+  .sl-wrapper .sl-counter {
+    display: none;
+    position: fixed;
+    top: 30px;
+    left: 30px;
+    z-index: 1060;
+    color: #000;
+    font-size: 1rem; }
+  .sl-wrapper .sl-navigation {
+    width: 100%;
+    display: none; }
+    .sl-wrapper .sl-navigation button {
+      position: fixed;
+      top: 50%;
+      margin-top: -22px;
+      height: 44px;
+      width: 22px;
+      line-height: 44px;
+      text-align: center;
+      display: block;
+      z-index: 10060;
+      font-family: Arial, Baskerville, monospace;
+      color: #000; }
+      .sl-wrapper .sl-navigation button.sl-next {
+        right: 5px;
+        font-size: 2rem; }
+      .sl-wrapper .sl-navigation button.sl-prev {
+        left: 5px;
+        font-size: 2rem; }
+      @media (min-width: 35.5em) {
+        .sl-wrapper .sl-navigation button {
+          width: 44px; }
+          .sl-wrapper .sl-navigation button.sl-next {
+            right: 10px;
+            font-size: 3rem; }
+          .sl-wrapper .sl-navigation button.sl-prev {
+            left: 10px;
+            font-size: 3rem; } }
+      @media (min-width: 50em) {
+        .sl-wrapper .sl-navigation button {
+          width: 44px; }
+          .sl-wrapper .sl-navigation button.sl-next {
+            right: 20px;
+            font-size: 3rem; }
+          .sl-wrapper .sl-navigation button.sl-prev {
+            left: 20px;
+            font-size: 3rem; } }
+  .sl-wrapper.sl-dir-rtl .sl-navigation {
+    direction: ltr; }
+  .sl-wrapper .sl-image {
+    position: fixed;
+    -ms-touch-action: none;
+    touch-action: none;
+    z-index: 10000; }
+    .sl-wrapper .sl-image img {
+      margin: 0;
+      padding: 0;
+      display: block;
+      border: 0 none;
+      width: 100%;
+      height: auto; }
+      @media (min-width: 35.5em) {
+        .sl-wrapper .sl-image img {
+          border: 0 none; } }
+      @media (min-width: 50em) {
+        .sl-wrapper .sl-image img {
+          border: 0 none; } }
+    .sl-wrapper .sl-image iframe {
+      background: #000;
+      border: 0 none; }
+      @media (min-width: 35.5em) {
+        .sl-wrapper .sl-image iframe {
+          border: 0 none; } }
+      @media (min-width: 50em) {
+        .sl-wrapper .sl-image iframe {
+          border: 0 none; } }
+    .sl-wrapper .sl-image .sl-caption {
+      display: none;
+      padding: 10px;
+      color: #fff;
+      background: rgba(0, 0, 0, 0.8);
+      font-size: 1rem;
+      position: absolute;
+      bottom: 0;
+      left: 0;
+      right: 0; }
+      .sl-wrapper .sl-image .sl-caption.pos-top {
+        bottom: auto;
+        top: 0; }
+      .sl-wrapper .sl-image .sl-caption.pos-outside {
+        bottom: auto; }
+    .sl-wrapper .sl-image .sl-download {
+      display: none;
+      position: absolute;
+      bottom: 5px;
+      right: 5px;
+      color: #000;
+      z-index: 1060; }
+
+.sl-spinner {
+  display: none;
+  border: 5px solid #333;
+  border-radius: 40px;
+  height: 40px;
+  left: 50%;
+  margin: -20px 0 0 -20px;
+  opacity: 0;
+  position: fixed;
+  top: 50%;
+  width: 40px;
+  z-index: 1007;
+  -webkit-animation: pulsate 1s ease-out infinite;
+  -moz-animation: pulsate 1s ease-out infinite;
+  -ms-animation: pulsate 1s ease-out infinite;
+  -o-animation: pulsate 1s ease-out infinite;
+  animation: pulsate 1s ease-out infinite; }
+
+.sl-scrollbar-measure {
+  position: absolute;
+  top: -9999px;
+  width: 50px;
+  height: 50px;
+  overflow: scroll; }
+
+.sl-transition {
+  transition: -moz-transform ease 200ms;
+  transition: -ms-transform ease 200ms;
+  transition: -o-transform ease 200ms;
+  transition: -webkit-transform ease 200ms;
+  transition: transform ease 200ms; }
+
+@-webkit-keyframes pulsate {
+  0% {
+    transform: scale(0.1);
+    opacity: 0.0; }
+  50% {
+    opacity: 1; }
+  100% {
+    transform: scale(1.2);
+    opacity: 0; } }
+
+@keyframes pulsate {
+  0% {
+    transform: scale(0.1);
+    opacity: 0.0; }
+  50% {
+    opacity: 1; }
+  100% {
+    transform: scale(1.2);
+    opacity: 0; } }
+
+@-moz-keyframes pulsate {
+  0% {
+    transform: scale(0.1);
+    opacity: 0.0; }
+  50% {
+    opacity: 1; }
+  100% {
+    transform: scale(1.2);
+    opacity: 0; } }
+
+@-o-keyframes pulsate {
+  0% {
+    transform: scale(0.1);
+    opacity: 0.0; }
+  50% {
+    opacity: 1; }
+  100% {
+    transform: scale(1.2);
+    opacity: 0; } }
+
+@-ms-keyframes pulsate {
+  0% {
+    transform: scale(0.1);
+    opacity: 0.0; }
+  50% {
+    opacity: 1; }
+  100% {
+    transform: scale(1.2);
+    opacity: 0; } }
diff --git a/photos/simplelightbox-master/dist/simple-lightbox.esm.js b/photos/simplelightbox-master/dist/simple-lightbox.esm.js
new file mode 100644
index 0000000000000000000000000000000000000000..b897e22aa6fff78faf09758804dd4d9160d08ee9
--- /dev/null
+++ b/photos/simplelightbox-master/dist/simple-lightbox.esm.js
@@ -0,0 +1,1377 @@
+/*!
+	By André Rinas, www.andrerinas.de
+	Documentation, www.simplelightbox.de
+	Available for use under the MIT License
+	Version 2.7.0
+*/
+class SimpleLightbox {
+
+    defaultOptions = {
+        sourceAttr: 'href',
+        overlay: true,
+        spinner: true,
+        nav: true,
+        navText: ['&lsaquo;', '&rsaquo;'],
+        captions: true,
+        captionDelay: 0,
+        captionSelector: 'img',
+        captionType: 'attr',
+        captionsData: 'title',
+        captionPosition: 'bottom',
+        captionClass: '',
+        close: true,
+        closeText: '&times;',
+        swipeClose: true,
+        showCounter: true,
+        fileExt: 'png|jpg|jpeg|gif|webp',
+        animationSlide: true,
+        animationSpeed: 250,
+        preloading: true,
+        enableKeyboard: true,
+        loop: true,
+        rel: false,
+        docClose: true,
+        swipeTolerance: 50,
+        className: 'simple-lightbox',
+        widthRatio: 0.8,
+        heightRatio: 0.9,
+        scaleImageToRatio: false,
+        disableRightClick: false,
+        disableScroll: true,
+        alertError: true,
+        alertErrorMessage: 'Image not found, next image will be loaded',
+        additionalHtml: false,
+        history: true,
+        throttleInterval: 0,
+        doubleTapZoom: 2,
+        maxZoom: 10,
+        htmlClass: 'has-lightbox',
+        rtl: false,
+        fixedClass: 'sl-fixed',
+        fadeSpeed: 300,
+        uniqueImages: true,
+        focus: true
+    };
+
+    transitionPrefix;
+    transitionCapable = false;
+
+    isTouchDevice = ('ontouchstart' in window);
+
+
+    initialLocationHash;
+
+    pushStateSupport = ('pushState' in history);
+
+    isOpen = false;
+    isAnimating = false;
+    isClosing = false;
+    isFadeIn = false;
+    urlChangedOnce = false;
+    hashReseted = false;
+    historyHasChanges = false;
+    historyUpdateTimeout = null;
+
+    currentImage;
+    eventNamespace = 'simplelightbox';
+    domNodes = {};
+
+    loadedImages = [];
+    initialImageIndex = 0;
+    currentImageIndex = 0;
+
+    initialSelector = null;
+    globalScrollbarWidth = 0;
+
+    controlCoordinates = {
+        swipeDiff: 0,
+        swipeYDiff: 0,
+        swipeStart: 0,
+        swipeEnd: 0,
+        swipeYStart: 0,
+        swipeYEnd: 0,
+        mousedown: false,
+        imageLeft: 0,
+        zoomed: false,
+        containerHeight: 0,
+        containerWidth: 0,
+        containerOffsetX: 0,
+        containerOffsetY: 0,
+        imgHeight: 0,
+        imgWidth: 0,
+        capture: false,
+        initialOffsetX: 0,
+        initialOffsetY: 0,
+        initialPointerOffsetX: 0,
+        initialPointerOffsetY: 0,
+        initialPointerOffsetX2: 0,
+        initialPointerOffsetY2: 0,
+        initialScale: 1,
+        initialPinchDistance: 0,
+        pointerOffsetX: 0,
+        pointerOffsetY: 0,
+        pointerOffsetX2: 0,
+        pointerOffsetY2: 0,
+        targetOffsetX: 0,
+        targetOffsetY: 0,
+        targetScale: 0,
+        pinchOffsetX: 0,
+        pinchOffsetY: 0,
+        limitOffsetX: 0,
+        limitOffsetY: 0,
+        scaleDifference: 0,
+        targetPinchDistance: 0,
+        touchCount: 0,
+        doubleTapped: false,
+        touchmoveCount: 0
+    };
+
+    constructor(elements, options) {
+
+        this.options = Object.assign(this.defaultOptions, options);
+
+        if (typeof elements === 'string') {
+            this.initialSelector = elements;
+            this.elements = Array.from(document.querySelectorAll(elements));
+        } else {
+            this.elements = ((typeof elements.length !== 'undefined') && elements.length > 0) ? Array.from(elements) : [elements];
+        }
+
+        this.relatedElements = [];
+
+        this.transitionPrefix = this.calculateTransitionPrefix();
+        this.transitionCapable = this.transitionPrefix !== false;
+        this.initialLocationHash = this.hash;
+
+        // this should be handled by attribute selector IMHO! => 'a[rel=bla]'...
+        if (this.options.rel) {
+            this.elements = this.getRelated(this.options.rel);
+        }
+
+        if (this.options.uniqueImages) {
+            let imgArr = [];
+            this.elements = Array.from(this.elements).filter(
+                element => {
+                    let src = element.getAttribute(this.options.sourceAttr);
+                    if(imgArr.indexOf(src) === -1) {
+                        imgArr.push(src);
+                        return true;
+                    }
+                    return false;
+                }
+            );
+        }
+
+        this.createDomNodes();
+
+        if (this.options.close) {
+            this.domNodes.wrapper.appendChild(this.domNodes.closeButton);
+        }
+
+        if (this.options.nav) {
+            this.domNodes.wrapper.appendChild(this.domNodes.navigation);
+        }
+
+        if (this.options.spinner) {
+            this.domNodes.wrapper.appendChild(this.domNodes.spinner);
+        }
+
+        this.addEventListener(this.elements, 'click.' + this.eventNamespace, (event) => {
+
+            if (this.isValidLink(event.currentTarget)) {
+                event.preventDefault();
+                if (this.isAnimating) {
+                    return false;
+                }
+
+                this.initialImageIndex = this.elements.indexOf(event.currentTarget);
+                this.openImage(event.currentTarget);
+            }
+        });
+
+        // close addEventListener click addEventListener doc
+        if (this.options.docClose) {
+            this.addEventListener(this.domNodes.wrapper, ['click.' + this.eventNamespace, 'touchstart.' + this.eventNamespace], (event) => {
+                if (this.isOpen && event.target === event.currentTarget) {
+                    this.close();
+                }
+            });
+        }
+
+        // disable rightclick
+        if (this.options.disableRightClick) {
+            this.addEventListener(document.body, 'contextmenu.' + this.eventNamespace, (event) => {
+                if (event.target.classList.contains('sl-overlay')) {
+                    event.preventDefault();
+                }
+            });
+        }
+
+        // keyboard-control
+        if (this.options.enableKeyboard) {
+            this.addEventListener(document.body, 'keyup.' + this.eventNamespace, this.throttle((event) => {
+                this.controlCoordinates.swipeDiff = 0;
+                // keyboard control only if lightbox is open
+
+                if (this.isAnimating && event.key === 'Escape') {
+                    this.currentImage.setAttribute('src', '');
+                    this.isAnimating = false;
+                    return this.close();
+                }
+
+                if (this.isOpen) {
+                    event.preventDefault();
+                    if (event.key === 'Escape') {
+                        this.close();
+                    }
+                    if(!this.isAnimating && ['ArrowLeft', 'ArrowRight'].indexOf(event.key) > -1) {
+                      this.loadImage(event.key === 'ArrowRight' ? 1 : -1);
+                    }
+                }
+            }, this.options.throttleInterval));
+        }
+
+        this.addEvents();
+    }
+
+    createDomNodes() {
+        this.domNodes.overlay = document.createElement('div');
+        this.domNodes.overlay.classList.add('sl-overlay');
+        this.domNodes.overlay.dataset.opacityTarget = ".7";
+
+        this.domNodes.closeButton = document.createElement('button');
+        this.domNodes.closeButton.classList.add('sl-close');
+        this.domNodes.closeButton.innerHTML = this.options.closeText;
+
+        this.domNodes.spinner = document.createElement('div');
+        this.domNodes.spinner.classList.add('sl-spinner');
+        this.domNodes.spinner.innerHTML = '<div></div>';
+
+        this.domNodes.navigation = document.createElement('div');
+        this.domNodes.navigation.classList.add('sl-navigation');
+        this.domNodes.navigation.innerHTML = `<button class="sl-prev">${this.options.navText[0]}</button><button class="sl-next">${this.options.navText[1]}</button>`;
+
+        this.domNodes.counter = document.createElement('div');
+        this.domNodes.counter.classList.add('sl-counter');
+        this.domNodes.counter.innerHTML = '<span class="sl-current"></span>/<span class="sl-total"></span>';
+
+        this.domNodes.caption = document.createElement('div');
+        this.domNodes.caption.classList.add('sl-caption', 'pos-' + this.options.captionPosition);
+        if (this.options.captionClass) {
+            this.domNodes.caption.classList.add(this.options.captionClass);
+        }
+
+        this.domNodes.image = document.createElement('div');
+        this.domNodes.image.classList.add('sl-image');
+
+        this.domNodes.wrapper = document.createElement('div');
+        this.domNodes.wrapper.classList.add('sl-wrapper');
+        this.domNodes.wrapper.setAttribute('tabindex',-1);
+        this.domNodes.wrapper.setAttribute('role','dialog');
+        this.domNodes.wrapper.setAttribute('aria-hidden',false);
+        if (this.options.className) {
+            this.domNodes.wrapper.classList.add(this.options.className);
+        }
+        if(this.options.rtl) {
+            this.domNodes.wrapper.classList.add('sl-dir-rtl');
+        }
+    }
+
+    throttle(func, limit) {
+        let inThrottle;
+        return function () {
+            if (!inThrottle) {
+                func.apply(this, arguments);
+                inThrottle = true;
+                setTimeout(function () {
+                    return inThrottle = false;
+                }, limit);
+            }
+        };
+    }
+
+    isValidLink(element) {
+        return (!this.options.fileExt) || ('pathname' in element && (new RegExp('(' + this.options.fileExt + ')$', 'i')).test(element.pathname));
+    }
+
+    calculateTransitionPrefix() {
+        let s = (document.body || document.documentElement).style;
+
+        return 'transition' in s ? '' :
+            'WebkitTransition' in s ? '-webkit-' :
+                'MozTransition' in s ? '-moz-' :
+                    'OTransition' in s ? '-o' :
+                        false;
+    }
+
+    toggleScrollbar(type) {
+        let scrollbarWidth = 0;
+        let fixedElements =  [].slice.call(document.querySelectorAll('.'+this.options.fixedClass))
+        if (type === 'hide') {
+            let fullWindowWidth = window.innerWidth;
+            if (!fullWindowWidth) {
+                let documentElementRect = document.documentElement.getBoundingClientRect();
+                fullWindowWidth = documentElementRect.right - Math.abs(documentElementRect.left);
+            }
+            if (document.body.clientWidth < fullWindowWidth) {
+                let scrollDiv = document.createElement('div'),
+                    paddingRight = parseInt(document.body.style.paddingRight || 0, 10);
+
+                scrollDiv.classList.add('sl-scrollbar-measure');
+
+                document.body.appendChild(scrollDiv);
+                scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth;
+                document.body.removeChild(scrollDiv);
+
+                document.body.dataset.originalPaddingRight = paddingRight;
+                if (scrollbarWidth > 0) {
+                    document.body.classList.add('hidden-scroll');
+                    document.body.style.paddingRight = (paddingRight + scrollbarWidth) + 'px';
+
+                    fixedElements.forEach(element => {
+                        const actualPadding = element.style.paddingRight
+                        const calculatedPadding = window.getComputedStyle(element)['padding-right']
+                        element.dataset.originalPaddingRight = actualPadding;
+                        element.style.paddingRight = `${parseFloat(calculatedPadding) + scrollbarWidth}px`
+                    });
+
+                }
+            }
+        } else {
+            document.body.classList.remove('hidden-scroll');
+            document.body.style.paddingRight = document.body.dataset.originalPaddingRight;
+
+            fixedElements.forEach(element => {
+                const padding = element.dataset.originalPaddingRight;
+                if (typeof padding !== 'undefined') {
+                    element.style.paddingRight = padding
+                }
+            });
+        }
+        return scrollbarWidth;
+    }
+
+    close() {
+        if (!this.isOpen || this.isAnimating || this.isClosing) {
+            return false;
+        }
+
+        this.isClosing = true;
+        let element = this.relatedElements[this.currentImageIndex];
+        element.dispatchEvent(new Event('close.simplelightbox'));
+
+        if (this.options.history) {
+            this.historyHasChanges = false;
+            if(!this.hashReseted) {
+                this.resetHash();
+            }
+        }
+
+        this.removeEventListener(document, 'focusin.' + this.eventNamespace);
+
+
+        this.fadeOut(document.querySelectorAll('.sl-image img, .sl-overlay, .sl-close, .sl-navigation, .sl-image .sl-caption, .sl-counter'), this.options.fadeSpeed, () => {
+            if (this.options.disableScroll) {
+                this.toggleScrollbar('show');
+            }
+
+            if (this.options.htmlClass && this.options.htmlClass !== '') {
+                document.querySelector('html').classList.remove(this.options.htmlClass);
+            }
+
+            document.body.removeChild(this.domNodes.wrapper);
+            document.body.removeChild(this.domNodes.overlay);
+            this.domNodes.additionalHtml = null;
+
+            element.dispatchEvent(new Event('closed.simplelightbox'));
+
+            this.isClosing = false;
+        });
+
+        this.currentImage = null;
+        this.isOpen = false;
+        this.isAnimating = false;
+
+        // reset touchcontrol coordinates
+        for (let key in this.controlCoordinates) {
+            this.controlCoordinates[key] = 0;
+        }
+        this.controlCoordinates.mousedown = false;
+        this.controlCoordinates.zoomed = false;
+        this.controlCoordinates.capture = false;
+        this.controlCoordinates.initialScale = this.minMax(1, 1, this.options.maxZoom);
+        this.controlCoordinates.doubleTapped = false;
+    }
+
+    get hash() {
+        return window.location.hash.substring(1);
+    }
+
+    preload() {
+        let index = this.currentImageIndex,
+            length = this.relatedElements.length,
+            next = (index + 1 < 0) ? length - 1 : (index + 1 >= length - 1) ? 0 : index + 1,
+            prev = (index - 1 < 0) ? length - 1 : (index - 1 >= length - 1) ? 0 : index - 1,
+            nextImage = new Image(),
+            prevImage = new Image();
+
+        nextImage.addEventListener('load', (event) => {
+            let src = event.target.getAttribute('src');
+            if (this.loadedImages.indexOf(src) === -1) { //is this condition even required... setting multiple times will not change usage...
+                this.loadedImages.push(src);
+            }
+            this.relatedElements[index].dispatchEvent(new Event('nextImageLoaded.' + this.eventNamespace));
+        });
+        nextImage.setAttribute('src', this.relatedElements[next].getAttribute(this.options.sourceAttr));
+
+        prevImage.addEventListener('load', (event) => {
+            let src = event.target.getAttribute('src');
+            if (this.loadedImages.indexOf(src) === -1) {
+                this.loadedImages.push(src);
+            }
+            this.relatedElements[index].dispatchEvent(new Event('prevImageLoaded.' + this.eventNamespace));
+        });
+        prevImage.setAttribute('src', this.relatedElements[prev].getAttribute(this.options.sourceAttr));
+    }
+
+    loadImage(direction) {
+        let slideDirection = direction;
+        if(this.options.rtl) {
+            direction = -direction;
+        }
+
+        this.relatedElements[this.currentImageIndex].dispatchEvent(new Event('change.' + this.eventNamespace));
+        this.relatedElements[this.currentImageIndex].dispatchEvent(new Event((direction === 1 ? 'next' : 'prev') + '.' + this.eventNamespace));
+
+        let newIndex = this.currentImageIndex + direction;
+
+        if (this.isAnimating || (newIndex < 0 || newIndex >= this.relatedElements.length) && this.options.loop === false) {
+            return false;
+        }
+
+        this.currentImageIndex = (newIndex < 0) ? this.relatedElements.length - 1 : (newIndex > this.relatedElements.length - 1) ? 0 : newIndex;
+
+        this.domNodes.counter.querySelector('.sl-current').innerHTML = this.currentImageIndex + 1;
+
+
+        if (this.options.animationSlide) {
+            this.slide(this.options.animationSpeed / 1000, (-100 * slideDirection) - this.controlCoordinates.swipeDiff + 'px');
+        }
+
+        this.fadeOut(this.domNodes.image, this.options.fadeSpeed, () => {
+            this.isAnimating = true;
+
+            if(!this.isClosing) {
+                setTimeout(() => {
+
+                    let element = this.relatedElements[this.currentImageIndex];
+                    this.currentImage.setAttribute('src', element.getAttribute(this.options.sourceAttr));
+
+                    if (this.loadedImages.indexOf(element.getAttribute(this.options.sourceAttr)) === -1) {
+                        this.show(this.domNodes.spinner);
+                    }
+
+                    if(this.domNodes.image.contains(this.domNodes.caption)) {
+                      this.domNodes.image.removeChild(this.domNodes.caption);
+                    }
+
+                    this.adjustImage(slideDirection);
+                    if (this.options.preloading) this.preload();
+                }, 100);
+            } else {
+                this.isAnimating = false;
+            }
+        });
+    }
+
+    adjustImage(direction) {
+        if (!this.currentImage) {
+            return false;
+        }
+
+        let tmpImage = new Image(),
+            windowWidth = window.innerWidth * this.options.widthRatio,
+            windowHeight = window.innerHeight * this.options.heightRatio;
+
+        tmpImage.setAttribute('src', this.currentImage.getAttribute('src'));
+
+        this.currentImage.dataset.scale = 1;
+        this.currentImage.dataset.translateX = 0;
+        this.currentImage.dataset.translateY = 0;
+        this.zoomPanElement(0, 0, 1);
+
+        tmpImage.addEventListener('error', (event) => {
+            this.relatedElements[this.currentImageIndex].dispatchEvent(new Event('error.' + this.eventNamespace));
+            this.isAnimating = false;
+            this.isOpen = false;
+            this.domNodes.spinner.style.display = 'none';
+
+            let dirIsDefined = direction === 1 || direction === -1;
+            if (this.initialImageIndex === this.currentImageIndex && dirIsDefined) {
+                return this.close();
+            }
+
+            if (this.options.alertError) {
+                alert(this.options.alertErrorMessage);
+            }
+
+            this.loadImage(dirIsDefined ? direction : 1);
+        });
+
+
+        tmpImage.addEventListener('load', (event) => {
+            if (typeof direction !== 'undefined') {
+                this.relatedElements[this.currentImageIndex].dispatchEvent(new Event('changed.' + this.eventNamespace));
+                this.relatedElements[this.currentImageIndex].dispatchEvent(new Event((direction === 1 ? 'nextDone' : 'prevDone') + '.' + this.eventNamespace));
+            }
+
+            // history
+            if (this.options.history) {
+                this.updateURL();
+            }
+
+            if (this.loadedImages.indexOf(this.currentImage.getAttribute('src')) === -1) {
+                this.loadedImages.push(this.currentImage.getAttribute('src'));
+            }
+
+            let imageWidth = event.target.width,
+                imageHeight = event.target.height;
+
+            if (this.options.scaleImageToRatio || imageWidth > windowWidth || imageHeight > windowHeight) {
+                let ratio = imageWidth / imageHeight > windowWidth / windowHeight ? imageWidth / windowWidth : imageHeight / windowHeight;
+                imageWidth /= ratio;
+                imageHeight /= ratio;
+            }
+
+            this.domNodes.image.style.top = (window.innerHeight - imageHeight) / 2 + 'px';
+            this.domNodes.image.style.left = (window.innerWidth - imageWidth - this.globalScrollbarWidth) / 2 + 'px';
+            this.domNodes.image.style.width = imageWidth + 'px';
+            this.domNodes.image.style.height = imageHeight + 'px';
+
+            this.domNodes.spinner.style.display = 'none';
+            if( this.options.focus ) {
+                this.forceFocus();
+            }
+            this.fadeIn(this.currentImage, this.options.fadeSpeed, () => {
+                if( this.options.focus ) {
+                    this.domNodes.wrapper.focus();
+                }
+            });
+
+            this.isOpen = true;
+
+            let captionContainer,
+                captionText;
+
+            if (typeof this.options.captionSelector === 'string') {
+                captionContainer = this.options.captionSelector === 'self' ? this.relatedElements[this.currentImageIndex] : this.relatedElements[this.currentImageIndex].querySelector(this.options.captionSelector);
+            } else if (typeof this.options.captionSelector === 'function') {
+                captionContainer = this.options.captionSelector(this.relatedElements[this.currentImageIndex]);
+            }
+
+            if(this.options.captions && captionContainer) {
+                if (this.options.captionType === 'data') {
+                    captionText = captionContainer.dataset[this.options.captionsData];
+                } else if (this.options.captionType === 'text') {
+                    captionText = captionContainer.innerHTML;
+                } else {
+                    captionText = captionContainer.getAttribute(this.options.captionsData);
+                }
+            }
+
+            if (!this.options.loop) {
+                if (this.currentImageIndex === 0) {
+                    this.hide(this.domNodes.navigation.querySelector('.sl-prev'));
+                }
+                if (this.currentImageIndex >= this.relatedElements.length - 1) {
+                    this.hide(this.domNodes.navigation.querySelector('.sl-next'));
+                }
+                if (this.currentImageIndex > 0) {
+                    this.show(this.domNodes.navigation.querySelector('.sl-prev'));
+                }
+                if (this.currentImageIndex < this.relatedElements.length - 1) {
+                    this.show(this.domNodes.navigation.querySelector('.sl-next'));
+                }
+            }
+
+            if (this.relatedElements.length === 1) {
+                this.hide(this.domNodes.navigation.querySelectorAll('.sl-prev, .sl-next'));
+            } else {
+                this.show(this.domNodes.navigation.querySelectorAll('.sl-prev, .sl-next'));
+            }
+
+            if (direction === 1 || direction === -1) {
+                if (this.options.animationSlide) {
+                    this.slide(0, 100 * direction + 'px');
+                    setTimeout(() => {
+                        this.slide(this.options.animationSpeed / 1000, 0 + 'px');
+                    }, 50);
+                }
+                this.fadeIn(this.domNodes.image, this.options.fadeSpeed, () => {
+                    this.isAnimating = false;
+                    this.setCaption(captionText, imageWidth);
+                });
+
+            } else {
+                this.isAnimating = false;
+                this.setCaption(captionText, imageWidth);
+            }
+
+            if (this.options.additionalHtml && !this.domNodes.additionalHtml) {
+                this.domNodes.additionalHtml = document.createElement('div');
+                this.domNodes.additionalHtml.classList.add('sl-additional-html');
+                this.domNodes.additionalHtml.innerHTML = this.options.additionalHtml;
+                this.domNodes.image.appendChild(this.domNodes.additionalHtml);
+            }
+
+        });
+    }
+
+    zoomPanElement(targetOffsetX, targetOffsetY, targetScale) {
+
+        this.currentImage.style[this.transitionPrefix + 'transform'] = 'translate(' + targetOffsetX + ',' + targetOffsetY + ') scale(' + targetScale + ')';
+
+    };
+
+    minMax(value, min, max) {
+        return (value < min) ? min : (value > max) ? max : value;
+    };
+
+    setZoomData(initialScale, targetOffsetX, targetOffsetY) {
+        this.currentImage.dataset.scale = initialScale;
+        this.currentImage.dataset.translateX = targetOffsetX;
+        this.currentImage.dataset.translateY = targetOffsetY;
+    };
+
+
+    hashchangeHandler() {
+        if (this.isOpen && this.hash === this.initialLocationHash) {
+            this.hashReseted = true;
+            this.close();
+        }
+    }
+
+    addEvents() {
+
+        // resize/responsive
+        this.addEventListener(window, 'resize.' + this.eventNamespace, (event) => {
+            //this.adjustImage.bind(this)
+            if (this.isOpen) {
+                this.adjustImage();
+            }
+        });
+
+        this.addEventListener(this.domNodes.closeButton, ['click.' + this.eventNamespace, 'touchstart.' + this.eventNamespace], this.close.bind(this));
+
+        if (this.options.history) {
+            setTimeout(() => {
+                this.addEventListener(window, 'hashchange.' + this.eventNamespace, (event) => {
+                    if (this.isOpen) {
+                        this.hashchangeHandler();
+                    }
+                });
+            }, 40);
+        }
+
+        this.addEventListener(this.domNodes.navigation.getElementsByTagName('button'), 'click.' + this.eventNamespace, (event) => {
+            if (!event.currentTarget.tagName.match(/button/i)) {
+                return true;
+            }
+
+            event.preventDefault();
+            this.controlCoordinates.swipeDiff = 0;
+            this.loadImage(event.currentTarget.classList.contains('sl-next') ? 1 : -1);
+        });
+
+        this.addEventListener(this.domNodes.image, ['touchstart.' + this.eventNamespace, 'mousedown.' + this.eventNamespace], (event) => {
+            if (event.target.tagName === 'A' && event.type === 'touchstart') {
+                return true;
+            }
+
+            if (event.type === 'mousedown') {
+                this.controlCoordinates.initialPointerOffsetX = event.clientX;
+                this.controlCoordinates.initialPointerOffsetY = event.clientY;
+                this.controlCoordinates.containerHeight = this.getDimensions(this.domNodes.image).height;
+                this.controlCoordinates.containerWidth = this.getDimensions(this.domNodes.image).width;
+                this.controlCoordinates.imgHeight = this.getDimensions(this.currentImage).height;
+                this.controlCoordinates.imgWidth = this.getDimensions(this.currentImage).width;
+                this.controlCoordinates.containerOffsetX = this.domNodes.image.offsetLeft;
+                this.controlCoordinates.containerOffsetY = this.domNodes.image.offsetTop;
+
+                this.controlCoordinates.initialOffsetX = parseFloat(this.currentImage.dataset.translateX);
+                this.controlCoordinates.initialOffsetY = parseFloat(this.currentImage.dataset.translateY);
+                this.controlCoordinates.capture = true;
+            } else {
+                this.controlCoordinates.touchCount = event.touches.length;
+                this.controlCoordinates.initialPointerOffsetX = event.touches[0].clientX;
+                this.controlCoordinates.initialPointerOffsetY = event.touches[0].clientY;
+                this.controlCoordinates.containerHeight = this.getDimensions(this.domNodes.image).height;
+                this.controlCoordinates.containerWidth = this.getDimensions(this.domNodes.image).width;
+                this.controlCoordinates.imgHeight = this.getDimensions(this.currentImage).height;
+                this.controlCoordinates.imgWidth = this.getDimensions(this.currentImage).width;
+                this.controlCoordinates.containerOffsetX = this.domNodes.image.offsetLeft;
+                this.controlCoordinates.containerOffsetY = this.domNodes.image.offsetTop;
+
+                if (this.controlCoordinates.touchCount === 1) /* Single touch */ {
+                    if (!this.controlCoordinates.doubleTapped) {
+                        this.controlCoordinates.doubleTapped = true;
+                        setTimeout(() => {
+                            this.controlCoordinates.doubleTapped = false;
+                        }, 300);
+                    } else {
+
+                        this.currentImage.classList.add('sl-transition');
+                        if (!this.controlCoordinates.zoomed) {
+                            this.controlCoordinates.initialScale = this.options.doubleTapZoom;
+                            this.setZoomData(this.controlCoordinates.initialScale,0, 0);
+                            this.zoomPanElement(0 + "px", 0 + "px", this.controlCoordinates.initialScale);
+
+
+                            if (!this.domNodes.caption.style.opacity && this.domNodes.caption.style.display !== 'none') {
+                                this.fadeOut(this.domNodes.caption, this.options.fadeSpeed);
+                            }
+
+                            this.controlCoordinates.zoomed = true;
+                        } else {
+                            this.controlCoordinates.initialScale = 1;
+                            this.setZoomData(this.controlCoordinates.initialScale,0, 0);
+                            this.zoomPanElement(0 + "px", 0 + "px", this.controlCoordinates.initialScale);
+                            this.controlCoordinates.zoomed = false;
+                        }
+
+                        setTimeout(() => {
+                            if (this.currentImage) {
+                                this.currentImage.classList.remove('sl-transition');
+                            }
+                        }, 200);
+                        return false;
+                    }
+
+                    this.controlCoordinates.initialOffsetX  = parseFloat(this.currentImage.dataset.translateX);
+                    this.controlCoordinates.initialOffsetY = parseFloat(this.currentImage.dataset.translateY);
+                }
+                else if (this.controlCoordinates.touchCount === 2) /* Pinch */ {
+                    this.controlCoordinates.initialPointerOffsetX2 = event.touches[1].clientX;
+                    this.controlCoordinates.initialPointerOffsetY2 = event.touches[1].clientY;
+                    this.controlCoordinates.initialOffsetX = parseFloat(this.currentImage.dataset.translateX);
+                    this.controlCoordinates.initialOffsetY = parseFloat(this.currentImage.dataset.translateY);
+                    this.controlCoordinates.pinchOffsetX = (this.controlCoordinates.initialPointerOffsetX + this.controlCoordinates.initialPointerOffsetX2) / 2;
+                    this.controlCoordinates.pinchOffsetY = (this.controlCoordinates.initialPointerOffsetY + this.controlCoordinates.initialPointerOffsetY2) / 2;
+                    this.controlCoordinates.initialPinchDistance = Math.sqrt(((this.controlCoordinates.initialPointerOffsetX - this.controlCoordinates.initialPointerOffsetX2) * (this.controlCoordinates.initialPointerOffsetX - this.controlCoordinates.initialPointerOffsetX2)) + ((this.controlCoordinates.initialPointerOffsetY - this.controlCoordinates.initialPointerOffsetY2) * (this.controlCoordinates.initialPointerOffsetY - this.controlCoordinates.initialPointerOffsetY2)));
+                }
+                this.controlCoordinates.capture = true;
+            }
+            if(this.controlCoordinates.mousedown) return true;
+            if (this.transitionCapable) {
+                this.controlCoordinates.imageLeft = parseInt(this.domNodes.image.style.left, 10);
+            }
+            this.controlCoordinates.mousedown = true;
+            this.controlCoordinates.swipeDiff = 0;
+            this.controlCoordinates.swipeYDiff = 0;
+            this.controlCoordinates.swipeStart = event.pageX || event.touches[0].pageX;
+            this.controlCoordinates.swipeYStart = event.pageY || event.touches[0].pageY;
+
+            return false;
+        });
+
+        this.addEventListener(this.domNodes.image, ['touchmove.' + this.eventNamespace, 'mousemove.' + this.eventNamespace, 'MSPointerMove'], (event) => {
+
+
+            if (!this.controlCoordinates.mousedown) {
+                return true;
+            }
+
+            event.preventDefault();
+
+            if (event.type === 'touchmove') {
+                if (this.controlCoordinates.capture === false) {
+                    return false;
+                }
+
+                this.controlCoordinates.pointerOffsetX = event.touches[0].clientX;
+                this.controlCoordinates.pointerOffsetY = event.touches[0].clientY;
+                this.controlCoordinates.touchCount = event.touches.length;
+                this.controlCoordinates.touchmoveCount++;
+
+                if (this.controlCoordinates.touchCount > 1) /* Pinch */ {
+                    this.controlCoordinates.pointerOffsetX2 = event.touches[1].clientX;
+                    this.controlCoordinates.pointerOffsetY2 = event.touches[1].clientY;
+                    this.controlCoordinates.targetPinchDistance = Math.sqrt(((this.controlCoordinates.pointerOffsetX - this.controlCoordinates.pointerOffsetX2) * (this.controlCoordinates.pointerOffsetX - this.controlCoordinates.pointerOffsetX2)) + ((this.controlCoordinates.pointerOffsetY - this.controlCoordinates.pointerOffsetY2) * (this.controlCoordinates.pointerOffsetY - this.controlCoordinates.pointerOffsetY2)));
+                    if (this.controlCoordinates.initialPinchDistance === null) {
+                        this.controlCoordinates.initialPinchDistance = this.controlCoordinates.targetPinchDistance;
+                    }
+
+                    if (Math.abs(this.controlCoordinates.initialPinchDistance - this.controlCoordinates.targetPinchDistance) >= 1) {
+                        /* Initialize helpers */
+                        this.controlCoordinates.targetScale = this.minMax(this.controlCoordinates.targetPinchDistance / this.controlCoordinates.initialPinchDistance * this.controlCoordinates.initialScale, 1, this.options.maxZoom);
+                        this.controlCoordinates.limitOffsetX = ((this.controlCoordinates.imgWidth * this.controlCoordinates.targetScale) - this.controlCoordinates.containerWidth) / 2;
+                        this.controlCoordinates.limitOffsetY = ((this.controlCoordinates.imgHeight * this.controlCoordinates.targetScale) - this.controlCoordinates.containerHeight) / 2;
+                        this.controlCoordinates.scaleDifference = this.controlCoordinates.targetScale - this.controlCoordinates.initialScale;
+                        this.controlCoordinates.targetOffsetX = (this.controlCoordinates.imgWidth * this.controlCoordinates.targetScale) <= this.controlCoordinates.containerWidth ? 0 : this.minMax(this.controlCoordinates.initialOffsetX - ((((((this.controlCoordinates.pinchOffsetX - this.controlCoordinates.containerOffsetX) - (this.controlCoordinates.containerWidth / 2)) - this.controlCoordinates.initialOffsetX) / (this.controlCoordinates.targetScale - this.controlCoordinates.scaleDifference))) * this.controlCoordinates.scaleDifference), this.controlCoordinates.limitOffsetX * (-1), this.controlCoordinates.limitOffsetX);
+                        this.controlCoordinates.targetOffsetY = (this.controlCoordinates.imgHeight * this.controlCoordinates.targetScale) <= this.controlCoordinates.containerHeight ? 0 : this.minMax(this.controlCoordinates.initialOffsetY - ((((((this.controlCoordinates.pinchOffsetY - this.controlCoordinates.containerOffsetY) - (this.controlCoordinates.containerHeight / 2)) - this.controlCoordinates.initialOffsetY) / (this.controlCoordinates.targetScale - this.controlCoordinates.scaleDifference))) * this.controlCoordinates.scaleDifference), this.controlCoordinates.limitOffsetY * (-1), this.controlCoordinates.limitOffsetY);
+
+                        this.zoomPanElement(this.controlCoordinates.targetOffsetX + "px", this.controlCoordinates.targetOffsetY + "px", this.controlCoordinates.targetScale);
+
+                        if (this.controlCoordinates.targetScale > 1) {
+                            this.controlCoordinates.zoomed = true;
+                            if (!this.domNodes.caption.style.opacity && this.domNodes.caption.style.display !== 'none') {
+                                this.fadeOut(this.domNodes.caption, this.options.fadeSpeed);
+                            }
+                        }
+
+                        this.controlCoordinates.initialPinchDistance = this.controlCoordinates.targetPinchDistance;
+                        this.controlCoordinates.initialScale = this.controlCoordinates.targetScale;
+                        this.controlCoordinates.initialOffsetX = this.controlCoordinates.targetOffsetX;
+                        this.controlCoordinates.initialOffsetY = this.controlCoordinates.targetOffsetY;
+                    }
+                } else {
+                    this.controlCoordinates.targetScale = this.controlCoordinates.initialScale;
+                    this.controlCoordinates.limitOffsetX = ((this.controlCoordinates.imgWidth * this.controlCoordinates.targetScale) - this.controlCoordinates.containerWidth) / 2;
+                    this.controlCoordinates.limitOffsetY = ((this.controlCoordinates.imgHeight * this.controlCoordinates.targetScale) - this.controlCoordinates.containerHeight) / 2;
+                    this.controlCoordinates.targetOffsetX = (this.controlCoordinates.imgWidth * this.controlCoordinates.targetScale) <= this.controlCoordinates.containerWidth ? 0 : this.minMax(this.controlCoordinates.pointerOffsetX - (this.controlCoordinates.initialPointerOffsetX - this.controlCoordinates.initialOffsetX), this.controlCoordinates.limitOffsetX * (-1), this.controlCoordinates.limitOffsetX);
+                    this.controlCoordinates.targetOffsetY = (this.controlCoordinates.imgHeight * this.controlCoordinates.targetScale) <= this.controlCoordinates.containerHeight ? 0 : this.minMax(this.controlCoordinates.pointerOffsetY - (this.controlCoordinates.initialPointerOffsetY - this.controlCoordinates.initialOffsetY), this.controlCoordinates.limitOffsetY * (-1), this.controlCoordinates.limitOffsetY);
+
+                    if (Math.abs(this.controlCoordinates.targetOffsetX) === Math.abs(this.controlCoordinates.limitOffsetX)) {
+                        this.controlCoordinates.initialOffsetX = this.controlCoordinates.targetOffsetX;
+                        this.controlCoordinates.initialPointerOffsetX = this.controlCoordinates.pointerOffsetX;
+                    }
+
+                    if (Math.abs(this.controlCoordinates.targetOffsetY) === Math.abs(this.controlCoordinates.limitOffsetY)) {
+                        this.controlCoordinates.initialOffsetY = this.controlCoordinates.targetOffsetY;
+                        this.controlCoordinates.initialPointerOffsetY = this.controlCoordinates.pointerOffsetY;
+                    }
+
+                    this.setZoomData(this.controlCoordinates.initialScale, this.controlCoordinates.targetOffsetX, this.controlCoordinates.targetOffsetY);
+                    this.zoomPanElement(this.controlCoordinates.targetOffsetX + "px", this.controlCoordinates.targetOffsetY + "px", this.controlCoordinates.targetScale);
+                }
+            }
+
+            /* Mouse Move implementation */
+            if (event.type === 'mousemove' && this.controlCoordinates.mousedown) {
+              if(event.type == 'touchmove') return true;
+              if(this.controlCoordinates.capture === false) return false;
+
+              this.controlCoordinates.pointerOffsetX = event.clientX;
+              this.controlCoordinates.pointerOffsetY = event.clientY;
+
+              this.controlCoordinates.targetScale = this.controlCoordinates.initialScale;
+              this.controlCoordinates.limitOffsetX = ((this.controlCoordinates.imgWidth * this.controlCoordinates.targetScale) - this.controlCoordinates.containerWidth) / 2;
+              this.controlCoordinates.limitOffsetY = ((this.controlCoordinates.imgHeight * this.controlCoordinates.targetScale) - this.controlCoordinates.containerHeight) / 2;
+              this.controlCoordinates.targetOffsetX = (this.controlCoordinates.imgWidth * this.controlCoordinates.targetScale) <= this.controlCoordinates.containerWidth ? 0 : this.minMax(this.controlCoordinates.pointerOffsetX - (this.controlCoordinates.initialPointerOffsetX - this.controlCoordinates.initialOffsetX), this.controlCoordinates.limitOffsetX * (-1), this.controlCoordinates.limitOffsetX);
+              this.controlCoordinates.targetOffsetY = (this.controlCoordinates.imgHeight * this.controlCoordinates.targetScale) <= this.controlCoordinates.containerHeight ? 0 : this.minMax(this.controlCoordinates.pointerOffsetY - (this.controlCoordinates.initialPointerOffsetY - this.controlCoordinates.initialOffsetY), this.controlCoordinates.limitOffsetY * (-1), this.controlCoordinates.limitOffsetY);
+
+              if (Math.abs(this.controlCoordinates.targetOffsetX) === Math.abs(this.controlCoordinates.limitOffsetX)) {
+                  this.controlCoordinates.initialOffsetX = this.controlCoordinates.targetOffsetX;
+                  this.controlCoordinates.initialPointerOffsetX = this.controlCoordinates.pointerOffsetX;
+              }
+
+              if (Math.abs(this.controlCoordinates.targetOffsetY) === Math.abs(this.controlCoordinates.limitOffsetY)) {
+                  this.controlCoordinates.initialOffsetY = this.controlCoordinates.targetOffsetY;
+                  this.controlCoordinates.initialPointerOffsetY = this.controlCoordinates.pointerOffsetY;
+              }
+
+              this.setZoomData(this.controlCoordinates.initialScale, this.controlCoordinates.targetOffsetX, this.controlCoordinates.targetOffsetY);
+              this.zoomPanElement(this.controlCoordinates.targetOffsetX + "px", this.controlCoordinates.targetOffsetY + "px", this.controlCoordinates.targetScale);
+
+            }
+
+            if (!this.controlCoordinates.zoomed) {
+
+                this.controlCoordinates.swipeEnd = event.pageX || event.touches[0].pageX;
+                this.controlCoordinates.swipeYEnd = event.pageY || event.touches[0].pageY;
+                this.controlCoordinates.swipeDiff = this.controlCoordinates.swipeStart - this.controlCoordinates.swipeEnd;
+                this.controlCoordinates.swipeYDiff = this.controlCoordinates.swipeYStart - this.controlCoordinates.swipeYEnd;
+                if (this.options.animationSlide) {
+                    this.slide(0, -this.controlCoordinates.swipeDiff + 'px');
+                }
+            }
+
+        });
+
+
+        this.addEventListener(this.domNodes.image, ['touchend.' + this.eventNamespace, 'mouseup.' + this.eventNamespace, 'touchcancel.' + this.eventNamespace, 'mouseleave.' + this.eventNamespace, 'pointerup', 'pointercancel', 'MSPointerUp', 'MSPointerCancel'], (event) => {
+
+
+            if (this.isTouchDevice && event.type === 'touchend') {
+                this.controlCoordinates.touchCount = event.touches.length;
+                if (this.controlCoordinates.touchCount === 0) /* No touch */ {
+                    /* Set attributes */
+                    if (this.currentImage) {
+                        this.setZoomData(this.controlCoordinates.initialScale, this.controlCoordinates.targetOffsetX, this.controlCoordinates.targetOffsetY);
+                    }
+                    if (this.controlCoordinates.initialScale === 1) {
+                        this.controlCoordinates.zoomed = false;
+                        if (this.domNodes.caption.style.display === 'none') {
+                            this.fadeIn(this.domNodes.caption, this.options.fadeSpeed);
+                        }
+                    }
+                    this.controlCoordinates.initialPinchDistance = null;
+                    this.controlCoordinates.capture = false;
+                } else if (this.controlCoordinates.touchCount === 1) /* Single touch */ {
+                    this.controlCoordinates.initialPointerOffsetX = event.touches[0].clientX;
+                    this.controlCoordinates.initialPointerOffsetY = event.touches[0].clientY;
+                } else if (this.controlCoordinates.touchCount > 1) /* Pinch */ {
+                    this.controlCoordinates.initialPinchDistance = null;
+                }
+            }
+
+
+            if (this.controlCoordinates.mousedown) {
+                this.controlCoordinates.mousedown = false;
+                let possibleDir = true;
+                if (!this.options.loop) {
+                    if (this.currentImageIndex === 0 && this.controlCoordinates.swipeDiff < 0) {
+                        possibleDir = false;
+                    }
+                    if (this.currentImageIndex >= this.relatedElements.length - 1 && this.controlCoordinates.swipeDiff > 0) {
+                        possibleDir = false;
+                    }
+                }
+                if (Math.abs(this.controlCoordinates.swipeDiff) > this.options.swipeTolerance && possibleDir) {
+                    this.loadImage(this.controlCoordinates.swipeDiff > 0 ? 1 : -1);
+                }
+                else if (this.options.animationSlide) {
+                    this.slide(this.options.animationSpeed / 1000, 0 + 'px');
+                }
+
+                if (this.options.swipeClose && Math.abs(this.controlCoordinates.swipeYDiff) > 50 && Math.abs(this.controlCoordinates.swipeDiff) < this.options.swipeTolerance) {
+                    this.close();
+                }
+            }
+        });
+
+        this.addEventListener(this.domNodes.image, ['dblclick'], (event) => {
+            if(this.isTouchDevice) return;
+            this.controlCoordinates.initialPointerOffsetX = event.clientX;
+            this.controlCoordinates.initialPointerOffsetY = event.clientY;
+            this.controlCoordinates.containerHeight = this.getDimensions(this.domNodes.image).height;
+            this.controlCoordinates.containerWidth = this.getDimensions(this.domNodes.image).width;
+            this.controlCoordinates.imgHeight = this.getDimensions(this.currentImage).height;
+            this.controlCoordinates.imgWidth = this.getDimensions(this.currentImage).width;
+            this.controlCoordinates.containerOffsetX = this.domNodes.image.offsetLeft;
+            this.controlCoordinates.containerOffsetY = this.domNodes.image.offsetTop;
+
+            this.currentImage.classList.add('sl-transition');
+
+            if(!this.controlCoordinates.zoomed) {
+                this.controlCoordinates.initialScale = this.options.doubleTapZoom;
+                this.setZoomData(this.controlCoordinates.initialScale, 0, 0);
+                this.zoomPanElement(0 + "px", 0 + "px", this.controlCoordinates.initialScale);
+                if (!this.domNodes.caption.style.opacity && this.domNodes.caption.style.display !== 'none') {
+                    this.fadeOut(this.domNodes.caption, this.options.fadeSpeed);
+                }
+                this.controlCoordinates.zoomed = true;
+            } else {
+                this.controlCoordinates.initialScale = 1;
+                this.setZoomData(this.controlCoordinates.initialScale, 0, 0);
+                this.zoomPanElement(0 + "px", 0 + "px", this.controlCoordinates.initialScale);
+                this.controlCoordinates.zoomed = false;
+                if (this.domNodes.caption.style.display === 'none') {
+                    this.fadeIn(this.domNodes.caption, this.options.fadeSpeed);
+                }
+            }
+            setTimeout(() => {
+                if (this.currentImage) {
+                    this.currentImage.classList.remove('sl-transition');
+                }
+            }, 200);
+
+            this.controlCoordinates.capture = true;
+            return false;
+        });
+
+    }
+
+    getDimensions(element) {
+        let styles = window.getComputedStyle(element),
+            height = element.offsetHeight,
+            width = element.offsetWidth,
+            borderTopWidth = parseFloat(styles.borderTopWidth),
+            borderBottomWidth = parseFloat(styles.borderBottomWidth),
+            paddingTop = parseFloat(styles.paddingTop),
+            paddingBottom = parseFloat(styles.paddingBottom),
+            borderLeftWidth = parseFloat(styles.borderLeftWidth),
+            borderRightWidth = parseFloat(styles.borderRightWidth),
+            paddingLeft = parseFloat(styles.paddingLeft),
+            paddingRight = parseFloat(styles.paddingRight);
+        return {
+            height: height - borderBottomWidth - borderTopWidth - paddingTop - paddingBottom,
+            width: width - borderLeftWidth - borderRightWidth - paddingLeft - paddingRight
+        };
+    }
+
+    updateHash() {
+        let newHash = 'pid=' + (this.currentImageIndex + 1),
+            newURL = window.location.href.split('#')[0] + '#' + newHash;
+
+        this.hashReseted = false;
+
+        if (this.pushStateSupport) {
+            window.history[this.historyHasChanges ? 'replaceState' : 'pushState']('', document.title, newURL);
+        } else {
+            // what is the browser target of this?
+            if (this.historyHasChanges) {
+                window.location.replace(newURL);
+            } else {
+                window.location.hash = newHash;
+            }
+        }
+        if(!this.historyHasChanges) {
+            this.urlChangedOnce = true;
+        }
+
+        this.historyHasChanges = true;
+    }
+
+    resetHash() {
+        this.hashReseted = true;
+        if(this.urlChangedOnce) {
+            history.back();
+        } else {
+            if (this.pushStateSupport) {
+                history.pushState('', document.title, window.location.pathname + window.location.search);
+            } else {
+                window.location.hash = '';
+            }
+        }
+        //
+        //in case an history operation is still pending
+        clearTimeout(this.historyUpdateTimeout);
+    }
+
+    updateURL() {
+        clearTimeout(this.historyUpdateTimeout);
+        if (!this.historyHasChanges) {
+            this.updateHash(); // first time
+        } else {
+            this.historyUpdateTimeout = setTimeout(this.updateHash.bind(this), 800);
+        }
+    }
+
+    setCaption(captionText, imageWidth) {
+        if (this.options.captions && captionText && captionText !== '' && typeof captionText !== "undefined") {
+            this.hide(this.domNodes.caption);
+            this.domNodes.caption.style.width = imageWidth + 'px';
+            this.domNodes.caption.innerHTML = captionText;
+
+            this.domNodes.image.appendChild(this.domNodes.caption);
+
+            setTimeout(() => {
+                this.fadeIn(this.domNodes.caption, this.options.fadeSpeed);
+            }, this.options.captionDelay);
+        }
+    }
+
+    slide(speed, pos) {
+        if (!this.transitionCapable) {
+            return this.domNodes.image.style.left = pos;
+        }
+
+        this.domNodes.image.style[this.transitionPrefix + 'transform'] = 'translateX(' + pos + ')';
+        this.domNodes.image.style[this.transitionPrefix + 'transition'] = this.transitionPrefix + 'transform ' + speed + 's linear';
+    }
+
+    getRelated(rel) {
+        let elems;
+        if (rel && rel !== false && rel !== 'nofollow') {
+            elems = Array.from(this.elements).filter(element => element.getAttribute('rel') === rel);
+        } else {
+            elems = this.elements;
+        }
+        return elems;
+    }
+
+    openImage(element) {
+        element.dispatchEvent(new Event('show.' + this.eventNamespace));
+
+        if (this.options.disableScroll) {
+            this.globalScrollbarWidth = this.toggleScrollbar('hide');
+        }
+
+        if (this.options.htmlClass && this.options.htmlClass !== '') {
+            document.querySelector('html').classList.add(this.options.htmlClass);
+        }
+
+        document.body.appendChild(this.domNodes.wrapper);
+
+        this.domNodes.wrapper.appendChild(this.domNodes.image);
+        if (this.options.overlay) {
+            document.body.appendChild(this.domNodes.overlay);
+        }
+
+        this.relatedElements = this.getRelated(element.rel);
+
+        if (this.options.showCounter) {
+            if (this.relatedElements.length == 1 && this.domNodes.wrapper.contains(this.domNodes.counter)) {
+                this.domNodes.wrapper.removeChild(this.domNodes.counter);
+            } else if(this.relatedElements.length > 1 && !this.domNodes.wrapper.contains(this.domNodes.counter)) {
+                this.domNodes.wrapper.appendChild(this.domNodes.counter);
+            }
+        }
+
+        this.isAnimating = true;
+
+        this.currentImageIndex = this.relatedElements.indexOf(element);
+
+        let targetURL = element.getAttribute(this.options.sourceAttr);
+
+        this.currentImage = document.createElement('img');
+        this.currentImage.style.display = 'none';
+        this.currentImage.setAttribute('src', targetURL);
+        this.currentImage.dataset.scale = 1;
+        this.currentImage.dataset.translateX = 0;
+        this.currentImage.dataset.translateY = 0;
+
+        if (this.loadedImages.indexOf(targetURL) === -1) {
+            this.loadedImages.push(targetURL);
+        }
+
+        this.domNodes.image.innerHTML = '';
+        this.domNodes.image.setAttribute('style', '');
+
+        this.domNodes.image.appendChild(this.currentImage);
+
+
+        this.fadeIn(this.domNodes.overlay, this.options.fadeSpeed);
+        this.fadeIn([this.domNodes.counter, this.domNodes.navigation, this.domNodes.closeButton], this.options.fadeSpeed);
+
+        this.show(this.domNodes.spinner);
+        this.domNodes.counter.querySelector('.sl-current').innerHTML = this.currentImageIndex + 1;
+        this.domNodes.counter.querySelector('.sl-total').innerHTML = this.relatedElements.length;
+
+        this.adjustImage();
+        if (this.options.preloading) {
+            this.preload();
+        }
+
+        setTimeout(() => {
+            element.dispatchEvent(new Event('shown.' + this.eventNamespace));
+        }, this.options.animationSpeed);
+    }
+
+    forceFocus() {
+        this.removeEventListener(document, 'focusin.' + this.eventNamespace);
+        this.addEventListener(document, 'focusin.' + this.eventNamespace, event => {
+            if (document !== event.target &&
+                this.domNodes.wrapper !== event.target &&
+                !this.domNodes.wrapper.contains(event.target)) {
+                this.domNodes.wrapper.focus();
+            }
+        });
+    }
+
+    // utility
+
+    addEventListener(elements, events, callback, opts) {
+        elements = this.wrap(elements);
+        events = this.wrap(events);
+
+
+        for (let element of elements) {
+            if (!element.namespaces) {
+                element.namespaces = {};
+            } // save the namespaces addEventListener the DOM element itself
+
+            for (let event of events) {
+                let options = opts || false;
+                element.namespaces[event] = callback;
+                element.addEventListener(event.split('.')[0], callback, options);
+
+            }
+        }
+    }
+
+    removeEventListener(elements, events) {
+        elements = this.wrap(elements);
+        events = this.wrap(events);
+        for (let element of elements) {
+            for (let event of events) {
+                if(element.namespaces && element.namespaces[event]) {
+                    element.removeEventListener(event.split('.')[0], element.namespaces[event]);
+                    delete element.namespaces[event];
+                }
+            }
+        }
+    }
+
+    fadeOut(elements, duration, callback) {
+        elements = this.wrap(elements);
+        for (let element of elements) {
+            element.style.opacity = 1;
+        }
+
+        this.isFadeIn = false;
+
+        let step = 16.66666 / (duration || this.options.fadeSpeed),
+            fade = () => {
+                let currentOpacity = parseFloat(elements[0].style.opacity);
+                if ((currentOpacity -= step) < 0) {
+                    for (let element of elements) {
+                        element.style.display = "none";
+                        element.style.opacity = '';
+                    }
+                    callback && callback.call(this, elements);
+                } else {
+                    for (let element of elements) {
+                        element.style.opacity = currentOpacity;
+                    }
+                    requestAnimationFrame(fade);
+                }
+            };
+
+        fade();
+    }
+
+    fadeIn(elements, duration, callback, display) {
+        elements = this.wrap(elements);
+        for (let element of elements) {
+            element.style.opacity = 0;
+            element.style.display = display || "block";
+        }
+
+        this.isFadeIn = true;
+
+        let opacityTarget = parseFloat(elements[0].dataset.opacityTarget || 1),
+            step = (16.66666 * opacityTarget) / (duration || this.options.fadeSpeed),
+            fade = () => {
+                let currentOpacity = parseFloat(elements[0].style.opacity);
+                if (!((currentOpacity += step) > opacityTarget)) {
+                    for (let element of elements) {
+                        element.style.opacity = currentOpacity;
+                    }
+                    if(!this.isFadeIn) return;
+                    requestAnimationFrame(fade);
+                } else {
+                    for (let element of elements) {
+                        element.style.opacity = '';
+                    }
+                    callback && callback.call(this, elements);
+                }
+            };
+
+        fade();
+    }
+
+    hide(elements) {
+        elements = this.wrap(elements);
+        for (let element of elements) {
+            element.dataset.initialDisplay = element.style.display;
+            element.style.display = 'none';
+        }
+    }
+
+    show(elements, display) {
+        elements = this.wrap(elements);
+        for (let element of elements) {
+            element.style.display = element.dataset.initialDisplay || display || 'block';
+        }
+    }
+
+    wrap(input) {
+        return typeof input[Symbol.iterator] === 'function' && typeof input !== 'string' ? input : [input];
+    }
+
+    on(events, callback) {
+        events = this.wrap(events);
+        for (let element of this.elements) {
+            if (!element.fullyNamespacedEvents) {
+                element.fullyNamespacedEvents = {};
+            }
+            for (let event of events) {
+                element.fullyNamespacedEvents[event] = callback;
+                element.addEventListener(event, callback);
+            }
+        }
+        return this;
+    }
+
+    off(events) {
+        events = this.wrap(events);
+        for (let element of this.elements) {
+            for (let event of events) {
+                if (typeof element.fullyNamespacedEvents !== 'undefined' && event in element.fullyNamespacedEvents) {
+                    element.removeEventListener(event, element.fullyNamespacedEvents[event]);
+                }
+            }
+        }
+        return this;
+    }
+
+    // api
+
+    open(elem) {
+        elem = elem || this.elements[0];
+        if(typeof jQuery !== "undefined" && elem instanceof jQuery) {
+            elem = elem.get(0);
+        }
+        this.initialImageIndex = this.elements.indexOf(elem);
+        if(this.initialImageIndex > -1) {
+            this.openImage(elem);
+        }
+    }
+
+    next() {
+        this.loadImage(1);
+    }
+
+    prev() {
+        this.loadImage(-1);
+    }
+
+    //close is exposed anyways..
+
+    destroy() {
+        //remove all custom event listeners from elements
+        this.off([
+            'close.' + this.eventNamespace,
+            'closed.' + this.eventNamespace,
+            'nextImageLoaded.' + this.eventNamespace,
+            'prevImageLoaded.' + this.eventNamespace,
+            'change.' + this.eventNamespace,
+            'nextDone.' + this.eventNamespace,
+            'prevDone.' + this.eventNamespace,
+            'error.' + this.eventNamespace,
+            'changed.' + this.eventNamespace,
+            'next.' + this.eventNamespace,
+            'prev.' + this.eventNamespace,
+            'show.' + this.eventNamespace,
+            'shown.' + this.eventNamespace
+        ]);
+
+        this.removeEventListener(this.elements, 'click.' + this.eventNamespace);
+        this.removeEventListener(document, 'focusin.' + this.eventNamespace);
+        this.removeEventListener(document.body, 'contextmenu.' + this.eventNamespace);
+        this.removeEventListener(document.body, 'keyup.' + this.eventNamespace);
+
+        this.removeEventListener(this.domNodes.navigation.getElementsByTagName('button'), 'click.' + this.eventNamespace);
+        this.removeEventListener(this.domNodes.closeButton, 'click.' + this.eventNamespace);
+        this.removeEventListener(window, 'resize.' + this.eventNamespace);
+        this.removeEventListener(window, 'hashchange.' + this.eventNamespace);
+
+        this.close();
+        if (this.isOpen) {
+            document.body.removeChild(this.domNodes.wrapper);
+            document.body.removeChild(this.domNodes.overlay);
+        }
+
+        this.elements = null;
+    }
+
+    refresh() {
+        if (!this.initialSelector) {
+            throw 'refreshing only works when you initialize using a selector!';
+        }
+
+        let options = this.options,
+            selector = this.initialSelector;
+
+        this.destroy();
+
+        this.constructor(selector, options);
+
+        return this;
+    }
+}
+export default SimpleLightbox;
+
+global.SimpleLightbox = SimpleLightbox;
\ No newline at end of file
diff --git a/photos/simplelightbox-master/dist/simple-lightbox.jquery.js b/photos/simplelightbox-master/dist/simple-lightbox.jquery.js
new file mode 100644
index 0000000000000000000000000000000000000000..74996cd28914620f0c99f207a31a25a8107a6606
--- /dev/null
+++ b/photos/simplelightbox-master/dist/simple-lightbox.jquery.js
@@ -0,0 +1,1662 @@
+/*!
+	By André Rinas, www.andrerinas.de
+	Documentation, www.simplelightbox.de
+	Available for use under the MIT License
+	Version 2.7.0
+*/
+(function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i<t.length;i++)o(t[i]);return o}return r})()({1:[function(require,module,exports){
+"use strict";
+
+require('./simple-lightbox');
+
+(function ($, window, document, undefined) {
+  'use strict';
+
+  $.fn.simpleLightbox = function (options) {
+    return this.length ? new SimpleLightbox(this.get(), options) : null;
+  };
+})(jQuery, window, document);
+
+},{"./simple-lightbox":2}],2:[function(require,module,exports){
+(function (global){(function (){
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports["default"] = void 0;
+
+function _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
+
+function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
+
+function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
+
+function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
+
+function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
+
+var SimpleLightbox = /*#__PURE__*/function () {
+  function SimpleLightbox(elements, options) {
+    var _this = this;
+
+    _classCallCheck(this, SimpleLightbox);
+
+    _defineProperty(this, "defaultOptions", {
+      sourceAttr: 'href',
+      overlay: true,
+      spinner: true,
+      nav: true,
+      navText: ['&lsaquo;', '&rsaquo;'],
+      captions: true,
+      captionDelay: 0,
+      captionSelector: 'img',
+      captionType: 'attr',
+      captionsData: 'title',
+      captionPosition: 'bottom',
+      captionClass: '',
+      close: true,
+      closeText: '&times;',
+      swipeClose: true,
+      showCounter: true,
+      fileExt: 'png|jpg|jpeg|gif|webp',
+      animationSlide: true,
+      animationSpeed: 250,
+      preloading: true,
+      enableKeyboard: true,
+      loop: true,
+      rel: false,
+      docClose: true,
+      swipeTolerance: 50,
+      className: 'simple-lightbox',
+      widthRatio: 0.8,
+      heightRatio: 0.9,
+      scaleImageToRatio: false,
+      disableRightClick: false,
+      disableScroll: true,
+      alertError: true,
+      alertErrorMessage: 'Image not found, next image will be loaded',
+      additionalHtml: false,
+      history: true,
+      throttleInterval: 0,
+      doubleTapZoom: 2,
+      maxZoom: 10,
+      htmlClass: 'has-lightbox',
+      rtl: false,
+      fixedClass: 'sl-fixed',
+      fadeSpeed: 300,
+      uniqueImages: true,
+      focus: true
+    });
+
+    _defineProperty(this, "transitionPrefix", void 0);
+
+    _defineProperty(this, "transitionCapable", false);
+
+    _defineProperty(this, "isTouchDevice", 'ontouchstart' in window);
+
+    _defineProperty(this, "initialLocationHash", void 0);
+
+    _defineProperty(this, "pushStateSupport", 'pushState' in history);
+
+    _defineProperty(this, "isOpen", false);
+
+    _defineProperty(this, "isAnimating", false);
+
+    _defineProperty(this, "isClosing", false);
+
+    _defineProperty(this, "isFadeIn", false);
+
+    _defineProperty(this, "urlChangedOnce", false);
+
+    _defineProperty(this, "hashReseted", false);
+
+    _defineProperty(this, "historyHasChanges", false);
+
+    _defineProperty(this, "historyUpdateTimeout", null);
+
+    _defineProperty(this, "currentImage", void 0);
+
+    _defineProperty(this, "eventNamespace", 'simplelightbox');
+
+    _defineProperty(this, "domNodes", {});
+
+    _defineProperty(this, "loadedImages", []);
+
+    _defineProperty(this, "initialImageIndex", 0);
+
+    _defineProperty(this, "currentImageIndex", 0);
+
+    _defineProperty(this, "initialSelector", null);
+
+    _defineProperty(this, "globalScrollbarWidth", 0);
+
+    _defineProperty(this, "controlCoordinates", {
+      swipeDiff: 0,
+      swipeYDiff: 0,
+      swipeStart: 0,
+      swipeEnd: 0,
+      swipeYStart: 0,
+      swipeYEnd: 0,
+      mousedown: false,
+      imageLeft: 0,
+      zoomed: false,
+      containerHeight: 0,
+      containerWidth: 0,
+      containerOffsetX: 0,
+      containerOffsetY: 0,
+      imgHeight: 0,
+      imgWidth: 0,
+      capture: false,
+      initialOffsetX: 0,
+      initialOffsetY: 0,
+      initialPointerOffsetX: 0,
+      initialPointerOffsetY: 0,
+      initialPointerOffsetX2: 0,
+      initialPointerOffsetY2: 0,
+      initialScale: 1,
+      initialPinchDistance: 0,
+      pointerOffsetX: 0,
+      pointerOffsetY: 0,
+      pointerOffsetX2: 0,
+      pointerOffsetY2: 0,
+      targetOffsetX: 0,
+      targetOffsetY: 0,
+      targetScale: 0,
+      pinchOffsetX: 0,
+      pinchOffsetY: 0,
+      limitOffsetX: 0,
+      limitOffsetY: 0,
+      scaleDifference: 0,
+      targetPinchDistance: 0,
+      touchCount: 0,
+      doubleTapped: false,
+      touchmoveCount: 0
+    });
+
+    this.options = Object.assign(this.defaultOptions, options);
+
+    if (typeof elements === 'string') {
+      this.initialSelector = elements;
+      this.elements = Array.from(document.querySelectorAll(elements));
+    } else {
+      this.elements = typeof elements.length !== 'undefined' && elements.length > 0 ? Array.from(elements) : [elements];
+    }
+
+    this.relatedElements = [];
+    this.transitionPrefix = this.calculateTransitionPrefix();
+    this.transitionCapable = this.transitionPrefix !== false;
+    this.initialLocationHash = this.hash; // this should be handled by attribute selector IMHO! => 'a[rel=bla]'...
+
+    if (this.options.rel) {
+      this.elements = this.getRelated(this.options.rel);
+    }
+
+    if (this.options.uniqueImages) {
+      var imgArr = [];
+      this.elements = Array.from(this.elements).filter(function (element) {
+        var src = element.getAttribute(_this.options.sourceAttr);
+
+        if (imgArr.indexOf(src) === -1) {
+          imgArr.push(src);
+          return true;
+        }
+
+        return false;
+      });
+    }
+
+    this.createDomNodes();
+
+    if (this.options.close) {
+      this.domNodes.wrapper.appendChild(this.domNodes.closeButton);
+    }
+
+    if (this.options.nav) {
+      this.domNodes.wrapper.appendChild(this.domNodes.navigation);
+    }
+
+    if (this.options.spinner) {
+      this.domNodes.wrapper.appendChild(this.domNodes.spinner);
+    }
+
+    this.addEventListener(this.elements, 'click.' + this.eventNamespace, function (event) {
+      if (_this.isValidLink(event.currentTarget)) {
+        event.preventDefault();
+
+        if (_this.isAnimating) {
+          return false;
+        }
+
+        _this.initialImageIndex = _this.elements.indexOf(event.currentTarget);
+
+        _this.openImage(event.currentTarget);
+      }
+    }); // close addEventListener click addEventListener doc
+
+    if (this.options.docClose) {
+      this.addEventListener(this.domNodes.wrapper, ['click.' + this.eventNamespace, 'touchstart.' + this.eventNamespace], function (event) {
+        if (_this.isOpen && event.target === event.currentTarget) {
+          _this.close();
+        }
+      });
+    } // disable rightclick
+
+
+    if (this.options.disableRightClick) {
+      this.addEventListener(document.body, 'contextmenu.' + this.eventNamespace, function (event) {
+        if (event.target.classList.contains('sl-overlay')) {
+          event.preventDefault();
+        }
+      });
+    } // keyboard-control
+
+
+    if (this.options.enableKeyboard) {
+      this.addEventListener(document.body, 'keyup.' + this.eventNamespace, this.throttle(function (event) {
+        _this.controlCoordinates.swipeDiff = 0; // keyboard control only if lightbox is open
+
+        if (_this.isAnimating && event.key === 'Escape') {
+          _this.currentImage.setAttribute('src', '');
+
+          _this.isAnimating = false;
+          return _this.close();
+        }
+
+        if (_this.isOpen) {
+          event.preventDefault();
+
+          if (event.key === 'Escape') {
+            _this.close();
+          }
+
+          if (!_this.isAnimating && ['ArrowLeft', 'ArrowRight'].indexOf(event.key) > -1) {
+            _this.loadImage(event.key === 'ArrowRight' ? 1 : -1);
+          }
+        }
+      }, this.options.throttleInterval));
+    }
+
+    this.addEvents();
+  }
+
+  _createClass(SimpleLightbox, [{
+    key: "createDomNodes",
+    value: function createDomNodes() {
+      this.domNodes.overlay = document.createElement('div');
+      this.domNodes.overlay.classList.add('sl-overlay');
+      this.domNodes.overlay.dataset.opacityTarget = ".7";
+      this.domNodes.closeButton = document.createElement('button');
+      this.domNodes.closeButton.classList.add('sl-close');
+      this.domNodes.closeButton.innerHTML = this.options.closeText;
+      this.domNodes.spinner = document.createElement('div');
+      this.domNodes.spinner.classList.add('sl-spinner');
+      this.domNodes.spinner.innerHTML = '<div></div>';
+      this.domNodes.navigation = document.createElement('div');
+      this.domNodes.navigation.classList.add('sl-navigation');
+      this.domNodes.navigation.innerHTML = "<button class=\"sl-prev\">".concat(this.options.navText[0], "</button><button class=\"sl-next\">").concat(this.options.navText[1], "</button>");
+      this.domNodes.counter = document.createElement('div');
+      this.domNodes.counter.classList.add('sl-counter');
+      this.domNodes.counter.innerHTML = '<span class="sl-current"></span>/<span class="sl-total"></span>';
+      this.domNodes.caption = document.createElement('div');
+      this.domNodes.caption.classList.add('sl-caption', 'pos-' + this.options.captionPosition);
+
+      if (this.options.captionClass) {
+        this.domNodes.caption.classList.add(this.options.captionClass);
+      }
+
+      this.domNodes.image = document.createElement('div');
+      this.domNodes.image.classList.add('sl-image');
+      this.domNodes.wrapper = document.createElement('div');
+      this.domNodes.wrapper.classList.add('sl-wrapper');
+      this.domNodes.wrapper.setAttribute('tabindex', -1);
+      this.domNodes.wrapper.setAttribute('role', 'dialog');
+      this.domNodes.wrapper.setAttribute('aria-hidden', false);
+
+      if (this.options.className) {
+        this.domNodes.wrapper.classList.add(this.options.className);
+      }
+
+      if (this.options.rtl) {
+        this.domNodes.wrapper.classList.add('sl-dir-rtl');
+      }
+    }
+  }, {
+    key: "throttle",
+    value: function throttle(func, limit) {
+      var inThrottle;
+      return function () {
+        if (!inThrottle) {
+          func.apply(this, arguments);
+          inThrottle = true;
+          setTimeout(function () {
+            return inThrottle = false;
+          }, limit);
+        }
+      };
+    }
+  }, {
+    key: "isValidLink",
+    value: function isValidLink(element) {
+      return !this.options.fileExt || 'pathname' in element && new RegExp('(' + this.options.fileExt + ')$', 'i').test(element.pathname);
+    }
+  }, {
+    key: "calculateTransitionPrefix",
+    value: function calculateTransitionPrefix() {
+      var s = (document.body || document.documentElement).style;
+      return 'transition' in s ? '' : 'WebkitTransition' in s ? '-webkit-' : 'MozTransition' in s ? '-moz-' : 'OTransition' in s ? '-o' : false;
+    }
+  }, {
+    key: "toggleScrollbar",
+    value: function toggleScrollbar(type) {
+      var scrollbarWidth = 0;
+      var fixedElements = [].slice.call(document.querySelectorAll('.' + this.options.fixedClass));
+
+      if (type === 'hide') {
+        var fullWindowWidth = window.innerWidth;
+
+        if (!fullWindowWidth) {
+          var documentElementRect = document.documentElement.getBoundingClientRect();
+          fullWindowWidth = documentElementRect.right - Math.abs(documentElementRect.left);
+        }
+
+        if (document.body.clientWidth < fullWindowWidth) {
+          var scrollDiv = document.createElement('div'),
+              paddingRight = parseInt(document.body.style.paddingRight || 0, 10);
+          scrollDiv.classList.add('sl-scrollbar-measure');
+          document.body.appendChild(scrollDiv);
+          scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth;
+          document.body.removeChild(scrollDiv);
+          document.body.dataset.originalPaddingRight = paddingRight;
+
+          if (scrollbarWidth > 0) {
+            document.body.classList.add('hidden-scroll');
+            document.body.style.paddingRight = paddingRight + scrollbarWidth + 'px';
+            fixedElements.forEach(function (element) {
+              var actualPadding = element.style.paddingRight;
+              var calculatedPadding = window.getComputedStyle(element)['padding-right'];
+              element.dataset.originalPaddingRight = actualPadding;
+              element.style.paddingRight = "".concat(parseFloat(calculatedPadding) + scrollbarWidth, "px");
+            });
+          }
+        }
+      } else {
+        document.body.classList.remove('hidden-scroll');
+        document.body.style.paddingRight = document.body.dataset.originalPaddingRight;
+        fixedElements.forEach(function (element) {
+          var padding = element.dataset.originalPaddingRight;
+
+          if (typeof padding !== 'undefined') {
+            element.style.paddingRight = padding;
+          }
+        });
+      }
+
+      return scrollbarWidth;
+    }
+  }, {
+    key: "close",
+    value: function close() {
+      var _this2 = this;
+
+      if (!this.isOpen || this.isAnimating || this.isClosing) {
+        return false;
+      }
+
+      this.isClosing = true;
+      var element = this.relatedElements[this.currentImageIndex];
+      element.dispatchEvent(new Event('close.simplelightbox'));
+
+      if (this.options.history) {
+        this.historyHasChanges = false;
+
+        if (!this.hashReseted) {
+          this.resetHash();
+        }
+      }
+
+      this.removeEventListener(document, 'focusin.' + this.eventNamespace);
+      this.fadeOut(document.querySelectorAll('.sl-image img, .sl-overlay, .sl-close, .sl-navigation, .sl-image .sl-caption, .sl-counter'), this.options.fadeSpeed, function () {
+        if (_this2.options.disableScroll) {
+          _this2.toggleScrollbar('show');
+        }
+
+        if (_this2.options.htmlClass && _this2.options.htmlClass !== '') {
+          document.querySelector('html').classList.remove(_this2.options.htmlClass);
+        }
+
+        document.body.removeChild(_this2.domNodes.wrapper);
+        document.body.removeChild(_this2.domNodes.overlay);
+        _this2.domNodes.additionalHtml = null;
+        element.dispatchEvent(new Event('closed.simplelightbox'));
+        _this2.isClosing = false;
+      });
+      this.currentImage = null;
+      this.isOpen = false;
+      this.isAnimating = false; // reset touchcontrol coordinates
+
+      for (var key in this.controlCoordinates) {
+        this.controlCoordinates[key] = 0;
+      }
+
+      this.controlCoordinates.mousedown = false;
+      this.controlCoordinates.zoomed = false;
+      this.controlCoordinates.capture = false;
+      this.controlCoordinates.initialScale = this.minMax(1, 1, this.options.maxZoom);
+      this.controlCoordinates.doubleTapped = false;
+    }
+  }, {
+    key: "preload",
+    value: function preload() {
+      var _this3 = this;
+
+      var index = this.currentImageIndex,
+          length = this.relatedElements.length,
+          next = index + 1 < 0 ? length - 1 : index + 1 >= length - 1 ? 0 : index + 1,
+          prev = index - 1 < 0 ? length - 1 : index - 1 >= length - 1 ? 0 : index - 1,
+          nextImage = new Image(),
+          prevImage = new Image();
+      nextImage.addEventListener('load', function (event) {
+        var src = event.target.getAttribute('src');
+
+        if (_this3.loadedImages.indexOf(src) === -1) {
+          //is this condition even required... setting multiple times will not change usage...
+          _this3.loadedImages.push(src);
+        }
+
+        _this3.relatedElements[index].dispatchEvent(new Event('nextImageLoaded.' + _this3.eventNamespace));
+      });
+      nextImage.setAttribute('src', this.relatedElements[next].getAttribute(this.options.sourceAttr));
+      prevImage.addEventListener('load', function (event) {
+        var src = event.target.getAttribute('src');
+
+        if (_this3.loadedImages.indexOf(src) === -1) {
+          _this3.loadedImages.push(src);
+        }
+
+        _this3.relatedElements[index].dispatchEvent(new Event('prevImageLoaded.' + _this3.eventNamespace));
+      });
+      prevImage.setAttribute('src', this.relatedElements[prev].getAttribute(this.options.sourceAttr));
+    }
+  }, {
+    key: "loadImage",
+    value: function loadImage(direction) {
+      var _this4 = this;
+
+      var slideDirection = direction;
+
+      if (this.options.rtl) {
+        direction = -direction;
+      }
+
+      this.relatedElements[this.currentImageIndex].dispatchEvent(new Event('change.' + this.eventNamespace));
+      this.relatedElements[this.currentImageIndex].dispatchEvent(new Event((direction === 1 ? 'next' : 'prev') + '.' + this.eventNamespace));
+      var newIndex = this.currentImageIndex + direction;
+
+      if (this.isAnimating || (newIndex < 0 || newIndex >= this.relatedElements.length) && this.options.loop === false) {
+        return false;
+      }
+
+      this.currentImageIndex = newIndex < 0 ? this.relatedElements.length - 1 : newIndex > this.relatedElements.length - 1 ? 0 : newIndex;
+      this.domNodes.counter.querySelector('.sl-current').innerHTML = this.currentImageIndex + 1;
+
+      if (this.options.animationSlide) {
+        this.slide(this.options.animationSpeed / 1000, -100 * slideDirection - this.controlCoordinates.swipeDiff + 'px');
+      }
+
+      this.fadeOut(this.domNodes.image, this.options.fadeSpeed, function () {
+        _this4.isAnimating = true;
+
+        if (!_this4.isClosing) {
+          setTimeout(function () {
+            var element = _this4.relatedElements[_this4.currentImageIndex];
+
+            _this4.currentImage.setAttribute('src', element.getAttribute(_this4.options.sourceAttr));
+
+            if (_this4.loadedImages.indexOf(element.getAttribute(_this4.options.sourceAttr)) === -1) {
+              _this4.show(_this4.domNodes.spinner);
+            }
+
+            if (_this4.domNodes.image.contains(_this4.domNodes.caption)) {
+              _this4.domNodes.image.removeChild(_this4.domNodes.caption);
+            }
+
+            _this4.adjustImage(slideDirection);
+
+            if (_this4.options.preloading) _this4.preload();
+          }, 100);
+        } else {
+          _this4.isAnimating = false;
+        }
+      });
+    }
+  }, {
+    key: "adjustImage",
+    value: function adjustImage(direction) {
+      var _this5 = this;
+
+      if (!this.currentImage) {
+        return false;
+      }
+
+      var tmpImage = new Image(),
+          windowWidth = window.innerWidth * this.options.widthRatio,
+          windowHeight = window.innerHeight * this.options.heightRatio;
+      tmpImage.setAttribute('src', this.currentImage.getAttribute('src'));
+      this.currentImage.dataset.scale = 1;
+      this.currentImage.dataset.translateX = 0;
+      this.currentImage.dataset.translateY = 0;
+      this.zoomPanElement(0, 0, 1);
+      tmpImage.addEventListener('error', function (event) {
+        _this5.relatedElements[_this5.currentImageIndex].dispatchEvent(new Event('error.' + _this5.eventNamespace));
+
+        _this5.isAnimating = false;
+        _this5.isOpen = false;
+        _this5.domNodes.spinner.style.display = 'none';
+        var dirIsDefined = direction === 1 || direction === -1;
+
+        if (_this5.initialImageIndex === _this5.currentImageIndex && dirIsDefined) {
+          return _this5.close();
+        }
+
+        if (_this5.options.alertError) {
+          alert(_this5.options.alertErrorMessage);
+        }
+
+        _this5.loadImage(dirIsDefined ? direction : 1);
+      });
+      tmpImage.addEventListener('load', function (event) {
+        if (typeof direction !== 'undefined') {
+          _this5.relatedElements[_this5.currentImageIndex].dispatchEvent(new Event('changed.' + _this5.eventNamespace));
+
+          _this5.relatedElements[_this5.currentImageIndex].dispatchEvent(new Event((direction === 1 ? 'nextDone' : 'prevDone') + '.' + _this5.eventNamespace));
+        } // history
+
+
+        if (_this5.options.history) {
+          _this5.updateURL();
+        }
+
+        if (_this5.loadedImages.indexOf(_this5.currentImage.getAttribute('src')) === -1) {
+          _this5.loadedImages.push(_this5.currentImage.getAttribute('src'));
+        }
+
+        var imageWidth = event.target.width,
+            imageHeight = event.target.height;
+
+        if (_this5.options.scaleImageToRatio || imageWidth > windowWidth || imageHeight > windowHeight) {
+          var ratio = imageWidth / imageHeight > windowWidth / windowHeight ? imageWidth / windowWidth : imageHeight / windowHeight;
+          imageWidth /= ratio;
+          imageHeight /= ratio;
+        }
+
+        _this5.domNodes.image.style.top = (window.innerHeight - imageHeight) / 2 + 'px';
+        _this5.domNodes.image.style.left = (window.innerWidth - imageWidth - _this5.globalScrollbarWidth) / 2 + 'px';
+        _this5.domNodes.image.style.width = imageWidth + 'px';
+        _this5.domNodes.image.style.height = imageHeight + 'px';
+        _this5.domNodes.spinner.style.display = 'none';
+
+        if (_this5.options.focus) {
+          _this5.forceFocus();
+        }
+
+        _this5.fadeIn(_this5.currentImage, _this5.options.fadeSpeed, function () {
+          if (_this5.options.focus) {
+            _this5.domNodes.wrapper.focus();
+          }
+        });
+
+        _this5.isOpen = true;
+        var captionContainer, captionText;
+
+        if (typeof _this5.options.captionSelector === 'string') {
+          captionContainer = _this5.options.captionSelector === 'self' ? _this5.relatedElements[_this5.currentImageIndex] : _this5.relatedElements[_this5.currentImageIndex].querySelector(_this5.options.captionSelector);
+        } else if (typeof _this5.options.captionSelector === 'function') {
+          captionContainer = _this5.options.captionSelector(_this5.relatedElements[_this5.currentImageIndex]);
+        }
+
+        if (_this5.options.captions && captionContainer) {
+          if (_this5.options.captionType === 'data') {
+            captionText = captionContainer.dataset[_this5.options.captionsData];
+          } else if (_this5.options.captionType === 'text') {
+            captionText = captionContainer.innerHTML;
+          } else {
+            captionText = captionContainer.getAttribute(_this5.options.captionsData);
+          }
+        }
+
+        if (!_this5.options.loop) {
+          if (_this5.currentImageIndex === 0) {
+            _this5.hide(_this5.domNodes.navigation.querySelector('.sl-prev'));
+          }
+
+          if (_this5.currentImageIndex >= _this5.relatedElements.length - 1) {
+            _this5.hide(_this5.domNodes.navigation.querySelector('.sl-next'));
+          }
+
+          if (_this5.currentImageIndex > 0) {
+            _this5.show(_this5.domNodes.navigation.querySelector('.sl-prev'));
+          }
+
+          if (_this5.currentImageIndex < _this5.relatedElements.length - 1) {
+            _this5.show(_this5.domNodes.navigation.querySelector('.sl-next'));
+          }
+        }
+
+        if (_this5.relatedElements.length === 1) {
+          _this5.hide(_this5.domNodes.navigation.querySelectorAll('.sl-prev, .sl-next'));
+        } else {
+          _this5.show(_this5.domNodes.navigation.querySelectorAll('.sl-prev, .sl-next'));
+        }
+
+        if (direction === 1 || direction === -1) {
+          if (_this5.options.animationSlide) {
+            _this5.slide(0, 100 * direction + 'px');
+
+            setTimeout(function () {
+              _this5.slide(_this5.options.animationSpeed / 1000, 0 + 'px');
+            }, 50);
+          }
+
+          _this5.fadeIn(_this5.domNodes.image, _this5.options.fadeSpeed, function () {
+            _this5.isAnimating = false;
+
+            _this5.setCaption(captionText, imageWidth);
+          });
+        } else {
+          _this5.isAnimating = false;
+
+          _this5.setCaption(captionText, imageWidth);
+        }
+
+        if (_this5.options.additionalHtml && !_this5.domNodes.additionalHtml) {
+          _this5.domNodes.additionalHtml = document.createElement('div');
+
+          _this5.domNodes.additionalHtml.classList.add('sl-additional-html');
+
+          _this5.domNodes.additionalHtml.innerHTML = _this5.options.additionalHtml;
+
+          _this5.domNodes.image.appendChild(_this5.domNodes.additionalHtml);
+        }
+      });
+    }
+  }, {
+    key: "zoomPanElement",
+    value: function zoomPanElement(targetOffsetX, targetOffsetY, targetScale) {
+      this.currentImage.style[this.transitionPrefix + 'transform'] = 'translate(' + targetOffsetX + ',' + targetOffsetY + ') scale(' + targetScale + ')';
+    }
+  }, {
+    key: "minMax",
+    value: function minMax(value, min, max) {
+      return value < min ? min : value > max ? max : value;
+    }
+  }, {
+    key: "setZoomData",
+    value: function setZoomData(initialScale, targetOffsetX, targetOffsetY) {
+      this.currentImage.dataset.scale = initialScale;
+      this.currentImage.dataset.translateX = targetOffsetX;
+      this.currentImage.dataset.translateY = targetOffsetY;
+    }
+  }, {
+    key: "hashchangeHandler",
+    value: function hashchangeHandler() {
+      if (this.isOpen && this.hash === this.initialLocationHash) {
+        this.hashReseted = true;
+        this.close();
+      }
+    }
+  }, {
+    key: "addEvents",
+    value: function addEvents() {
+      var _this6 = this;
+
+      // resize/responsive
+      this.addEventListener(window, 'resize.' + this.eventNamespace, function (event) {
+        //this.adjustImage.bind(this)
+        if (_this6.isOpen) {
+          _this6.adjustImage();
+        }
+      });
+      this.addEventListener(this.domNodes.closeButton, ['click.' + this.eventNamespace, 'touchstart.' + this.eventNamespace], this.close.bind(this));
+
+      if (this.options.history) {
+        setTimeout(function () {
+          _this6.addEventListener(window, 'hashchange.' + _this6.eventNamespace, function (event) {
+            if (_this6.isOpen) {
+              _this6.hashchangeHandler();
+            }
+          });
+        }, 40);
+      }
+
+      this.addEventListener(this.domNodes.navigation.getElementsByTagName('button'), 'click.' + this.eventNamespace, function (event) {
+        if (!event.currentTarget.tagName.match(/button/i)) {
+          return true;
+        }
+
+        event.preventDefault();
+        _this6.controlCoordinates.swipeDiff = 0;
+
+        _this6.loadImage(event.currentTarget.classList.contains('sl-next') ? 1 : -1);
+      });
+      this.addEventListener(this.domNodes.image, ['touchstart.' + this.eventNamespace, 'mousedown.' + this.eventNamespace], function (event) {
+        if (event.target.tagName === 'A' && event.type === 'touchstart') {
+          return true;
+        }
+
+        if (event.type === 'mousedown') {
+          _this6.controlCoordinates.initialPointerOffsetX = event.clientX;
+          _this6.controlCoordinates.initialPointerOffsetY = event.clientY;
+          _this6.controlCoordinates.containerHeight = _this6.getDimensions(_this6.domNodes.image).height;
+          _this6.controlCoordinates.containerWidth = _this6.getDimensions(_this6.domNodes.image).width;
+          _this6.controlCoordinates.imgHeight = _this6.getDimensions(_this6.currentImage).height;
+          _this6.controlCoordinates.imgWidth = _this6.getDimensions(_this6.currentImage).width;
+          _this6.controlCoordinates.containerOffsetX = _this6.domNodes.image.offsetLeft;
+          _this6.controlCoordinates.containerOffsetY = _this6.domNodes.image.offsetTop;
+          _this6.controlCoordinates.initialOffsetX = parseFloat(_this6.currentImage.dataset.translateX);
+          _this6.controlCoordinates.initialOffsetY = parseFloat(_this6.currentImage.dataset.translateY);
+          _this6.controlCoordinates.capture = true;
+        } else {
+          _this6.controlCoordinates.touchCount = event.touches.length;
+          _this6.controlCoordinates.initialPointerOffsetX = event.touches[0].clientX;
+          _this6.controlCoordinates.initialPointerOffsetY = event.touches[0].clientY;
+          _this6.controlCoordinates.containerHeight = _this6.getDimensions(_this6.domNodes.image).height;
+          _this6.controlCoordinates.containerWidth = _this6.getDimensions(_this6.domNodes.image).width;
+          _this6.controlCoordinates.imgHeight = _this6.getDimensions(_this6.currentImage).height;
+          _this6.controlCoordinates.imgWidth = _this6.getDimensions(_this6.currentImage).width;
+          _this6.controlCoordinates.containerOffsetX = _this6.domNodes.image.offsetLeft;
+          _this6.controlCoordinates.containerOffsetY = _this6.domNodes.image.offsetTop;
+
+          if (_this6.controlCoordinates.touchCount === 1)
+            /* Single touch */
+            {
+              if (!_this6.controlCoordinates.doubleTapped) {
+                _this6.controlCoordinates.doubleTapped = true;
+                setTimeout(function () {
+                  _this6.controlCoordinates.doubleTapped = false;
+                }, 300);
+              } else {
+                _this6.currentImage.classList.add('sl-transition');
+
+                if (!_this6.controlCoordinates.zoomed) {
+                  _this6.controlCoordinates.initialScale = _this6.options.doubleTapZoom;
+
+                  _this6.setZoomData(_this6.controlCoordinates.initialScale, 0, 0);
+
+                  _this6.zoomPanElement(0 + "px", 0 + "px", _this6.controlCoordinates.initialScale);
+
+                  if (!_this6.domNodes.caption.style.opacity && _this6.domNodes.caption.style.display !== 'none') {
+                    _this6.fadeOut(_this6.domNodes.caption, _this6.options.fadeSpeed);
+                  }
+
+                  _this6.controlCoordinates.zoomed = true;
+                } else {
+                  _this6.controlCoordinates.initialScale = 1;
+
+                  _this6.setZoomData(_this6.controlCoordinates.initialScale, 0, 0);
+
+                  _this6.zoomPanElement(0 + "px", 0 + "px", _this6.controlCoordinates.initialScale);
+
+                  _this6.controlCoordinates.zoomed = false;
+                }
+
+                setTimeout(function () {
+                  if (_this6.currentImage) {
+                    _this6.currentImage.classList.remove('sl-transition');
+                  }
+                }, 200);
+                return false;
+              }
+
+              _this6.controlCoordinates.initialOffsetX = parseFloat(_this6.currentImage.dataset.translateX);
+              _this6.controlCoordinates.initialOffsetY = parseFloat(_this6.currentImage.dataset.translateY);
+            } else if (_this6.controlCoordinates.touchCount === 2)
+            /* Pinch */
+            {
+              _this6.controlCoordinates.initialPointerOffsetX2 = event.touches[1].clientX;
+              _this6.controlCoordinates.initialPointerOffsetY2 = event.touches[1].clientY;
+              _this6.controlCoordinates.initialOffsetX = parseFloat(_this6.currentImage.dataset.translateX);
+              _this6.controlCoordinates.initialOffsetY = parseFloat(_this6.currentImage.dataset.translateY);
+              _this6.controlCoordinates.pinchOffsetX = (_this6.controlCoordinates.initialPointerOffsetX + _this6.controlCoordinates.initialPointerOffsetX2) / 2;
+              _this6.controlCoordinates.pinchOffsetY = (_this6.controlCoordinates.initialPointerOffsetY + _this6.controlCoordinates.initialPointerOffsetY2) / 2;
+              _this6.controlCoordinates.initialPinchDistance = Math.sqrt((_this6.controlCoordinates.initialPointerOffsetX - _this6.controlCoordinates.initialPointerOffsetX2) * (_this6.controlCoordinates.initialPointerOffsetX - _this6.controlCoordinates.initialPointerOffsetX2) + (_this6.controlCoordinates.initialPointerOffsetY - _this6.controlCoordinates.initialPointerOffsetY2) * (_this6.controlCoordinates.initialPointerOffsetY - _this6.controlCoordinates.initialPointerOffsetY2));
+            }
+
+          _this6.controlCoordinates.capture = true;
+        }
+
+        if (_this6.controlCoordinates.mousedown) return true;
+
+        if (_this6.transitionCapable) {
+          _this6.controlCoordinates.imageLeft = parseInt(_this6.domNodes.image.style.left, 10);
+        }
+
+        _this6.controlCoordinates.mousedown = true;
+        _this6.controlCoordinates.swipeDiff = 0;
+        _this6.controlCoordinates.swipeYDiff = 0;
+        _this6.controlCoordinates.swipeStart = event.pageX || event.touches[0].pageX;
+        _this6.controlCoordinates.swipeYStart = event.pageY || event.touches[0].pageY;
+        return false;
+      });
+      this.addEventListener(this.domNodes.image, ['touchmove.' + this.eventNamespace, 'mousemove.' + this.eventNamespace, 'MSPointerMove'], function (event) {
+        if (!_this6.controlCoordinates.mousedown) {
+          return true;
+        }
+
+        event.preventDefault();
+
+        if (event.type === 'touchmove') {
+          if (_this6.controlCoordinates.capture === false) {
+            return false;
+          }
+
+          _this6.controlCoordinates.pointerOffsetX = event.touches[0].clientX;
+          _this6.controlCoordinates.pointerOffsetY = event.touches[0].clientY;
+          _this6.controlCoordinates.touchCount = event.touches.length;
+          _this6.controlCoordinates.touchmoveCount++;
+
+          if (_this6.controlCoordinates.touchCount > 1)
+            /* Pinch */
+            {
+              _this6.controlCoordinates.pointerOffsetX2 = event.touches[1].clientX;
+              _this6.controlCoordinates.pointerOffsetY2 = event.touches[1].clientY;
+              _this6.controlCoordinates.targetPinchDistance = Math.sqrt((_this6.controlCoordinates.pointerOffsetX - _this6.controlCoordinates.pointerOffsetX2) * (_this6.controlCoordinates.pointerOffsetX - _this6.controlCoordinates.pointerOffsetX2) + (_this6.controlCoordinates.pointerOffsetY - _this6.controlCoordinates.pointerOffsetY2) * (_this6.controlCoordinates.pointerOffsetY - _this6.controlCoordinates.pointerOffsetY2));
+
+              if (_this6.controlCoordinates.initialPinchDistance === null) {
+                _this6.controlCoordinates.initialPinchDistance = _this6.controlCoordinates.targetPinchDistance;
+              }
+
+              if (Math.abs(_this6.controlCoordinates.initialPinchDistance - _this6.controlCoordinates.targetPinchDistance) >= 1) {
+                /* Initialize helpers */
+                _this6.controlCoordinates.targetScale = _this6.minMax(_this6.controlCoordinates.targetPinchDistance / _this6.controlCoordinates.initialPinchDistance * _this6.controlCoordinates.initialScale, 1, _this6.options.maxZoom);
+                _this6.controlCoordinates.limitOffsetX = (_this6.controlCoordinates.imgWidth * _this6.controlCoordinates.targetScale - _this6.controlCoordinates.containerWidth) / 2;
+                _this6.controlCoordinates.limitOffsetY = (_this6.controlCoordinates.imgHeight * _this6.controlCoordinates.targetScale - _this6.controlCoordinates.containerHeight) / 2;
+                _this6.controlCoordinates.scaleDifference = _this6.controlCoordinates.targetScale - _this6.controlCoordinates.initialScale;
+                _this6.controlCoordinates.targetOffsetX = _this6.controlCoordinates.imgWidth * _this6.controlCoordinates.targetScale <= _this6.controlCoordinates.containerWidth ? 0 : _this6.minMax(_this6.controlCoordinates.initialOffsetX - (_this6.controlCoordinates.pinchOffsetX - _this6.controlCoordinates.containerOffsetX - _this6.controlCoordinates.containerWidth / 2 - _this6.controlCoordinates.initialOffsetX) / (_this6.controlCoordinates.targetScale - _this6.controlCoordinates.scaleDifference) * _this6.controlCoordinates.scaleDifference, _this6.controlCoordinates.limitOffsetX * -1, _this6.controlCoordinates.limitOffsetX);
+                _this6.controlCoordinates.targetOffsetY = _this6.controlCoordinates.imgHeight * _this6.controlCoordinates.targetScale <= _this6.controlCoordinates.containerHeight ? 0 : _this6.minMax(_this6.controlCoordinates.initialOffsetY - (_this6.controlCoordinates.pinchOffsetY - _this6.controlCoordinates.containerOffsetY - _this6.controlCoordinates.containerHeight / 2 - _this6.controlCoordinates.initialOffsetY) / (_this6.controlCoordinates.targetScale - _this6.controlCoordinates.scaleDifference) * _this6.controlCoordinates.scaleDifference, _this6.controlCoordinates.limitOffsetY * -1, _this6.controlCoordinates.limitOffsetY);
+
+                _this6.zoomPanElement(_this6.controlCoordinates.targetOffsetX + "px", _this6.controlCoordinates.targetOffsetY + "px", _this6.controlCoordinates.targetScale);
+
+                if (_this6.controlCoordinates.targetScale > 1) {
+                  _this6.controlCoordinates.zoomed = true;
+
+                  if (!_this6.domNodes.caption.style.opacity && _this6.domNodes.caption.style.display !== 'none') {
+                    _this6.fadeOut(_this6.domNodes.caption, _this6.options.fadeSpeed);
+                  }
+                }
+
+                _this6.controlCoordinates.initialPinchDistance = _this6.controlCoordinates.targetPinchDistance;
+                _this6.controlCoordinates.initialScale = _this6.controlCoordinates.targetScale;
+                _this6.controlCoordinates.initialOffsetX = _this6.controlCoordinates.targetOffsetX;
+                _this6.controlCoordinates.initialOffsetY = _this6.controlCoordinates.targetOffsetY;
+              }
+            } else {
+            _this6.controlCoordinates.targetScale = _this6.controlCoordinates.initialScale;
+            _this6.controlCoordinates.limitOffsetX = (_this6.controlCoordinates.imgWidth * _this6.controlCoordinates.targetScale - _this6.controlCoordinates.containerWidth) / 2;
+            _this6.controlCoordinates.limitOffsetY = (_this6.controlCoordinates.imgHeight * _this6.controlCoordinates.targetScale - _this6.controlCoordinates.containerHeight) / 2;
+            _this6.controlCoordinates.targetOffsetX = _this6.controlCoordinates.imgWidth * _this6.controlCoordinates.targetScale <= _this6.controlCoordinates.containerWidth ? 0 : _this6.minMax(_this6.controlCoordinates.pointerOffsetX - (_this6.controlCoordinates.initialPointerOffsetX - _this6.controlCoordinates.initialOffsetX), _this6.controlCoordinates.limitOffsetX * -1, _this6.controlCoordinates.limitOffsetX);
+            _this6.controlCoordinates.targetOffsetY = _this6.controlCoordinates.imgHeight * _this6.controlCoordinates.targetScale <= _this6.controlCoordinates.containerHeight ? 0 : _this6.minMax(_this6.controlCoordinates.pointerOffsetY - (_this6.controlCoordinates.initialPointerOffsetY - _this6.controlCoordinates.initialOffsetY), _this6.controlCoordinates.limitOffsetY * -1, _this6.controlCoordinates.limitOffsetY);
+
+            if (Math.abs(_this6.controlCoordinates.targetOffsetX) === Math.abs(_this6.controlCoordinates.limitOffsetX)) {
+              _this6.controlCoordinates.initialOffsetX = _this6.controlCoordinates.targetOffsetX;
+              _this6.controlCoordinates.initialPointerOffsetX = _this6.controlCoordinates.pointerOffsetX;
+            }
+
+            if (Math.abs(_this6.controlCoordinates.targetOffsetY) === Math.abs(_this6.controlCoordinates.limitOffsetY)) {
+              _this6.controlCoordinates.initialOffsetY = _this6.controlCoordinates.targetOffsetY;
+              _this6.controlCoordinates.initialPointerOffsetY = _this6.controlCoordinates.pointerOffsetY;
+            }
+
+            _this6.setZoomData(_this6.controlCoordinates.initialScale, _this6.controlCoordinates.targetOffsetX, _this6.controlCoordinates.targetOffsetY);
+
+            _this6.zoomPanElement(_this6.controlCoordinates.targetOffsetX + "px", _this6.controlCoordinates.targetOffsetY + "px", _this6.controlCoordinates.targetScale);
+          }
+        }
+        /* Mouse Move implementation */
+
+
+        if (event.type === 'mousemove' && _this6.controlCoordinates.mousedown) {
+          if (event.type == 'touchmove') return true;
+          if (_this6.controlCoordinates.capture === false) return false;
+          _this6.controlCoordinates.pointerOffsetX = event.clientX;
+          _this6.controlCoordinates.pointerOffsetY = event.clientY;
+          _this6.controlCoordinates.targetScale = _this6.controlCoordinates.initialScale;
+          _this6.controlCoordinates.limitOffsetX = (_this6.controlCoordinates.imgWidth * _this6.controlCoordinates.targetScale - _this6.controlCoordinates.containerWidth) / 2;
+          _this6.controlCoordinates.limitOffsetY = (_this6.controlCoordinates.imgHeight * _this6.controlCoordinates.targetScale - _this6.controlCoordinates.containerHeight) / 2;
+          _this6.controlCoordinates.targetOffsetX = _this6.controlCoordinates.imgWidth * _this6.controlCoordinates.targetScale <= _this6.controlCoordinates.containerWidth ? 0 : _this6.minMax(_this6.controlCoordinates.pointerOffsetX - (_this6.controlCoordinates.initialPointerOffsetX - _this6.controlCoordinates.initialOffsetX), _this6.controlCoordinates.limitOffsetX * -1, _this6.controlCoordinates.limitOffsetX);
+          _this6.controlCoordinates.targetOffsetY = _this6.controlCoordinates.imgHeight * _this6.controlCoordinates.targetScale <= _this6.controlCoordinates.containerHeight ? 0 : _this6.minMax(_this6.controlCoordinates.pointerOffsetY - (_this6.controlCoordinates.initialPointerOffsetY - _this6.controlCoordinates.initialOffsetY), _this6.controlCoordinates.limitOffsetY * -1, _this6.controlCoordinates.limitOffsetY);
+
+          if (Math.abs(_this6.controlCoordinates.targetOffsetX) === Math.abs(_this6.controlCoordinates.limitOffsetX)) {
+            _this6.controlCoordinates.initialOffsetX = _this6.controlCoordinates.targetOffsetX;
+            _this6.controlCoordinates.initialPointerOffsetX = _this6.controlCoordinates.pointerOffsetX;
+          }
+
+          if (Math.abs(_this6.controlCoordinates.targetOffsetY) === Math.abs(_this6.controlCoordinates.limitOffsetY)) {
+            _this6.controlCoordinates.initialOffsetY = _this6.controlCoordinates.targetOffsetY;
+            _this6.controlCoordinates.initialPointerOffsetY = _this6.controlCoordinates.pointerOffsetY;
+          }
+
+          _this6.setZoomData(_this6.controlCoordinates.initialScale, _this6.controlCoordinates.targetOffsetX, _this6.controlCoordinates.targetOffsetY);
+
+          _this6.zoomPanElement(_this6.controlCoordinates.targetOffsetX + "px", _this6.controlCoordinates.targetOffsetY + "px", _this6.controlCoordinates.targetScale);
+        }
+
+        if (!_this6.controlCoordinates.zoomed) {
+          _this6.controlCoordinates.swipeEnd = event.pageX || event.touches[0].pageX;
+          _this6.controlCoordinates.swipeYEnd = event.pageY || event.touches[0].pageY;
+          _this6.controlCoordinates.swipeDiff = _this6.controlCoordinates.swipeStart - _this6.controlCoordinates.swipeEnd;
+          _this6.controlCoordinates.swipeYDiff = _this6.controlCoordinates.swipeYStart - _this6.controlCoordinates.swipeYEnd;
+
+          if (_this6.options.animationSlide) {
+            _this6.slide(0, -_this6.controlCoordinates.swipeDiff + 'px');
+          }
+        }
+      });
+      this.addEventListener(this.domNodes.image, ['touchend.' + this.eventNamespace, 'mouseup.' + this.eventNamespace, 'touchcancel.' + this.eventNamespace, 'mouseleave.' + this.eventNamespace, 'pointerup', 'pointercancel', 'MSPointerUp', 'MSPointerCancel'], function (event) {
+        if (_this6.isTouchDevice && event.type === 'touchend') {
+          _this6.controlCoordinates.touchCount = event.touches.length;
+
+          if (_this6.controlCoordinates.touchCount === 0)
+            /* No touch */
+            {
+              /* Set attributes */
+              if (_this6.currentImage) {
+                _this6.setZoomData(_this6.controlCoordinates.initialScale, _this6.controlCoordinates.targetOffsetX, _this6.controlCoordinates.targetOffsetY);
+              }
+
+              if (_this6.controlCoordinates.initialScale === 1) {
+                _this6.controlCoordinates.zoomed = false;
+
+                if (_this6.domNodes.caption.style.display === 'none') {
+                  _this6.fadeIn(_this6.domNodes.caption, _this6.options.fadeSpeed);
+                }
+              }
+
+              _this6.controlCoordinates.initialPinchDistance = null;
+              _this6.controlCoordinates.capture = false;
+            } else if (_this6.controlCoordinates.touchCount === 1)
+            /* Single touch */
+            {
+              _this6.controlCoordinates.initialPointerOffsetX = event.touches[0].clientX;
+              _this6.controlCoordinates.initialPointerOffsetY = event.touches[0].clientY;
+            } else if (_this6.controlCoordinates.touchCount > 1)
+            /* Pinch */
+            {
+              _this6.controlCoordinates.initialPinchDistance = null;
+            }
+        }
+
+        if (_this6.controlCoordinates.mousedown) {
+          _this6.controlCoordinates.mousedown = false;
+          var possibleDir = true;
+
+          if (!_this6.options.loop) {
+            if (_this6.currentImageIndex === 0 && _this6.controlCoordinates.swipeDiff < 0) {
+              possibleDir = false;
+            }
+
+            if (_this6.currentImageIndex >= _this6.relatedElements.length - 1 && _this6.controlCoordinates.swipeDiff > 0) {
+              possibleDir = false;
+            }
+          }
+
+          if (Math.abs(_this6.controlCoordinates.swipeDiff) > _this6.options.swipeTolerance && possibleDir) {
+            _this6.loadImage(_this6.controlCoordinates.swipeDiff > 0 ? 1 : -1);
+          } else if (_this6.options.animationSlide) {
+            _this6.slide(_this6.options.animationSpeed / 1000, 0 + 'px');
+          }
+
+          if (_this6.options.swipeClose && Math.abs(_this6.controlCoordinates.swipeYDiff) > 50 && Math.abs(_this6.controlCoordinates.swipeDiff) < _this6.options.swipeTolerance) {
+            _this6.close();
+          }
+        }
+      });
+      this.addEventListener(this.domNodes.image, ['dblclick'], function (event) {
+        if (_this6.isTouchDevice) return;
+        _this6.controlCoordinates.initialPointerOffsetX = event.clientX;
+        _this6.controlCoordinates.initialPointerOffsetY = event.clientY;
+        _this6.controlCoordinates.containerHeight = _this6.getDimensions(_this6.domNodes.image).height;
+        _this6.controlCoordinates.containerWidth = _this6.getDimensions(_this6.domNodes.image).width;
+        _this6.controlCoordinates.imgHeight = _this6.getDimensions(_this6.currentImage).height;
+        _this6.controlCoordinates.imgWidth = _this6.getDimensions(_this6.currentImage).width;
+        _this6.controlCoordinates.containerOffsetX = _this6.domNodes.image.offsetLeft;
+        _this6.controlCoordinates.containerOffsetY = _this6.domNodes.image.offsetTop;
+
+        _this6.currentImage.classList.add('sl-transition');
+
+        if (!_this6.controlCoordinates.zoomed) {
+          _this6.controlCoordinates.initialScale = _this6.options.doubleTapZoom;
+
+          _this6.setZoomData(_this6.controlCoordinates.initialScale, 0, 0);
+
+          _this6.zoomPanElement(0 + "px", 0 + "px", _this6.controlCoordinates.initialScale);
+
+          if (!_this6.domNodes.caption.style.opacity && _this6.domNodes.caption.style.display !== 'none') {
+            _this6.fadeOut(_this6.domNodes.caption, _this6.options.fadeSpeed);
+          }
+
+          _this6.controlCoordinates.zoomed = true;
+        } else {
+          _this6.controlCoordinates.initialScale = 1;
+
+          _this6.setZoomData(_this6.controlCoordinates.initialScale, 0, 0);
+
+          _this6.zoomPanElement(0 + "px", 0 + "px", _this6.controlCoordinates.initialScale);
+
+          _this6.controlCoordinates.zoomed = false;
+
+          if (_this6.domNodes.caption.style.display === 'none') {
+            _this6.fadeIn(_this6.domNodes.caption, _this6.options.fadeSpeed);
+          }
+        }
+
+        setTimeout(function () {
+          if (_this6.currentImage) {
+            _this6.currentImage.classList.remove('sl-transition');
+          }
+        }, 200);
+        _this6.controlCoordinates.capture = true;
+        return false;
+      });
+    }
+  }, {
+    key: "getDimensions",
+    value: function getDimensions(element) {
+      var styles = window.getComputedStyle(element),
+          height = element.offsetHeight,
+          width = element.offsetWidth,
+          borderTopWidth = parseFloat(styles.borderTopWidth),
+          borderBottomWidth = parseFloat(styles.borderBottomWidth),
+          paddingTop = parseFloat(styles.paddingTop),
+          paddingBottom = parseFloat(styles.paddingBottom),
+          borderLeftWidth = parseFloat(styles.borderLeftWidth),
+          borderRightWidth = parseFloat(styles.borderRightWidth),
+          paddingLeft = parseFloat(styles.paddingLeft),
+          paddingRight = parseFloat(styles.paddingRight);
+      return {
+        height: height - borderBottomWidth - borderTopWidth - paddingTop - paddingBottom,
+        width: width - borderLeftWidth - borderRightWidth - paddingLeft - paddingRight
+      };
+    }
+  }, {
+    key: "updateHash",
+    value: function updateHash() {
+      var newHash = 'pid=' + (this.currentImageIndex + 1),
+          newURL = window.location.href.split('#')[0] + '#' + newHash;
+      this.hashReseted = false;
+
+      if (this.pushStateSupport) {
+        window.history[this.historyHasChanges ? 'replaceState' : 'pushState']('', document.title, newURL);
+      } else {
+        // what is the browser target of this?
+        if (this.historyHasChanges) {
+          window.location.replace(newURL);
+        } else {
+          window.location.hash = newHash;
+        }
+      }
+
+      if (!this.historyHasChanges) {
+        this.urlChangedOnce = true;
+      }
+
+      this.historyHasChanges = true;
+    }
+  }, {
+    key: "resetHash",
+    value: function resetHash() {
+      this.hashReseted = true;
+
+      if (this.urlChangedOnce) {
+        history.back();
+      } else {
+        if (this.pushStateSupport) {
+          history.pushState('', document.title, window.location.pathname + window.location.search);
+        } else {
+          window.location.hash = '';
+        }
+      } //
+      //in case an history operation is still pending
+
+
+      clearTimeout(this.historyUpdateTimeout);
+    }
+  }, {
+    key: "updateURL",
+    value: function updateURL() {
+      clearTimeout(this.historyUpdateTimeout);
+
+      if (!this.historyHasChanges) {
+        this.updateHash(); // first time
+      } else {
+        this.historyUpdateTimeout = setTimeout(this.updateHash.bind(this), 800);
+      }
+    }
+  }, {
+    key: "setCaption",
+    value: function setCaption(captionText, imageWidth) {
+      var _this7 = this;
+
+      if (this.options.captions && captionText && captionText !== '' && typeof captionText !== "undefined") {
+        this.hide(this.domNodes.caption);
+        this.domNodes.caption.style.width = imageWidth + 'px';
+        this.domNodes.caption.innerHTML = captionText;
+        this.domNodes.image.appendChild(this.domNodes.caption);
+        setTimeout(function () {
+          _this7.fadeIn(_this7.domNodes.caption, _this7.options.fadeSpeed);
+        }, this.options.captionDelay);
+      }
+    }
+  }, {
+    key: "slide",
+    value: function slide(speed, pos) {
+      if (!this.transitionCapable) {
+        return this.domNodes.image.style.left = pos;
+      }
+
+      this.domNodes.image.style[this.transitionPrefix + 'transform'] = 'translateX(' + pos + ')';
+      this.domNodes.image.style[this.transitionPrefix + 'transition'] = this.transitionPrefix + 'transform ' + speed + 's linear';
+    }
+  }, {
+    key: "getRelated",
+    value: function getRelated(rel) {
+      var elems;
+
+      if (rel && rel !== false && rel !== 'nofollow') {
+        elems = Array.from(this.elements).filter(function (element) {
+          return element.getAttribute('rel') === rel;
+        });
+      } else {
+        elems = this.elements;
+      }
+
+      return elems;
+    }
+  }, {
+    key: "openImage",
+    value: function openImage(element) {
+      var _this8 = this;
+
+      element.dispatchEvent(new Event('show.' + this.eventNamespace));
+
+      if (this.options.disableScroll) {
+        this.globalScrollbarWidth = this.toggleScrollbar('hide');
+      }
+
+      if (this.options.htmlClass && this.options.htmlClass !== '') {
+        document.querySelector('html').classList.add(this.options.htmlClass);
+      }
+
+      document.body.appendChild(this.domNodes.wrapper);
+      this.domNodes.wrapper.appendChild(this.domNodes.image);
+
+      if (this.options.overlay) {
+        document.body.appendChild(this.domNodes.overlay);
+      }
+
+      this.relatedElements = this.getRelated(element.rel);
+
+      if (this.options.showCounter) {
+        if (this.relatedElements.length == 1 && this.domNodes.wrapper.contains(this.domNodes.counter)) {
+          this.domNodes.wrapper.removeChild(this.domNodes.counter);
+        } else if (this.relatedElements.length > 1 && !this.domNodes.wrapper.contains(this.domNodes.counter)) {
+          this.domNodes.wrapper.appendChild(this.domNodes.counter);
+        }
+      }
+
+      this.isAnimating = true;
+      this.currentImageIndex = this.relatedElements.indexOf(element);
+      var targetURL = element.getAttribute(this.options.sourceAttr);
+      this.currentImage = document.createElement('img');
+      this.currentImage.style.display = 'none';
+      this.currentImage.setAttribute('src', targetURL);
+      this.currentImage.dataset.scale = 1;
+      this.currentImage.dataset.translateX = 0;
+      this.currentImage.dataset.translateY = 0;
+
+      if (this.loadedImages.indexOf(targetURL) === -1) {
+        this.loadedImages.push(targetURL);
+      }
+
+      this.domNodes.image.innerHTML = '';
+      this.domNodes.image.setAttribute('style', '');
+      this.domNodes.image.appendChild(this.currentImage);
+      this.fadeIn(this.domNodes.overlay, this.options.fadeSpeed);
+      this.fadeIn([this.domNodes.counter, this.domNodes.navigation, this.domNodes.closeButton], this.options.fadeSpeed);
+      this.show(this.domNodes.spinner);
+      this.domNodes.counter.querySelector('.sl-current').innerHTML = this.currentImageIndex + 1;
+      this.domNodes.counter.querySelector('.sl-total').innerHTML = this.relatedElements.length;
+      this.adjustImage();
+
+      if (this.options.preloading) {
+        this.preload();
+      }
+
+      setTimeout(function () {
+        element.dispatchEvent(new Event('shown.' + _this8.eventNamespace));
+      }, this.options.animationSpeed);
+    }
+  }, {
+    key: "forceFocus",
+    value: function forceFocus() {
+      var _this9 = this;
+
+      this.removeEventListener(document, 'focusin.' + this.eventNamespace);
+      this.addEventListener(document, 'focusin.' + this.eventNamespace, function (event) {
+        if (document !== event.target && _this9.domNodes.wrapper !== event.target && !_this9.domNodes.wrapper.contains(event.target)) {
+          _this9.domNodes.wrapper.focus();
+        }
+      });
+    } // utility
+
+  }, {
+    key: "addEventListener",
+    value: function addEventListener(elements, events, callback, opts) {
+      elements = this.wrap(elements);
+      events = this.wrap(events);
+
+      var _iterator = _createForOfIteratorHelper(elements),
+          _step;
+
+      try {
+        for (_iterator.s(); !(_step = _iterator.n()).done;) {
+          var element = _step.value;
+
+          if (!element.namespaces) {
+            element.namespaces = {};
+          } // save the namespaces addEventListener the DOM element itself
+
+
+          var _iterator2 = _createForOfIteratorHelper(events),
+              _step2;
+
+          try {
+            for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
+              var event = _step2.value;
+              var options = opts || false;
+              element.namespaces[event] = callback;
+              element.addEventListener(event.split('.')[0], callback, options);
+            }
+          } catch (err) {
+            _iterator2.e(err);
+          } finally {
+            _iterator2.f();
+          }
+        }
+      } catch (err) {
+        _iterator.e(err);
+      } finally {
+        _iterator.f();
+      }
+    }
+  }, {
+    key: "removeEventListener",
+    value: function removeEventListener(elements, events) {
+      elements = this.wrap(elements);
+      events = this.wrap(events);
+
+      var _iterator3 = _createForOfIteratorHelper(elements),
+          _step3;
+
+      try {
+        for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
+          var element = _step3.value;
+
+          var _iterator4 = _createForOfIteratorHelper(events),
+              _step4;
+
+          try {
+            for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
+              var event = _step4.value;
+
+              if (element.namespaces && element.namespaces[event]) {
+                element.removeEventListener(event.split('.')[0], element.namespaces[event]);
+                delete element.namespaces[event];
+              }
+            }
+          } catch (err) {
+            _iterator4.e(err);
+          } finally {
+            _iterator4.f();
+          }
+        }
+      } catch (err) {
+        _iterator3.e(err);
+      } finally {
+        _iterator3.f();
+      }
+    }
+  }, {
+    key: "fadeOut",
+    value: function fadeOut(elements, duration, callback) {
+      var _this10 = this;
+
+      elements = this.wrap(elements);
+
+      var _iterator5 = _createForOfIteratorHelper(elements),
+          _step5;
+
+      try {
+        for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {
+          var element = _step5.value;
+          element.style.opacity = 1;
+        }
+      } catch (err) {
+        _iterator5.e(err);
+      } finally {
+        _iterator5.f();
+      }
+
+      this.isFadeIn = false;
+
+      var step = 16.66666 / (duration || this.options.fadeSpeed),
+          fade = function fade() {
+        var currentOpacity = parseFloat(elements[0].style.opacity);
+
+        if ((currentOpacity -= step) < 0) {
+          var _iterator6 = _createForOfIteratorHelper(elements),
+              _step6;
+
+          try {
+            for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {
+              var element = _step6.value;
+              element.style.display = "none";
+              element.style.opacity = '';
+            }
+          } catch (err) {
+            _iterator6.e(err);
+          } finally {
+            _iterator6.f();
+          }
+
+          callback && callback.call(_this10, elements);
+        } else {
+          var _iterator7 = _createForOfIteratorHelper(elements),
+              _step7;
+
+          try {
+            for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) {
+              var _element = _step7.value;
+              _element.style.opacity = currentOpacity;
+            }
+          } catch (err) {
+            _iterator7.e(err);
+          } finally {
+            _iterator7.f();
+          }
+
+          requestAnimationFrame(fade);
+        }
+      };
+
+      fade();
+    }
+  }, {
+    key: "fadeIn",
+    value: function fadeIn(elements, duration, callback, display) {
+      var _this11 = this;
+
+      elements = this.wrap(elements);
+
+      var _iterator8 = _createForOfIteratorHelper(elements),
+          _step8;
+
+      try {
+        for (_iterator8.s(); !(_step8 = _iterator8.n()).done;) {
+          var element = _step8.value;
+          element.style.opacity = 0;
+          element.style.display = display || "block";
+        }
+      } catch (err) {
+        _iterator8.e(err);
+      } finally {
+        _iterator8.f();
+      }
+
+      this.isFadeIn = true;
+
+      var opacityTarget = parseFloat(elements[0].dataset.opacityTarget || 1),
+          step = 16.66666 * opacityTarget / (duration || this.options.fadeSpeed),
+          fade = function fade() {
+        var currentOpacity = parseFloat(elements[0].style.opacity);
+
+        if (!((currentOpacity += step) > opacityTarget)) {
+          var _iterator9 = _createForOfIteratorHelper(elements),
+              _step9;
+
+          try {
+            for (_iterator9.s(); !(_step9 = _iterator9.n()).done;) {
+              var element = _step9.value;
+              element.style.opacity = currentOpacity;
+            }
+          } catch (err) {
+            _iterator9.e(err);
+          } finally {
+            _iterator9.f();
+          }
+
+          if (!_this11.isFadeIn) return;
+          requestAnimationFrame(fade);
+        } else {
+          var _iterator10 = _createForOfIteratorHelper(elements),
+              _step10;
+
+          try {
+            for (_iterator10.s(); !(_step10 = _iterator10.n()).done;) {
+              var _element2 = _step10.value;
+              _element2.style.opacity = '';
+            }
+          } catch (err) {
+            _iterator10.e(err);
+          } finally {
+            _iterator10.f();
+          }
+
+          callback && callback.call(_this11, elements);
+        }
+      };
+
+      fade();
+    }
+  }, {
+    key: "hide",
+    value: function hide(elements) {
+      elements = this.wrap(elements);
+
+      var _iterator11 = _createForOfIteratorHelper(elements),
+          _step11;
+
+      try {
+        for (_iterator11.s(); !(_step11 = _iterator11.n()).done;) {
+          var element = _step11.value;
+          element.dataset.initialDisplay = element.style.display;
+          element.style.display = 'none';
+        }
+      } catch (err) {
+        _iterator11.e(err);
+      } finally {
+        _iterator11.f();
+      }
+    }
+  }, {
+    key: "show",
+    value: function show(elements, display) {
+      elements = this.wrap(elements);
+
+      var _iterator12 = _createForOfIteratorHelper(elements),
+          _step12;
+
+      try {
+        for (_iterator12.s(); !(_step12 = _iterator12.n()).done;) {
+          var element = _step12.value;
+          element.style.display = element.dataset.initialDisplay || display || 'block';
+        }
+      } catch (err) {
+        _iterator12.e(err);
+      } finally {
+        _iterator12.f();
+      }
+    }
+  }, {
+    key: "wrap",
+    value: function wrap(input) {
+      return typeof input[Symbol.iterator] === 'function' && typeof input !== 'string' ? input : [input];
+    }
+  }, {
+    key: "on",
+    value: function on(events, callback) {
+      events = this.wrap(events);
+
+      var _iterator13 = _createForOfIteratorHelper(this.elements),
+          _step13;
+
+      try {
+        for (_iterator13.s(); !(_step13 = _iterator13.n()).done;) {
+          var element = _step13.value;
+
+          if (!element.fullyNamespacedEvents) {
+            element.fullyNamespacedEvents = {};
+          }
+
+          var _iterator14 = _createForOfIteratorHelper(events),
+              _step14;
+
+          try {
+            for (_iterator14.s(); !(_step14 = _iterator14.n()).done;) {
+              var event = _step14.value;
+              element.fullyNamespacedEvents[event] = callback;
+              element.addEventListener(event, callback);
+            }
+          } catch (err) {
+            _iterator14.e(err);
+          } finally {
+            _iterator14.f();
+          }
+        }
+      } catch (err) {
+        _iterator13.e(err);
+      } finally {
+        _iterator13.f();
+      }
+
+      return this;
+    }
+  }, {
+    key: "off",
+    value: function off(events) {
+      events = this.wrap(events);
+
+      var _iterator15 = _createForOfIteratorHelper(this.elements),
+          _step15;
+
+      try {
+        for (_iterator15.s(); !(_step15 = _iterator15.n()).done;) {
+          var element = _step15.value;
+
+          var _iterator16 = _createForOfIteratorHelper(events),
+              _step16;
+
+          try {
+            for (_iterator16.s(); !(_step16 = _iterator16.n()).done;) {
+              var event = _step16.value;
+
+              if (typeof element.fullyNamespacedEvents !== 'undefined' && event in element.fullyNamespacedEvents) {
+                element.removeEventListener(event, element.fullyNamespacedEvents[event]);
+              }
+            }
+          } catch (err) {
+            _iterator16.e(err);
+          } finally {
+            _iterator16.f();
+          }
+        }
+      } catch (err) {
+        _iterator15.e(err);
+      } finally {
+        _iterator15.f();
+      }
+
+      return this;
+    } // api
+
+  }, {
+    key: "open",
+    value: function open(elem) {
+      elem = elem || this.elements[0];
+
+      if (typeof jQuery !== "undefined" && elem instanceof jQuery) {
+        elem = elem.get(0);
+      }
+
+      this.initialImageIndex = this.elements.indexOf(elem);
+
+      if (this.initialImageIndex > -1) {
+        this.openImage(elem);
+      }
+    }
+  }, {
+    key: "next",
+    value: function next() {
+      this.loadImage(1);
+    }
+  }, {
+    key: "prev",
+    value: function prev() {
+      this.loadImage(-1);
+    } //close is exposed anyways..
+
+  }, {
+    key: "destroy",
+    value: function destroy() {
+      //remove all custom event listeners from elements
+      this.off(['close.' + this.eventNamespace, 'closed.' + this.eventNamespace, 'nextImageLoaded.' + this.eventNamespace, 'prevImageLoaded.' + this.eventNamespace, 'change.' + this.eventNamespace, 'nextDone.' + this.eventNamespace, 'prevDone.' + this.eventNamespace, 'error.' + this.eventNamespace, 'changed.' + this.eventNamespace, 'next.' + this.eventNamespace, 'prev.' + this.eventNamespace, 'show.' + this.eventNamespace, 'shown.' + this.eventNamespace]);
+      this.removeEventListener(this.elements, 'click.' + this.eventNamespace);
+      this.removeEventListener(document, 'focusin.' + this.eventNamespace);
+      this.removeEventListener(document.body, 'contextmenu.' + this.eventNamespace);
+      this.removeEventListener(document.body, 'keyup.' + this.eventNamespace);
+      this.removeEventListener(this.domNodes.navigation.getElementsByTagName('button'), 'click.' + this.eventNamespace);
+      this.removeEventListener(this.domNodes.closeButton, 'click.' + this.eventNamespace);
+      this.removeEventListener(window, 'resize.' + this.eventNamespace);
+      this.removeEventListener(window, 'hashchange.' + this.eventNamespace);
+      this.close();
+
+      if (this.isOpen) {
+        document.body.removeChild(this.domNodes.wrapper);
+        document.body.removeChild(this.domNodes.overlay);
+      }
+
+      this.elements = null;
+    }
+  }, {
+    key: "refresh",
+    value: function refresh() {
+      if (!this.initialSelector) {
+        throw 'refreshing only works when you initialize using a selector!';
+      }
+
+      var options = this.options,
+          selector = this.initialSelector;
+      this.destroy();
+      this.constructor(selector, options);
+      return this;
+    }
+  }, {
+    key: "hash",
+    get: function get() {
+      return window.location.hash.substring(1);
+    }
+  }]);
+
+  return SimpleLightbox;
+}();
+
+var _default = SimpleLightbox;
+exports["default"] = _default;
+global.SimpleLightbox = SimpleLightbox;
+
+}).call(this)}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
+},{}]},{},[1]);
diff --git a/photos/simplelightbox-master/dist/simple-lightbox.jquery.min.js b/photos/simplelightbox-master/dist/simple-lightbox.jquery.min.js
new file mode 100644
index 0000000000000000000000000000000000000000..336110f6dcfee8d182282e9296c8d31c2d0b0018
--- /dev/null
+++ b/photos/simplelightbox-master/dist/simple-lightbox.jquery.min.js
@@ -0,0 +1 @@
+!function s(a,r,l){function d(e,t){if(!r[e]){if(!a[e]){var o="function"==typeof require&&require;if(!t&&o)return o(e,!0);if(c)return c(e,!0);var i=new Error("Cannot find module '"+e+"'");throw i.code="MODULE_NOT_FOUND",i}var n=r[e]={exports:{}};a[e][0].call(n.exports,function(t){return d(a[e][1][t]||t)},n,n.exports,s,a,r,l)}return r[e].exports}for(var c="function"==typeof require&&require,t=0;t<l.length;t++)d(l[t]);return d}({1:[function(t,e,o){"use strict";var i;t("./simple-lightbox"),i=jQuery,window,document,i.fn.simpleLightbox=function(t){return this.length?new SimpleLightbox(this.get(),t):null}},{"./simple-lightbox":2}],2:[function(t,e,n){(function(o){(function(){"use strict";function h(t,e){var o;if("undefined"==typeof Symbol||null==t[Symbol.iterator]){if(Array.isArray(t)||(o=function(t,e){if(!t)return;if("string"==typeof t)return l(t,e);var o=Object.prototype.toString.call(t).slice(8,-1);"Object"===o&&t.constructor&&(o=t.constructor.name);if("Map"===o||"Set"===o)return Array.from(t);if("Arguments"===o||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(o))return l(t,e)}(t))||e&&t&&"number"==typeof t.length){o&&(t=o);var i=0,n=function(){};return{s:n,n:function(){return i>=t.length?{done:!0}:{done:!1,value:t[i++]}},e:function(t){throw t},f:n}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var s,a=!0,r=!1;return{s:function(){o=t[Symbol.iterator]()},n:function(){var t=o.next();return a=t.done,t},e:function(t){r=!0,s=t},f:function(){try{a||null==o.return||o.return()}finally{if(r)throw s}}}}function l(t,e){(null==e||e>t.length)&&(e=t.length);for(var o=0,i=new Array(e);o<e;o++)i[o]=t[o];return i}function i(t,e){for(var o=0;o<e.length;o++){var i=e[o];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function s(t,e,o){return e in t?Object.defineProperty(t,e,{value:o,enumerable:!0,configurable:!0,writable:!0}):t[e]=o,t}Object.defineProperty(n,"__esModule",{value:!0}),n.default=void 0;var t=function(){function n(t,e){var o=this;if(!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,n),s(this,"defaultOptions",{sourceAttr:"href",overlay:!0,spinner:!0,nav:!0,navText:["&lsaquo;","&rsaquo;"],captions:!0,captionDelay:0,captionSelector:"img",captionType:"attr",captionsData:"title",captionPosition:"bottom",captionClass:"",close:!0,closeText:"&times;",swipeClose:!0,showCounter:!0,fileExt:"png|jpg|jpeg|gif|webp",animationSlide:!0,animationSpeed:250,preloading:!0,enableKeyboard:!0,loop:!0,rel:!1,docClose:!0,swipeTolerance:50,className:"simple-lightbox",widthRatio:.8,heightRatio:.9,scaleImageToRatio:!1,disableRightClick:!1,disableScroll:!0,alertError:!0,alertErrorMessage:"Image not found, next image will be loaded",additionalHtml:!1,history:!0,throttleInterval:0,doubleTapZoom:2,maxZoom:10,htmlClass:"has-lightbox",rtl:!1,fixedClass:"sl-fixed",fadeSpeed:300,uniqueImages:!0,focus:!0}),s(this,"transitionPrefix",void 0),s(this,"transitionCapable",!1),s(this,"isTouchDevice","ontouchstart"in window),s(this,"initialLocationHash",void 0),s(this,"pushStateSupport","pushState"in history),s(this,"isOpen",!1),s(this,"isAnimating",!1),s(this,"isClosing",!1),s(this,"isFadeIn",!1),s(this,"urlChangedOnce",!1),s(this,"hashReseted",!1),s(this,"historyHasChanges",!1),s(this,"historyUpdateTimeout",null),s(this,"currentImage",void 0),s(this,"eventNamespace","simplelightbox"),s(this,"domNodes",{}),s(this,"loadedImages",[]),s(this,"initialImageIndex",0),s(this,"currentImageIndex",0),s(this,"initialSelector",null),s(this,"globalScrollbarWidth",0),s(this,"controlCoordinates",{swipeDiff:0,swipeYDiff:0,swipeStart:0,swipeEnd:0,swipeYStart:0,swipeYEnd:0,mousedown:!1,imageLeft:0,zoomed:!1,containerHeight:0,containerWidth:0,containerOffsetX:0,containerOffsetY:0,imgHeight:0,imgWidth:0,capture:!1,initialOffsetX:0,initialOffsetY:0,initialPointerOffsetX:0,initialPointerOffsetY:0,initialPointerOffsetX2:0,initialPointerOffsetY2:0,initialScale:1,initialPinchDistance:0,pointerOffsetX:0,pointerOffsetY:0,pointerOffsetX2:0,pointerOffsetY2:0,targetOffsetX:0,targetOffsetY:0,targetScale:0,pinchOffsetX:0,pinchOffsetY:0,limitOffsetX:0,limitOffsetY:0,scaleDifference:0,targetPinchDistance:0,touchCount:0,doubleTapped:!1,touchmoveCount:0}),this.options=Object.assign(this.defaultOptions,e),"string"==typeof t?(this.initialSelector=t,this.elements=Array.from(document.querySelectorAll(t))):this.elements=void 0!==t.length&&0<t.length?Array.from(t):[t],this.relatedElements=[],this.transitionPrefix=this.calculateTransitionPrefix(),this.transitionCapable=!1!==this.transitionPrefix,this.initialLocationHash=this.hash,this.options.rel&&(this.elements=this.getRelated(this.options.rel)),this.options.uniqueImages){var i=[];this.elements=Array.from(this.elements).filter(function(t){var e=t.getAttribute(o.options.sourceAttr);return-1===i.indexOf(e)&&(i.push(e),!0)})}this.createDomNodes(),this.options.close&&this.domNodes.wrapper.appendChild(this.domNodes.closeButton),this.options.nav&&this.domNodes.wrapper.appendChild(this.domNodes.navigation),this.options.spinner&&this.domNodes.wrapper.appendChild(this.domNodes.spinner),this.addEventListener(this.elements,"click."+this.eventNamespace,function(t){if(o.isValidLink(t.currentTarget)){if(t.preventDefault(),o.isAnimating)return!1;o.initialImageIndex=o.elements.indexOf(t.currentTarget),o.openImage(t.currentTarget)}}),this.options.docClose&&this.addEventListener(this.domNodes.wrapper,["click."+this.eventNamespace,"touchstart."+this.eventNamespace],function(t){o.isOpen&&t.target===t.currentTarget&&o.close()}),this.options.disableRightClick&&this.addEventListener(document.body,"contextmenu."+this.eventNamespace,function(t){t.target.classList.contains("sl-overlay")&&t.preventDefault()}),this.options.enableKeyboard&&this.addEventListener(document.body,"keyup."+this.eventNamespace,this.throttle(function(t){if(o.controlCoordinates.swipeDiff=0,o.isAnimating&&"Escape"===t.key)return o.currentImage.setAttribute("src",""),o.isAnimating=!1,o.close();o.isOpen&&(t.preventDefault(),"Escape"===t.key&&o.close(),!o.isAnimating&&-1<["ArrowLeft","ArrowRight"].indexOf(t.key)&&o.loadImage("ArrowRight"===t.key?1:-1))},this.options.throttleInterval)),this.addEvents()}var t,e,o;return t=n,(e=[{key:"createDomNodes",value:function(){this.domNodes.overlay=document.createElement("div"),this.domNodes.overlay.classList.add("sl-overlay"),this.domNodes.overlay.dataset.opacityTarget=".7",this.domNodes.closeButton=document.createElement("button"),this.domNodes.closeButton.classList.add("sl-close"),this.domNodes.closeButton.innerHTML=this.options.closeText,this.domNodes.spinner=document.createElement("div"),this.domNodes.spinner.classList.add("sl-spinner"),this.domNodes.spinner.innerHTML="<div></div>",this.domNodes.navigation=document.createElement("div"),this.domNodes.navigation.classList.add("sl-navigation"),this.domNodes.navigation.innerHTML='<button class="sl-prev">'.concat(this.options.navText[0],'</button><button class="sl-next">').concat(this.options.navText[1],"</button>"),this.domNodes.counter=document.createElement("div"),this.domNodes.counter.classList.add("sl-counter"),this.domNodes.counter.innerHTML='<span class="sl-current"></span>/<span class="sl-total"></span>',this.domNodes.caption=document.createElement("div"),this.domNodes.caption.classList.add("sl-caption","pos-"+this.options.captionPosition),this.options.captionClass&&this.domNodes.caption.classList.add(this.options.captionClass),this.domNodes.image=document.createElement("div"),this.domNodes.image.classList.add("sl-image"),this.domNodes.wrapper=document.createElement("div"),this.domNodes.wrapper.classList.add("sl-wrapper"),this.domNodes.wrapper.setAttribute("tabindex",-1),this.domNodes.wrapper.setAttribute("role","dialog"),this.domNodes.wrapper.setAttribute("aria-hidden",!1),this.options.className&&this.domNodes.wrapper.classList.add(this.options.className),this.options.rtl&&this.domNodes.wrapper.classList.add("sl-dir-rtl")}},{key:"throttle",value:function(t,e){var o;return function(){o||(t.apply(this,arguments),o=!0,setTimeout(function(){return o=!1},e))}}},{key:"isValidLink",value:function(t){return!this.options.fileExt||"pathname"in t&&new RegExp("("+this.options.fileExt+")$","i").test(t.pathname)}},{key:"calculateTransitionPrefix",value:function(){var t=(document.body||document.documentElement).style;return"transition"in t?"":"WebkitTransition"in t?"-webkit-":"MozTransition"in t?"-moz-":"OTransition"in t&&"-o"}},{key:"toggleScrollbar",value:function(t){var i=0,e=[].slice.call(document.querySelectorAll("."+this.options.fixedClass));if("hide"===t){var o=window.innerWidth;if(!o){var n=document.documentElement.getBoundingClientRect();o=n.right-Math.abs(n.left)}if(document.body.clientWidth<o){var s=document.createElement("div"),a=parseInt(document.body.style.paddingRight||0,10);s.classList.add("sl-scrollbar-measure"),document.body.appendChild(s),i=s.offsetWidth-s.clientWidth,document.body.removeChild(s),document.body.dataset.originalPaddingRight=a,0<i&&(document.body.classList.add("hidden-scroll"),document.body.style.paddingRight=a+i+"px",e.forEach(function(t){var e=t.style.paddingRight,o=window.getComputedStyle(t)["padding-right"];t.dataset.originalPaddingRight=e,t.style.paddingRight="".concat(parseFloat(o)+i,"px")}))}}else document.body.classList.remove("hidden-scroll"),document.body.style.paddingRight=document.body.dataset.originalPaddingRight,e.forEach(function(t){var e=t.dataset.originalPaddingRight;void 0!==e&&(t.style.paddingRight=e)});return i}},{key:"close",value:function(){var t=this;if(!this.isOpen||this.isAnimating||this.isClosing)return!1;this.isClosing=!0;var e=this.relatedElements[this.currentImageIndex];for(var o in e.dispatchEvent(new Event("close.simplelightbox")),this.options.history&&(this.historyHasChanges=!1,this.hashReseted||this.resetHash()),this.removeEventListener(document,"focusin."+this.eventNamespace),this.fadeOut(document.querySelectorAll(".sl-image img, .sl-overlay, .sl-close, .sl-navigation, .sl-image .sl-caption, .sl-counter"),this.options.fadeSpeed,function(){t.options.disableScroll&&t.toggleScrollbar("show"),t.options.htmlClass&&""!==t.options.htmlClass&&document.querySelector("html").classList.remove(t.options.htmlClass),document.body.removeChild(t.domNodes.wrapper),document.body.removeChild(t.domNodes.overlay),t.domNodes.additionalHtml=null,e.dispatchEvent(new Event("closed.simplelightbox")),t.isClosing=!1}),this.currentImage=null,this.isOpen=!1,this.isAnimating=!1,this.controlCoordinates)this.controlCoordinates[o]=0;this.controlCoordinates.mousedown=!1,this.controlCoordinates.zoomed=!1,this.controlCoordinates.capture=!1,this.controlCoordinates.initialScale=this.minMax(1,1,this.options.maxZoom),this.controlCoordinates.doubleTapped=!1}},{key:"preload",value:function(){var o=this,i=this.currentImageIndex,t=this.relatedElements.length,e=i+1<0?t-1:t-1<=i+1?0:i+1,n=i-1<0?t-1:t-1<=i-1?0:i-1,s=new Image,a=new Image;s.addEventListener("load",function(t){var e=t.target.getAttribute("src");-1===o.loadedImages.indexOf(e)&&o.loadedImages.push(e),o.relatedElements[i].dispatchEvent(new Event("nextImageLoaded."+o.eventNamespace))}),s.setAttribute("src",this.relatedElements[e].getAttribute(this.options.sourceAttr)),a.addEventListener("load",function(t){var e=t.target.getAttribute("src");-1===o.loadedImages.indexOf(e)&&o.loadedImages.push(e),o.relatedElements[i].dispatchEvent(new Event("prevImageLoaded."+o.eventNamespace))}),a.setAttribute("src",this.relatedElements[n].getAttribute(this.options.sourceAttr))}},{key:"loadImage",value:function(t){var e=this,o=t;this.options.rtl&&(t=-t),this.relatedElements[this.currentImageIndex].dispatchEvent(new Event("change."+this.eventNamespace)),this.relatedElements[this.currentImageIndex].dispatchEvent(new Event((1===t?"next":"prev")+"."+this.eventNamespace));var i=this.currentImageIndex+t;if(this.isAnimating||(i<0||i>=this.relatedElements.length)&&!1===this.options.loop)return!1;this.currentImageIndex=i<0?this.relatedElements.length-1:i>this.relatedElements.length-1?0:i,this.domNodes.counter.querySelector(".sl-current").innerHTML=this.currentImageIndex+1,this.options.animationSlide&&this.slide(this.options.animationSpeed/1e3,-100*o-this.controlCoordinates.swipeDiff+"px"),this.fadeOut(this.domNodes.image,this.options.fadeSpeed,function(){e.isAnimating=!0,e.isClosing?e.isAnimating=!1:setTimeout(function(){var t=e.relatedElements[e.currentImageIndex];e.currentImage.setAttribute("src",t.getAttribute(e.options.sourceAttr)),-1===e.loadedImages.indexOf(t.getAttribute(e.options.sourceAttr))&&e.show(e.domNodes.spinner),e.domNodes.image.contains(e.domNodes.caption)&&e.domNodes.image.removeChild(e.domNodes.caption),e.adjustImage(o),e.options.preloading&&e.preload()},100)})}},{key:"adjustImage",value:function(a){var r=this;if(!this.currentImage)return!1;var t=new Image,l=window.innerWidth*this.options.widthRatio,d=window.innerHeight*this.options.heightRatio;t.setAttribute("src",this.currentImage.getAttribute("src")),this.currentImage.dataset.scale=1,this.currentImage.dataset.translateX=0,this.currentImage.dataset.translateY=0,this.zoomPanElement(0,0,1),t.addEventListener("error",function(t){r.relatedElements[r.currentImageIndex].dispatchEvent(new Event("error."+r.eventNamespace)),r.isAnimating=!1,r.isOpen=!1,r.domNodes.spinner.style.display="none";var e=1===a||-1===a;if(r.initialImageIndex===r.currentImageIndex&&e)return r.close();r.options.alertError&&alert(r.options.alertErrorMessage),r.loadImage(e?a:1)}),t.addEventListener("load",function(t){void 0!==a&&(r.relatedElements[r.currentImageIndex].dispatchEvent(new Event("changed."+r.eventNamespace)),r.relatedElements[r.currentImageIndex].dispatchEvent(new Event((1===a?"nextDone":"prevDone")+"."+r.eventNamespace))),r.options.history&&r.updateURL(),-1===r.loadedImages.indexOf(r.currentImage.getAttribute("src"))&&r.loadedImages.push(r.currentImage.getAttribute("src"));var e,o,i=t.target.width,n=t.target.height;if(r.options.scaleImageToRatio||l<i||d<n){var s=l/d<i/n?i/l:n/d;i/=s,n/=s}r.domNodes.image.style.top=(window.innerHeight-n)/2+"px",r.domNodes.image.style.left=(window.innerWidth-i-r.globalScrollbarWidth)/2+"px",r.domNodes.image.style.width=i+"px",r.domNodes.image.style.height=n+"px",r.domNodes.spinner.style.display="none",r.options.focus&&r.forceFocus(),r.fadeIn(r.currentImage,r.options.fadeSpeed,function(){r.options.focus&&r.domNodes.wrapper.focus()}),r.isOpen=!0,"string"==typeof r.options.captionSelector?e="self"===r.options.captionSelector?r.relatedElements[r.currentImageIndex]:r.relatedElements[r.currentImageIndex].querySelector(r.options.captionSelector):"function"==typeof r.options.captionSelector&&(e=r.options.captionSelector(r.relatedElements[r.currentImageIndex])),r.options.captions&&e&&(o="data"===r.options.captionType?e.dataset[r.options.captionsData]:"text"===r.options.captionType?e.innerHTML:e.getAttribute(r.options.captionsData)),r.options.loop||(0===r.currentImageIndex&&r.hide(r.domNodes.navigation.querySelector(".sl-prev")),r.currentImageIndex>=r.relatedElements.length-1&&r.hide(r.domNodes.navigation.querySelector(".sl-next")),0<r.currentImageIndex&&r.show(r.domNodes.navigation.querySelector(".sl-prev")),r.currentImageIndex<r.relatedElements.length-1&&r.show(r.domNodes.navigation.querySelector(".sl-next"))),1===r.relatedElements.length?r.hide(r.domNodes.navigation.querySelectorAll(".sl-prev, .sl-next")):r.show(r.domNodes.navigation.querySelectorAll(".sl-prev, .sl-next")),1===a||-1===a?(r.options.animationSlide&&(r.slide(0,100*a+"px"),setTimeout(function(){r.slide(r.options.animationSpeed/1e3,"0px")},50)),r.fadeIn(r.domNodes.image,r.options.fadeSpeed,function(){r.isAnimating=!1,r.setCaption(o,i)})):(r.isAnimating=!1,r.setCaption(o,i)),r.options.additionalHtml&&!r.domNodes.additionalHtml&&(r.domNodes.additionalHtml=document.createElement("div"),r.domNodes.additionalHtml.classList.add("sl-additional-html"),r.domNodes.additionalHtml.innerHTML=r.options.additionalHtml,r.domNodes.image.appendChild(r.domNodes.additionalHtml))})}},{key:"zoomPanElement",value:function(t,e,o){this.currentImage.style[this.transitionPrefix+"transform"]="translate("+t+","+e+") scale("+o+")"}},{key:"minMax",value:function(t,e,o){return t<e?e:o<t?o:t}},{key:"setZoomData",value:function(t,e,o){this.currentImage.dataset.scale=t,this.currentImage.dataset.translateX=e,this.currentImage.dataset.translateY=o}},{key:"hashchangeHandler",value:function(){this.isOpen&&this.hash===this.initialLocationHash&&(this.hashReseted=!0,this.close())}},{key:"addEvents",value:function(){var o=this;this.addEventListener(window,"resize."+this.eventNamespace,function(t){o.isOpen&&o.adjustImage()}),this.addEventListener(this.domNodes.closeButton,["click."+this.eventNamespace,"touchstart."+this.eventNamespace],this.close.bind(this)),this.options.history&&setTimeout(function(){o.addEventListener(window,"hashchange."+o.eventNamespace,function(t){o.isOpen&&o.hashchangeHandler()})},40),this.addEventListener(this.domNodes.navigation.getElementsByTagName("button"),"click."+this.eventNamespace,function(t){if(!t.currentTarget.tagName.match(/button/i))return!0;t.preventDefault(),o.controlCoordinates.swipeDiff=0,o.loadImage(t.currentTarget.classList.contains("sl-next")?1:-1)}),this.addEventListener(this.domNodes.image,["touchstart."+this.eventNamespace,"mousedown."+this.eventNamespace],function(t){if("A"===t.target.tagName&&"touchstart"===t.type)return!0;if("mousedown"===t.type)o.controlCoordinates.initialPointerOffsetX=t.clientX,o.controlCoordinates.initialPointerOffsetY=t.clientY,o.controlCoordinates.containerHeight=o.getDimensions(o.domNodes.image).height,o.controlCoordinates.containerWidth=o.getDimensions(o.domNodes.image).width,o.controlCoordinates.imgHeight=o.getDimensions(o.currentImage).height,o.controlCoordinates.imgWidth=o.getDimensions(o.currentImage).width,o.controlCoordinates.containerOffsetX=o.domNodes.image.offsetLeft,o.controlCoordinates.containerOffsetY=o.domNodes.image.offsetTop,o.controlCoordinates.initialOffsetX=parseFloat(o.currentImage.dataset.translateX),o.controlCoordinates.initialOffsetY=parseFloat(o.currentImage.dataset.translateY),o.controlCoordinates.capture=!0;else{if(o.controlCoordinates.touchCount=t.touches.length,o.controlCoordinates.initialPointerOffsetX=t.touches[0].clientX,o.controlCoordinates.initialPointerOffsetY=t.touches[0].clientY,o.controlCoordinates.containerHeight=o.getDimensions(o.domNodes.image).height,o.controlCoordinates.containerWidth=o.getDimensions(o.domNodes.image).width,o.controlCoordinates.imgHeight=o.getDimensions(o.currentImage).height,o.controlCoordinates.imgWidth=o.getDimensions(o.currentImage).width,o.controlCoordinates.containerOffsetX=o.domNodes.image.offsetLeft,o.controlCoordinates.containerOffsetY=o.domNodes.image.offsetTop,1===o.controlCoordinates.touchCount){if(o.controlCoordinates.doubleTapped)return o.currentImage.classList.add("sl-transition"),o.controlCoordinates.zoomed?(o.controlCoordinates.initialScale=1,o.setZoomData(o.controlCoordinates.initialScale,0,0),o.zoomPanElement("0px","0px",o.controlCoordinates.initialScale),o.controlCoordinates.zoomed=!1):(o.controlCoordinates.initialScale=o.options.doubleTapZoom,o.setZoomData(o.controlCoordinates.initialScale,0,0),o.zoomPanElement("0px","0px",o.controlCoordinates.initialScale),o.domNodes.caption.style.opacity||"none"===o.domNodes.caption.style.display||o.fadeOut(o.domNodes.caption,o.options.fadeSpeed),o.controlCoordinates.zoomed=!0),setTimeout(function(){o.currentImage&&o.currentImage.classList.remove("sl-transition")},200),!1;o.controlCoordinates.doubleTapped=!0,setTimeout(function(){o.controlCoordinates.doubleTapped=!1},300),o.controlCoordinates.initialOffsetX=parseFloat(o.currentImage.dataset.translateX),o.controlCoordinates.initialOffsetY=parseFloat(o.currentImage.dataset.translateY)}else 2===o.controlCoordinates.touchCount&&(o.controlCoordinates.initialPointerOffsetX2=t.touches[1].clientX,o.controlCoordinates.initialPointerOffsetY2=t.touches[1].clientY,o.controlCoordinates.initialOffsetX=parseFloat(o.currentImage.dataset.translateX),o.controlCoordinates.initialOffsetY=parseFloat(o.currentImage.dataset.translateY),o.controlCoordinates.pinchOffsetX=(o.controlCoordinates.initialPointerOffsetX+o.controlCoordinates.initialPointerOffsetX2)/2,o.controlCoordinates.pinchOffsetY=(o.controlCoordinates.initialPointerOffsetY+o.controlCoordinates.initialPointerOffsetY2)/2,o.controlCoordinates.initialPinchDistance=Math.sqrt((o.controlCoordinates.initialPointerOffsetX-o.controlCoordinates.initialPointerOffsetX2)*(o.controlCoordinates.initialPointerOffsetX-o.controlCoordinates.initialPointerOffsetX2)+(o.controlCoordinates.initialPointerOffsetY-o.controlCoordinates.initialPointerOffsetY2)*(o.controlCoordinates.initialPointerOffsetY-o.controlCoordinates.initialPointerOffsetY2)));o.controlCoordinates.capture=!0}return!!o.controlCoordinates.mousedown||(o.transitionCapable&&(o.controlCoordinates.imageLeft=parseInt(o.domNodes.image.style.left,10)),o.controlCoordinates.mousedown=!0,o.controlCoordinates.swipeDiff=0,o.controlCoordinates.swipeYDiff=0,o.controlCoordinates.swipeStart=t.pageX||t.touches[0].pageX,o.controlCoordinates.swipeYStart=t.pageY||t.touches[0].pageY,!1)}),this.addEventListener(this.domNodes.image,["touchmove."+this.eventNamespace,"mousemove."+this.eventNamespace,"MSPointerMove"],function(t){if(!o.controlCoordinates.mousedown)return!0;if(t.preventDefault(),"touchmove"===t.type){if(!1===o.controlCoordinates.capture)return!1;o.controlCoordinates.pointerOffsetX=t.touches[0].clientX,o.controlCoordinates.pointerOffsetY=t.touches[0].clientY,o.controlCoordinates.touchCount=t.touches.length,o.controlCoordinates.touchmoveCount++,1<o.controlCoordinates.touchCount?(o.controlCoordinates.pointerOffsetX2=t.touches[1].clientX,o.controlCoordinates.pointerOffsetY2=t.touches[1].clientY,o.controlCoordinates.targetPinchDistance=Math.sqrt((o.controlCoordinates.pointerOffsetX-o.controlCoordinates.pointerOffsetX2)*(o.controlCoordinates.pointerOffsetX-o.controlCoordinates.pointerOffsetX2)+(o.controlCoordinates.pointerOffsetY-o.controlCoordinates.pointerOffsetY2)*(o.controlCoordinates.pointerOffsetY-o.controlCoordinates.pointerOffsetY2)),null===o.controlCoordinates.initialPinchDistance&&(o.controlCoordinates.initialPinchDistance=o.controlCoordinates.targetPinchDistance),1<=Math.abs(o.controlCoordinates.initialPinchDistance-o.controlCoordinates.targetPinchDistance)&&(o.controlCoordinates.targetScale=o.minMax(o.controlCoordinates.targetPinchDistance/o.controlCoordinates.initialPinchDistance*o.controlCoordinates.initialScale,1,o.options.maxZoom),o.controlCoordinates.limitOffsetX=(o.controlCoordinates.imgWidth*o.controlCoordinates.targetScale-o.controlCoordinates.containerWidth)/2,o.controlCoordinates.limitOffsetY=(o.controlCoordinates.imgHeight*o.controlCoordinates.targetScale-o.controlCoordinates.containerHeight)/2,o.controlCoordinates.scaleDifference=o.controlCoordinates.targetScale-o.controlCoordinates.initialScale,o.controlCoordinates.targetOffsetX=o.controlCoordinates.imgWidth*o.controlCoordinates.targetScale<=o.controlCoordinates.containerWidth?0:o.minMax(o.controlCoordinates.initialOffsetX-(o.controlCoordinates.pinchOffsetX-o.controlCoordinates.containerOffsetX-o.controlCoordinates.containerWidth/2-o.controlCoordinates.initialOffsetX)/(o.controlCoordinates.targetScale-o.controlCoordinates.scaleDifference)*o.controlCoordinates.scaleDifference,-1*o.controlCoordinates.limitOffsetX,o.controlCoordinates.limitOffsetX),o.controlCoordinates.targetOffsetY=o.controlCoordinates.imgHeight*o.controlCoordinates.targetScale<=o.controlCoordinates.containerHeight?0:o.minMax(o.controlCoordinates.initialOffsetY-(o.controlCoordinates.pinchOffsetY-o.controlCoordinates.containerOffsetY-o.controlCoordinates.containerHeight/2-o.controlCoordinates.initialOffsetY)/(o.controlCoordinates.targetScale-o.controlCoordinates.scaleDifference)*o.controlCoordinates.scaleDifference,-1*o.controlCoordinates.limitOffsetY,o.controlCoordinates.limitOffsetY),o.zoomPanElement(o.controlCoordinates.targetOffsetX+"px",o.controlCoordinates.targetOffsetY+"px",o.controlCoordinates.targetScale),1<o.controlCoordinates.targetScale&&(o.controlCoordinates.zoomed=!0,o.domNodes.caption.style.opacity||"none"===o.domNodes.caption.style.display||o.fadeOut(o.domNodes.caption,o.options.fadeSpeed)),o.controlCoordinates.initialPinchDistance=o.controlCoordinates.targetPinchDistance,o.controlCoordinates.initialScale=o.controlCoordinates.targetScale,o.controlCoordinates.initialOffsetX=o.controlCoordinates.targetOffsetX,o.controlCoordinates.initialOffsetY=o.controlCoordinates.targetOffsetY)):(o.controlCoordinates.targetScale=o.controlCoordinates.initialScale,o.controlCoordinates.limitOffsetX=(o.controlCoordinates.imgWidth*o.controlCoordinates.targetScale-o.controlCoordinates.containerWidth)/2,o.controlCoordinates.limitOffsetY=(o.controlCoordinates.imgHeight*o.controlCoordinates.targetScale-o.controlCoordinates.containerHeight)/2,o.controlCoordinates.targetOffsetX=o.controlCoordinates.imgWidth*o.controlCoordinates.targetScale<=o.controlCoordinates.containerWidth?0:o.minMax(o.controlCoordinates.pointerOffsetX-(o.controlCoordinates.initialPointerOffsetX-o.controlCoordinates.initialOffsetX),-1*o.controlCoordinates.limitOffsetX,o.controlCoordinates.limitOffsetX),o.controlCoordinates.targetOffsetY=o.controlCoordinates.imgHeight*o.controlCoordinates.targetScale<=o.controlCoordinates.containerHeight?0:o.minMax(o.controlCoordinates.pointerOffsetY-(o.controlCoordinates.initialPointerOffsetY-o.controlCoordinates.initialOffsetY),-1*o.controlCoordinates.limitOffsetY,o.controlCoordinates.limitOffsetY),Math.abs(o.controlCoordinates.targetOffsetX)===Math.abs(o.controlCoordinates.limitOffsetX)&&(o.controlCoordinates.initialOffsetX=o.controlCoordinates.targetOffsetX,o.controlCoordinates.initialPointerOffsetX=o.controlCoordinates.pointerOffsetX),Math.abs(o.controlCoordinates.targetOffsetY)===Math.abs(o.controlCoordinates.limitOffsetY)&&(o.controlCoordinates.initialOffsetY=o.controlCoordinates.targetOffsetY,o.controlCoordinates.initialPointerOffsetY=o.controlCoordinates.pointerOffsetY),o.setZoomData(o.controlCoordinates.initialScale,o.controlCoordinates.targetOffsetX,o.controlCoordinates.targetOffsetY),o.zoomPanElement(o.controlCoordinates.targetOffsetX+"px",o.controlCoordinates.targetOffsetY+"px",o.controlCoordinates.targetScale))}if("mousemove"===t.type&&o.controlCoordinates.mousedown){if("touchmove"==t.type)return!0;if(!1===o.controlCoordinates.capture)return!1;o.controlCoordinates.pointerOffsetX=t.clientX,o.controlCoordinates.pointerOffsetY=t.clientY,o.controlCoordinates.targetScale=o.controlCoordinates.initialScale,o.controlCoordinates.limitOffsetX=(o.controlCoordinates.imgWidth*o.controlCoordinates.targetScale-o.controlCoordinates.containerWidth)/2,o.controlCoordinates.limitOffsetY=(o.controlCoordinates.imgHeight*o.controlCoordinates.targetScale-o.controlCoordinates.containerHeight)/2,o.controlCoordinates.targetOffsetX=o.controlCoordinates.imgWidth*o.controlCoordinates.targetScale<=o.controlCoordinates.containerWidth?0:o.minMax(o.controlCoordinates.pointerOffsetX-(o.controlCoordinates.initialPointerOffsetX-o.controlCoordinates.initialOffsetX),-1*o.controlCoordinates.limitOffsetX,o.controlCoordinates.limitOffsetX),o.controlCoordinates.targetOffsetY=o.controlCoordinates.imgHeight*o.controlCoordinates.targetScale<=o.controlCoordinates.containerHeight?0:o.minMax(o.controlCoordinates.pointerOffsetY-(o.controlCoordinates.initialPointerOffsetY-o.controlCoordinates.initialOffsetY),-1*o.controlCoordinates.limitOffsetY,o.controlCoordinates.limitOffsetY),Math.abs(o.controlCoordinates.targetOffsetX)===Math.abs(o.controlCoordinates.limitOffsetX)&&(o.controlCoordinates.initialOffsetX=o.controlCoordinates.targetOffsetX,o.controlCoordinates.initialPointerOffsetX=o.controlCoordinates.pointerOffsetX),Math.abs(o.controlCoordinates.targetOffsetY)===Math.abs(o.controlCoordinates.limitOffsetY)&&(o.controlCoordinates.initialOffsetY=o.controlCoordinates.targetOffsetY,o.controlCoordinates.initialPointerOffsetY=o.controlCoordinates.pointerOffsetY),o.setZoomData(o.controlCoordinates.initialScale,o.controlCoordinates.targetOffsetX,o.controlCoordinates.targetOffsetY),o.zoomPanElement(o.controlCoordinates.targetOffsetX+"px",o.controlCoordinates.targetOffsetY+"px",o.controlCoordinates.targetScale)}o.controlCoordinates.zoomed||(o.controlCoordinates.swipeEnd=t.pageX||t.touches[0].pageX,o.controlCoordinates.swipeYEnd=t.pageY||t.touches[0].pageY,o.controlCoordinates.swipeDiff=o.controlCoordinates.swipeStart-o.controlCoordinates.swipeEnd,o.controlCoordinates.swipeYDiff=o.controlCoordinates.swipeYStart-o.controlCoordinates.swipeYEnd,o.options.animationSlide&&o.slide(0,-o.controlCoordinates.swipeDiff+"px"))}),this.addEventListener(this.domNodes.image,["touchend."+this.eventNamespace,"mouseup."+this.eventNamespace,"touchcancel."+this.eventNamespace,"mouseleave."+this.eventNamespace,"pointerup","pointercancel","MSPointerUp","MSPointerCancel"],function(t){if(o.isTouchDevice&&"touchend"===t.type&&(o.controlCoordinates.touchCount=t.touches.length,0===o.controlCoordinates.touchCount?(o.currentImage&&o.setZoomData(o.controlCoordinates.initialScale,o.controlCoordinates.targetOffsetX,o.controlCoordinates.targetOffsetY),1===o.controlCoordinates.initialScale&&(o.controlCoordinates.zoomed=!1,"none"===o.domNodes.caption.style.display&&o.fadeIn(o.domNodes.caption,o.options.fadeSpeed)),o.controlCoordinates.initialPinchDistance=null,o.controlCoordinates.capture=!1):1===o.controlCoordinates.touchCount?(o.controlCoordinates.initialPointerOffsetX=t.touches[0].clientX,o.controlCoordinates.initialPointerOffsetY=t.touches[0].clientY):1<o.controlCoordinates.touchCount&&(o.controlCoordinates.initialPinchDistance=null)),o.controlCoordinates.mousedown){var e=!(o.controlCoordinates.mousedown=!1);o.options.loop||(0===o.currentImageIndex&&o.controlCoordinates.swipeDiff<0&&(e=!1),o.currentImageIndex>=o.relatedElements.length-1&&0<o.controlCoordinates.swipeDiff&&(e=!1)),Math.abs(o.controlCoordinates.swipeDiff)>o.options.swipeTolerance&&e?o.loadImage(0<o.controlCoordinates.swipeDiff?1:-1):o.options.animationSlide&&o.slide(o.options.animationSpeed/1e3,"0px"),o.options.swipeClose&&50<Math.abs(o.controlCoordinates.swipeYDiff)&&Math.abs(o.controlCoordinates.swipeDiff)<o.options.swipeTolerance&&o.close()}}),this.addEventListener(this.domNodes.image,["dblclick"],function(t){if(!o.isTouchDevice)return o.controlCoordinates.initialPointerOffsetX=t.clientX,o.controlCoordinates.initialPointerOffsetY=t.clientY,o.controlCoordinates.containerHeight=o.getDimensions(o.domNodes.image).height,o.controlCoordinates.containerWidth=o.getDimensions(o.domNodes.image).width,o.controlCoordinates.imgHeight=o.getDimensions(o.currentImage).height,o.controlCoordinates.imgWidth=o.getDimensions(o.currentImage).width,o.controlCoordinates.containerOffsetX=o.domNodes.image.offsetLeft,o.controlCoordinates.containerOffsetY=o.domNodes.image.offsetTop,o.currentImage.classList.add("sl-transition"),o.controlCoordinates.zoomed?(o.controlCoordinates.initialScale=1,o.setZoomData(o.controlCoordinates.initialScale,0,0),o.zoomPanElement("0px","0px",o.controlCoordinates.initialScale),o.controlCoordinates.zoomed=!1,"none"===o.domNodes.caption.style.display&&o.fadeIn(o.domNodes.caption,o.options.fadeSpeed)):(o.controlCoordinates.initialScale=o.options.doubleTapZoom,o.setZoomData(o.controlCoordinates.initialScale,0,0),o.zoomPanElement("0px","0px",o.controlCoordinates.initialScale),o.domNodes.caption.style.opacity||"none"===o.domNodes.caption.style.display||o.fadeOut(o.domNodes.caption,o.options.fadeSpeed),o.controlCoordinates.zoomed=!0),setTimeout(function(){o.currentImage&&o.currentImage.classList.remove("sl-transition")},200),!(o.controlCoordinates.capture=!0)})}},{key:"getDimensions",value:function(t){var e=window.getComputedStyle(t),o=t.offsetHeight,i=t.offsetWidth,n=parseFloat(e.borderTopWidth);return{height:o-parseFloat(e.borderBottomWidth)-n-parseFloat(e.paddingTop)-parseFloat(e.paddingBottom),width:i-parseFloat(e.borderLeftWidth)-parseFloat(e.borderRightWidth)-parseFloat(e.paddingLeft)-parseFloat(e.paddingRight)}}},{key:"updateHash",value:function(){var t="pid="+(this.currentImageIndex+1),e=window.location.href.split("#")[0]+"#"+t;this.hashReseted=!1,this.pushStateSupport?window.history[this.historyHasChanges?"replaceState":"pushState"]("",document.title,e):this.historyHasChanges?window.location.replace(e):window.location.hash=t,this.historyHasChanges||(this.urlChangedOnce=!0),this.historyHasChanges=!0}},{key:"resetHash",value:function(){this.hashReseted=!0,this.urlChangedOnce?history.back():this.pushStateSupport?history.pushState("",document.title,window.location.pathname+window.location.search):window.location.hash="",clearTimeout(this.historyUpdateTimeout)}},{key:"updateURL",value:function(){clearTimeout(this.historyUpdateTimeout),this.historyHasChanges?this.historyUpdateTimeout=setTimeout(this.updateHash.bind(this),800):this.updateHash()}},{key:"setCaption",value:function(t,e){var o=this;this.options.captions&&t&&""!==t&&void 0!==t&&(this.hide(this.domNodes.caption),this.domNodes.caption.style.width=e+"px",this.domNodes.caption.innerHTML=t,this.domNodes.image.appendChild(this.domNodes.caption),setTimeout(function(){o.fadeIn(o.domNodes.caption,o.options.fadeSpeed)},this.options.captionDelay))}},{key:"slide",value:function(t,e){if(!this.transitionCapable)return this.domNodes.image.style.left=e;this.domNodes.image.style[this.transitionPrefix+"transform"]="translateX("+e+")",this.domNodes.image.style[this.transitionPrefix+"transition"]=this.transitionPrefix+"transform "+t+"s linear"}},{key:"getRelated",value:function(e){return e&&!1!==e&&"nofollow"!==e?Array.from(this.elements).filter(function(t){return t.getAttribute("rel")===e}):this.elements}},{key:"openImage",value:function(t){var e=this;t.dispatchEvent(new Event("show."+this.eventNamespace)),this.options.disableScroll&&(this.globalScrollbarWidth=this.toggleScrollbar("hide")),this.options.htmlClass&&""!==this.options.htmlClass&&document.querySelector("html").classList.add(this.options.htmlClass),document.body.appendChild(this.domNodes.wrapper),this.domNodes.wrapper.appendChild(this.domNodes.image),this.options.overlay&&document.body.appendChild(this.domNodes.overlay),this.relatedElements=this.getRelated(t.rel),this.options.showCounter&&(1==this.relatedElements.length&&this.domNodes.wrapper.contains(this.domNodes.counter)?this.domNodes.wrapper.removeChild(this.domNodes.counter):1<this.relatedElements.length&&!this.domNodes.wrapper.contains(this.domNodes.counter)&&this.domNodes.wrapper.appendChild(this.domNodes.counter)),this.isAnimating=!0,this.currentImageIndex=this.relatedElements.indexOf(t);var o=t.getAttribute(this.options.sourceAttr);this.currentImage=document.createElement("img"),this.currentImage.style.display="none",this.currentImage.setAttribute("src",o),this.currentImage.dataset.scale=1,this.currentImage.dataset.translateX=0,this.currentImage.dataset.translateY=0,-1===this.loadedImages.indexOf(o)&&this.loadedImages.push(o),this.domNodes.image.innerHTML="",this.domNodes.image.setAttribute("style",""),this.domNodes.image.appendChild(this.currentImage),this.fadeIn(this.domNodes.overlay,this.options.fadeSpeed),this.fadeIn([this.domNodes.counter,this.domNodes.navigation,this.domNodes.closeButton],this.options.fadeSpeed),this.show(this.domNodes.spinner),this.domNodes.counter.querySelector(".sl-current").innerHTML=this.currentImageIndex+1,this.domNodes.counter.querySelector(".sl-total").innerHTML=this.relatedElements.length,this.adjustImage(),this.options.preloading&&this.preload(),setTimeout(function(){t.dispatchEvent(new Event("shown."+e.eventNamespace))},this.options.animationSpeed)}},{key:"forceFocus",value:function(){var e=this;this.removeEventListener(document,"focusin."+this.eventNamespace),this.addEventListener(document,"focusin."+this.eventNamespace,function(t){document===t.target||e.domNodes.wrapper===t.target||e.domNodes.wrapper.contains(t.target)||e.domNodes.wrapper.focus()})}},{key:"addEventListener",value:function(t,e,o,i){t=this.wrap(t),e=this.wrap(e);var n,s=h(t);try{for(s.s();!(n=s.n()).done;){var a=n.value;a.namespaces||(a.namespaces={});var r,l=h(e);try{for(l.s();!(r=l.n()).done;){var d=r.value,c=i||!1;a.namespaces[d]=o,a.addEventListener(d.split(".")[0],o,c)}}catch(t){l.e(t)}finally{l.f()}}}catch(t){s.e(t)}finally{s.f()}}},{key:"removeEventListener",value:function(t,e){t=this.wrap(t),e=this.wrap(e);var o,i=h(t);try{for(i.s();!(o=i.n()).done;){var n,s=o.value,a=h(e);try{for(a.s();!(n=a.n()).done;){var r=n.value;s.namespaces&&s.namespaces[r]&&(s.removeEventListener(r.split(".")[0],s.namespaces[r]),delete s.namespaces[r])}}catch(t){a.e(t)}finally{a.f()}}}catch(t){i.e(t)}finally{i.f()}}},{key:"fadeOut",value:function(r,t,l){var e,d=this,o=h(r=this.wrap(r));try{for(o.s();!(e=o.n()).done;){e.value.style.opacity=1}}catch(t){o.e(t)}finally{o.f()}this.isFadeIn=!1;var c=16.66666/(t||this.options.fadeSpeed);!function t(){var e=parseFloat(r[0].style.opacity);if((e-=c)<0){var o,i=h(r);try{for(i.s();!(o=i.n()).done;){var n=o.value;n.style.display="none",n.style.opacity=""}}catch(t){i.e(t)}finally{i.f()}l&&l.call(d,r)}else{var s,a=h(r);try{for(a.s();!(s=a.n()).done;){s.value.style.opacity=e}}catch(t){a.e(t)}finally{a.f()}requestAnimationFrame(t)}}()}},{key:"fadeIn",value:function(a,t,r,e){var o,l=this,i=h(a=this.wrap(a));try{for(i.s();!(o=i.n()).done;){var n=o.value;n.style.opacity=0,n.style.display=e||"block"}}catch(t){i.e(t)}finally{i.f()}this.isFadeIn=!0;var d=parseFloat(a[0].dataset.opacityTarget||1),c=16.66666*d/(t||this.options.fadeSpeed);!function t(){var e=parseFloat(a[0].style.opacity);if((e+=c)>d){var o,i=h(a);try{for(i.s();!(o=i.n()).done;){o.value.style.opacity=""}}catch(t){i.e(t)}finally{i.f()}r&&r.call(l,a)}else{var n,s=h(a);try{for(s.s();!(n=s.n()).done;){n.value.style.opacity=e}}catch(t){s.e(t)}finally{s.f()}if(!l.isFadeIn)return;requestAnimationFrame(t)}}()}},{key:"hide",value:function(t){var e,o=h(t=this.wrap(t));try{for(o.s();!(e=o.n()).done;){var i=e.value;i.dataset.initialDisplay=i.style.display,i.style.display="none"}}catch(t){o.e(t)}finally{o.f()}}},{key:"show",value:function(t,e){var o,i=h(t=this.wrap(t));try{for(i.s();!(o=i.n()).done;){var n=o.value;n.style.display=n.dataset.initialDisplay||e||"block"}}catch(t){i.e(t)}finally{i.f()}}},{key:"wrap",value:function(t){return"function"==typeof t[Symbol.iterator]&&"string"!=typeof t?t:[t]}},{key:"on",value:function(t,e){t=this.wrap(t);var o,i=h(this.elements);try{for(i.s();!(o=i.n()).done;){var n=o.value;n.fullyNamespacedEvents||(n.fullyNamespacedEvents={});var s,a=h(t);try{for(a.s();!(s=a.n()).done;){var r=s.value;n.fullyNamespacedEvents[r]=e,n.addEventListener(r,e)}}catch(t){a.e(t)}finally{a.f()}}}catch(t){i.e(t)}finally{i.f()}return this}},{key:"off",value:function(t){t=this.wrap(t);var e,o=h(this.elements);try{for(o.s();!(e=o.n()).done;){var i,n=e.value,s=h(t);try{for(s.s();!(i=s.n()).done;){var a=i.value;void 0!==n.fullyNamespacedEvents&&a in n.fullyNamespacedEvents&&n.removeEventListener(a,n.fullyNamespacedEvents[a])}}catch(t){s.e(t)}finally{s.f()}}}catch(t){o.e(t)}finally{o.f()}return this}},{key:"open",value:function(t){t=t||this.elements[0],"undefined"!=typeof jQuery&&t instanceof jQuery&&(t=t.get(0)),this.initialImageIndex=this.elements.indexOf(t),-1<this.initialImageIndex&&this.openImage(t)}},{key:"next",value:function(){this.loadImage(1)}},{key:"prev",value:function(){this.loadImage(-1)}},{key:"destroy",value:function(){this.off(["close."+this.eventNamespace,"closed."+this.eventNamespace,"nextImageLoaded."+this.eventNamespace,"prevImageLoaded."+this.eventNamespace,"change."+this.eventNamespace,"nextDone."+this.eventNamespace,"prevDone."+this.eventNamespace,"error."+this.eventNamespace,"changed."+this.eventNamespace,"next."+this.eventNamespace,"prev."+this.eventNamespace,"show."+this.eventNamespace,"shown."+this.eventNamespace]),this.removeEventListener(this.elements,"click."+this.eventNamespace),this.removeEventListener(document,"focusin."+this.eventNamespace),this.removeEventListener(document.body,"contextmenu."+this.eventNamespace),this.removeEventListener(document.body,"keyup."+this.eventNamespace),this.removeEventListener(this.domNodes.navigation.getElementsByTagName("button"),"click."+this.eventNamespace),this.removeEventListener(this.domNodes.closeButton,"click."+this.eventNamespace),this.removeEventListener(window,"resize."+this.eventNamespace),this.removeEventListener(window,"hashchange."+this.eventNamespace),this.close(),this.isOpen&&(document.body.removeChild(this.domNodes.wrapper),document.body.removeChild(this.domNodes.overlay)),this.elements=null}},{key:"refresh",value:function(){if(!this.initialSelector)throw"refreshing only works when you initialize using a selector!";var t=this.options,e=this.initialSelector;return this.destroy(),this.constructor(e,t),this}},{key:"hash",get:function(){return window.location.hash.substring(1)}}])&&i(t.prototype,e),o&&i(t,o),n}(),e=t;n.default=e,o.SimpleLightbox=t}).call(this)}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}]},{},[1]);
\ No newline at end of file
diff --git a/photos/simplelightbox-master/dist/simple-lightbox.js b/photos/simplelightbox-master/dist/simple-lightbox.js
new file mode 100644
index 0000000000000000000000000000000000000000..ac552337aeb5615a2675ee535f8f61f801c3407a
--- /dev/null
+++ b/photos/simplelightbox-master/dist/simple-lightbox.js
@@ -0,0 +1,1649 @@
+/*!
+	By André Rinas, www.andrerinas.de
+	Documentation, www.simplelightbox.de
+	Available for use under the MIT License
+	Version 2.7.0
+*/
+(function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i<t.length;i++)o(t[i]);return o}return r})()({1:[function(require,module,exports){
+(function (global){(function (){
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports["default"] = void 0;
+
+function _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
+
+function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
+
+function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
+
+function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
+
+function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
+
+var SimpleLightbox = /*#__PURE__*/function () {
+  function SimpleLightbox(elements, options) {
+    var _this = this;
+
+    _classCallCheck(this, SimpleLightbox);
+
+    _defineProperty(this, "defaultOptions", {
+      sourceAttr: 'href',
+      overlay: true,
+      spinner: true,
+      nav: true,
+      navText: ['&lsaquo;', '&rsaquo;'],
+      captions: true,
+      captionDelay: 0,
+      captionSelector: 'img',
+      captionType: 'attr',
+      captionsData: 'title',
+      captionPosition: 'bottom',
+      captionClass: '',
+      close: true,
+      closeText: '&times;',
+      swipeClose: true,
+      showCounter: true,
+      fileExt: 'png|jpg|jpeg|gif|webp',
+      animationSlide: true,
+      animationSpeed: 250,
+      preloading: true,
+      enableKeyboard: true,
+      loop: true,
+      rel: false,
+      docClose: true,
+      swipeTolerance: 50,
+      className: 'simple-lightbox',
+      widthRatio: 0.8,
+      heightRatio: 0.9,
+      scaleImageToRatio: false,
+      disableRightClick: false,
+      disableScroll: true,
+      alertError: true,
+      alertErrorMessage: 'Image not found, next image will be loaded',
+      additionalHtml: false,
+      history: true,
+      throttleInterval: 0,
+      doubleTapZoom: 2,
+      maxZoom: 10,
+      htmlClass: 'has-lightbox',
+      rtl: false,
+      fixedClass: 'sl-fixed',
+      fadeSpeed: 300,
+      uniqueImages: true,
+      focus: true
+    });
+
+    _defineProperty(this, "transitionPrefix", void 0);
+
+    _defineProperty(this, "transitionCapable", false);
+
+    _defineProperty(this, "isTouchDevice", 'ontouchstart' in window);
+
+    _defineProperty(this, "initialLocationHash", void 0);
+
+    _defineProperty(this, "pushStateSupport", 'pushState' in history);
+
+    _defineProperty(this, "isOpen", false);
+
+    _defineProperty(this, "isAnimating", false);
+
+    _defineProperty(this, "isClosing", false);
+
+    _defineProperty(this, "isFadeIn", false);
+
+    _defineProperty(this, "urlChangedOnce", false);
+
+    _defineProperty(this, "hashReseted", false);
+
+    _defineProperty(this, "historyHasChanges", false);
+
+    _defineProperty(this, "historyUpdateTimeout", null);
+
+    _defineProperty(this, "currentImage", void 0);
+
+    _defineProperty(this, "eventNamespace", 'simplelightbox');
+
+    _defineProperty(this, "domNodes", {});
+
+    _defineProperty(this, "loadedImages", []);
+
+    _defineProperty(this, "initialImageIndex", 0);
+
+    _defineProperty(this, "currentImageIndex", 0);
+
+    _defineProperty(this, "initialSelector", null);
+
+    _defineProperty(this, "globalScrollbarWidth", 0);
+
+    _defineProperty(this, "controlCoordinates", {
+      swipeDiff: 0,
+      swipeYDiff: 0,
+      swipeStart: 0,
+      swipeEnd: 0,
+      swipeYStart: 0,
+      swipeYEnd: 0,
+      mousedown: false,
+      imageLeft: 0,
+      zoomed: false,
+      containerHeight: 0,
+      containerWidth: 0,
+      containerOffsetX: 0,
+      containerOffsetY: 0,
+      imgHeight: 0,
+      imgWidth: 0,
+      capture: false,
+      initialOffsetX: 0,
+      initialOffsetY: 0,
+      initialPointerOffsetX: 0,
+      initialPointerOffsetY: 0,
+      initialPointerOffsetX2: 0,
+      initialPointerOffsetY2: 0,
+      initialScale: 1,
+      initialPinchDistance: 0,
+      pointerOffsetX: 0,
+      pointerOffsetY: 0,
+      pointerOffsetX2: 0,
+      pointerOffsetY2: 0,
+      targetOffsetX: 0,
+      targetOffsetY: 0,
+      targetScale: 0,
+      pinchOffsetX: 0,
+      pinchOffsetY: 0,
+      limitOffsetX: 0,
+      limitOffsetY: 0,
+      scaleDifference: 0,
+      targetPinchDistance: 0,
+      touchCount: 0,
+      doubleTapped: false,
+      touchmoveCount: 0
+    });
+
+    this.options = Object.assign(this.defaultOptions, options);
+
+    if (typeof elements === 'string') {
+      this.initialSelector = elements;
+      this.elements = Array.from(document.querySelectorAll(elements));
+    } else {
+      this.elements = typeof elements.length !== 'undefined' && elements.length > 0 ? Array.from(elements) : [elements];
+    }
+
+    this.relatedElements = [];
+    this.transitionPrefix = this.calculateTransitionPrefix();
+    this.transitionCapable = this.transitionPrefix !== false;
+    this.initialLocationHash = this.hash; // this should be handled by attribute selector IMHO! => 'a[rel=bla]'...
+
+    if (this.options.rel) {
+      this.elements = this.getRelated(this.options.rel);
+    }
+
+    if (this.options.uniqueImages) {
+      var imgArr = [];
+      this.elements = Array.from(this.elements).filter(function (element) {
+        var src = element.getAttribute(_this.options.sourceAttr);
+
+        if (imgArr.indexOf(src) === -1) {
+          imgArr.push(src);
+          return true;
+        }
+
+        return false;
+      });
+    }
+
+    this.createDomNodes();
+
+    if (this.options.close) {
+      this.domNodes.wrapper.appendChild(this.domNodes.closeButton);
+    }
+
+    if (this.options.nav) {
+      this.domNodes.wrapper.appendChild(this.domNodes.navigation);
+    }
+
+    if (this.options.spinner) {
+      this.domNodes.wrapper.appendChild(this.domNodes.spinner);
+    }
+
+    this.addEventListener(this.elements, 'click.' + this.eventNamespace, function (event) {
+      if (_this.isValidLink(event.currentTarget)) {
+        event.preventDefault();
+
+        if (_this.isAnimating) {
+          return false;
+        }
+
+        _this.initialImageIndex = _this.elements.indexOf(event.currentTarget);
+
+        _this.openImage(event.currentTarget);
+      }
+    }); // close addEventListener click addEventListener doc
+
+    if (this.options.docClose) {
+      this.addEventListener(this.domNodes.wrapper, ['click.' + this.eventNamespace, 'touchstart.' + this.eventNamespace], function (event) {
+        if (_this.isOpen && event.target === event.currentTarget) {
+          _this.close();
+        }
+      });
+    } // disable rightclick
+
+
+    if (this.options.disableRightClick) {
+      this.addEventListener(document.body, 'contextmenu.' + this.eventNamespace, function (event) {
+        if (event.target.classList.contains('sl-overlay')) {
+          event.preventDefault();
+        }
+      });
+    } // keyboard-control
+
+
+    if (this.options.enableKeyboard) {
+      this.addEventListener(document.body, 'keyup.' + this.eventNamespace, this.throttle(function (event) {
+        _this.controlCoordinates.swipeDiff = 0; // keyboard control only if lightbox is open
+
+        if (_this.isAnimating && event.key === 'Escape') {
+          _this.currentImage.setAttribute('src', '');
+
+          _this.isAnimating = false;
+          return _this.close();
+        }
+
+        if (_this.isOpen) {
+          event.preventDefault();
+
+          if (event.key === 'Escape') {
+            _this.close();
+          }
+
+          if (!_this.isAnimating && ['ArrowLeft', 'ArrowRight'].indexOf(event.key) > -1) {
+            _this.loadImage(event.key === 'ArrowRight' ? 1 : -1);
+          }
+        }
+      }, this.options.throttleInterval));
+    }
+
+    this.addEvents();
+  }
+
+  _createClass(SimpleLightbox, [{
+    key: "createDomNodes",
+    value: function createDomNodes() {
+      this.domNodes.overlay = document.createElement('div');
+      this.domNodes.overlay.classList.add('sl-overlay');
+      this.domNodes.overlay.dataset.opacityTarget = ".7";
+      this.domNodes.closeButton = document.createElement('button');
+      this.domNodes.closeButton.classList.add('sl-close');
+      this.domNodes.closeButton.innerHTML = this.options.closeText;
+      this.domNodes.spinner = document.createElement('div');
+      this.domNodes.spinner.classList.add('sl-spinner');
+      this.domNodes.spinner.innerHTML = '<div></div>';
+      this.domNodes.navigation = document.createElement('div');
+      this.domNodes.navigation.classList.add('sl-navigation');
+      this.domNodes.navigation.innerHTML = "<button class=\"sl-prev\">".concat(this.options.navText[0], "</button><button class=\"sl-next\">").concat(this.options.navText[1], "</button>");
+      this.domNodes.counter = document.createElement('div');
+      this.domNodes.counter.classList.add('sl-counter');
+      this.domNodes.counter.innerHTML = '<span class="sl-current"></span>/<span class="sl-total"></span>';
+      this.domNodes.caption = document.createElement('div');
+      this.domNodes.caption.classList.add('sl-caption', 'pos-' + this.options.captionPosition);
+
+      if (this.options.captionClass) {
+        this.domNodes.caption.classList.add(this.options.captionClass);
+      }
+
+      this.domNodes.image = document.createElement('div');
+      this.domNodes.image.classList.add('sl-image');
+      this.domNodes.wrapper = document.createElement('div');
+      this.domNodes.wrapper.classList.add('sl-wrapper');
+      this.domNodes.wrapper.setAttribute('tabindex', -1);
+      this.domNodes.wrapper.setAttribute('role', 'dialog');
+      this.domNodes.wrapper.setAttribute('aria-hidden', false);
+
+      if (this.options.className) {
+        this.domNodes.wrapper.classList.add(this.options.className);
+      }
+
+      if (this.options.rtl) {
+        this.domNodes.wrapper.classList.add('sl-dir-rtl');
+      }
+    }
+  }, {
+    key: "throttle",
+    value: function throttle(func, limit) {
+      var inThrottle;
+      return function () {
+        if (!inThrottle) {
+          func.apply(this, arguments);
+          inThrottle = true;
+          setTimeout(function () {
+            return inThrottle = false;
+          }, limit);
+        }
+      };
+    }
+  }, {
+    key: "isValidLink",
+    value: function isValidLink(element) {
+      return !this.options.fileExt || 'pathname' in element && new RegExp('(' + this.options.fileExt + ')$', 'i').test(element.pathname);
+    }
+  }, {
+    key: "calculateTransitionPrefix",
+    value: function calculateTransitionPrefix() {
+      var s = (document.body || document.documentElement).style;
+      return 'transition' in s ? '' : 'WebkitTransition' in s ? '-webkit-' : 'MozTransition' in s ? '-moz-' : 'OTransition' in s ? '-o' : false;
+    }
+  }, {
+    key: "toggleScrollbar",
+    value: function toggleScrollbar(type) {
+      var scrollbarWidth = 0;
+      var fixedElements = [].slice.call(document.querySelectorAll('.' + this.options.fixedClass));
+
+      if (type === 'hide') {
+        var fullWindowWidth = window.innerWidth;
+
+        if (!fullWindowWidth) {
+          var documentElementRect = document.documentElement.getBoundingClientRect();
+          fullWindowWidth = documentElementRect.right - Math.abs(documentElementRect.left);
+        }
+
+        if (document.body.clientWidth < fullWindowWidth) {
+          var scrollDiv = document.createElement('div'),
+              paddingRight = parseInt(document.body.style.paddingRight || 0, 10);
+          scrollDiv.classList.add('sl-scrollbar-measure');
+          document.body.appendChild(scrollDiv);
+          scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth;
+          document.body.removeChild(scrollDiv);
+          document.body.dataset.originalPaddingRight = paddingRight;
+
+          if (scrollbarWidth > 0) {
+            document.body.classList.add('hidden-scroll');
+            document.body.style.paddingRight = paddingRight + scrollbarWidth + 'px';
+            fixedElements.forEach(function (element) {
+              var actualPadding = element.style.paddingRight;
+              var calculatedPadding = window.getComputedStyle(element)['padding-right'];
+              element.dataset.originalPaddingRight = actualPadding;
+              element.style.paddingRight = "".concat(parseFloat(calculatedPadding) + scrollbarWidth, "px");
+            });
+          }
+        }
+      } else {
+        document.body.classList.remove('hidden-scroll');
+        document.body.style.paddingRight = document.body.dataset.originalPaddingRight;
+        fixedElements.forEach(function (element) {
+          var padding = element.dataset.originalPaddingRight;
+
+          if (typeof padding !== 'undefined') {
+            element.style.paddingRight = padding;
+          }
+        });
+      }
+
+      return scrollbarWidth;
+    }
+  }, {
+    key: "close",
+    value: function close() {
+      var _this2 = this;
+
+      if (!this.isOpen || this.isAnimating || this.isClosing) {
+        return false;
+      }
+
+      this.isClosing = true;
+      var element = this.relatedElements[this.currentImageIndex];
+      element.dispatchEvent(new Event('close.simplelightbox'));
+
+      if (this.options.history) {
+        this.historyHasChanges = false;
+
+        if (!this.hashReseted) {
+          this.resetHash();
+        }
+      }
+
+      this.removeEventListener(document, 'focusin.' + this.eventNamespace);
+      this.fadeOut(document.querySelectorAll('.sl-image img, .sl-overlay, .sl-close, .sl-navigation, .sl-image .sl-caption, .sl-counter'), this.options.fadeSpeed, function () {
+        if (_this2.options.disableScroll) {
+          _this2.toggleScrollbar('show');
+        }
+
+        if (_this2.options.htmlClass && _this2.options.htmlClass !== '') {
+          document.querySelector('html').classList.remove(_this2.options.htmlClass);
+        }
+
+        document.body.removeChild(_this2.domNodes.wrapper);
+        document.body.removeChild(_this2.domNodes.overlay);
+        _this2.domNodes.additionalHtml = null;
+        element.dispatchEvent(new Event('closed.simplelightbox'));
+        _this2.isClosing = false;
+      });
+      this.currentImage = null;
+      this.isOpen = false;
+      this.isAnimating = false; // reset touchcontrol coordinates
+
+      for (var key in this.controlCoordinates) {
+        this.controlCoordinates[key] = 0;
+      }
+
+      this.controlCoordinates.mousedown = false;
+      this.controlCoordinates.zoomed = false;
+      this.controlCoordinates.capture = false;
+      this.controlCoordinates.initialScale = this.minMax(1, 1, this.options.maxZoom);
+      this.controlCoordinates.doubleTapped = false;
+    }
+  }, {
+    key: "preload",
+    value: function preload() {
+      var _this3 = this;
+
+      var index = this.currentImageIndex,
+          length = this.relatedElements.length,
+          next = index + 1 < 0 ? length - 1 : index + 1 >= length - 1 ? 0 : index + 1,
+          prev = index - 1 < 0 ? length - 1 : index - 1 >= length - 1 ? 0 : index - 1,
+          nextImage = new Image(),
+          prevImage = new Image();
+      nextImage.addEventListener('load', function (event) {
+        var src = event.target.getAttribute('src');
+
+        if (_this3.loadedImages.indexOf(src) === -1) {
+          //is this condition even required... setting multiple times will not change usage...
+          _this3.loadedImages.push(src);
+        }
+
+        _this3.relatedElements[index].dispatchEvent(new Event('nextImageLoaded.' + _this3.eventNamespace));
+      });
+      nextImage.setAttribute('src', this.relatedElements[next].getAttribute(this.options.sourceAttr));
+      prevImage.addEventListener('load', function (event) {
+        var src = event.target.getAttribute('src');
+
+        if (_this3.loadedImages.indexOf(src) === -1) {
+          _this3.loadedImages.push(src);
+        }
+
+        _this3.relatedElements[index].dispatchEvent(new Event('prevImageLoaded.' + _this3.eventNamespace));
+      });
+      prevImage.setAttribute('src', this.relatedElements[prev].getAttribute(this.options.sourceAttr));
+    }
+  }, {
+    key: "loadImage",
+    value: function loadImage(direction) {
+      var _this4 = this;
+
+      var slideDirection = direction;
+
+      if (this.options.rtl) {
+        direction = -direction;
+      }
+
+      this.relatedElements[this.currentImageIndex].dispatchEvent(new Event('change.' + this.eventNamespace));
+      this.relatedElements[this.currentImageIndex].dispatchEvent(new Event((direction === 1 ? 'next' : 'prev') + '.' + this.eventNamespace));
+      var newIndex = this.currentImageIndex + direction;
+
+      if (this.isAnimating || (newIndex < 0 || newIndex >= this.relatedElements.length) && this.options.loop === false) {
+        return false;
+      }
+
+      this.currentImageIndex = newIndex < 0 ? this.relatedElements.length - 1 : newIndex > this.relatedElements.length - 1 ? 0 : newIndex;
+      this.domNodes.counter.querySelector('.sl-current').innerHTML = this.currentImageIndex + 1;
+
+      if (this.options.animationSlide) {
+        this.slide(this.options.animationSpeed / 1000, -100 * slideDirection - this.controlCoordinates.swipeDiff + 'px');
+      }
+
+      this.fadeOut(this.domNodes.image, this.options.fadeSpeed, function () {
+        _this4.isAnimating = true;
+
+        if (!_this4.isClosing) {
+          setTimeout(function () {
+            var element = _this4.relatedElements[_this4.currentImageIndex];
+
+            _this4.currentImage.setAttribute('src', element.getAttribute(_this4.options.sourceAttr));
+
+            if (_this4.loadedImages.indexOf(element.getAttribute(_this4.options.sourceAttr)) === -1) {
+              _this4.show(_this4.domNodes.spinner);
+            }
+
+            if (_this4.domNodes.image.contains(_this4.domNodes.caption)) {
+              _this4.domNodes.image.removeChild(_this4.domNodes.caption);
+            }
+
+            _this4.adjustImage(slideDirection);
+
+            if (_this4.options.preloading) _this4.preload();
+          }, 100);
+        } else {
+          _this4.isAnimating = false;
+        }
+      });
+    }
+  }, {
+    key: "adjustImage",
+    value: function adjustImage(direction) {
+      var _this5 = this;
+
+      if (!this.currentImage) {
+        return false;
+      }
+
+      var tmpImage = new Image(),
+          windowWidth = window.innerWidth * this.options.widthRatio,
+          windowHeight = window.innerHeight * this.options.heightRatio;
+      tmpImage.setAttribute('src', this.currentImage.getAttribute('src'));
+      this.currentImage.dataset.scale = 1;
+      this.currentImage.dataset.translateX = 0;
+      this.currentImage.dataset.translateY = 0;
+      this.zoomPanElement(0, 0, 1);
+      tmpImage.addEventListener('error', function (event) {
+        _this5.relatedElements[_this5.currentImageIndex].dispatchEvent(new Event('error.' + _this5.eventNamespace));
+
+        _this5.isAnimating = false;
+        _this5.isOpen = false;
+        _this5.domNodes.spinner.style.display = 'none';
+        var dirIsDefined = direction === 1 || direction === -1;
+
+        if (_this5.initialImageIndex === _this5.currentImageIndex && dirIsDefined) {
+          return _this5.close();
+        }
+
+        if (_this5.options.alertError) {
+          alert(_this5.options.alertErrorMessage);
+        }
+
+        _this5.loadImage(dirIsDefined ? direction : 1);
+      });
+      tmpImage.addEventListener('load', function (event) {
+        if (typeof direction !== 'undefined') {
+          _this5.relatedElements[_this5.currentImageIndex].dispatchEvent(new Event('changed.' + _this5.eventNamespace));
+
+          _this5.relatedElements[_this5.currentImageIndex].dispatchEvent(new Event((direction === 1 ? 'nextDone' : 'prevDone') + '.' + _this5.eventNamespace));
+        } // history
+
+
+        if (_this5.options.history) {
+          _this5.updateURL();
+        }
+
+        if (_this5.loadedImages.indexOf(_this5.currentImage.getAttribute('src')) === -1) {
+          _this5.loadedImages.push(_this5.currentImage.getAttribute('src'));
+        }
+
+        var imageWidth = event.target.width,
+            imageHeight = event.target.height;
+
+        if (_this5.options.scaleImageToRatio || imageWidth > windowWidth || imageHeight > windowHeight) {
+          var ratio = imageWidth / imageHeight > windowWidth / windowHeight ? imageWidth / windowWidth : imageHeight / windowHeight;
+          imageWidth /= ratio;
+          imageHeight /= ratio;
+        }
+
+        _this5.domNodes.image.style.top = (window.innerHeight - imageHeight) / 2 + 'px';
+        _this5.domNodes.image.style.left = (window.innerWidth - imageWidth - _this5.globalScrollbarWidth) / 2 + 'px';
+        _this5.domNodes.image.style.width = imageWidth + 'px';
+        _this5.domNodes.image.style.height = imageHeight + 'px';
+        _this5.domNodes.spinner.style.display = 'none';
+
+        if (_this5.options.focus) {
+          _this5.forceFocus();
+        }
+
+        _this5.fadeIn(_this5.currentImage, _this5.options.fadeSpeed, function () {
+          if (_this5.options.focus) {
+            _this5.domNodes.wrapper.focus();
+          }
+        });
+
+        _this5.isOpen = true;
+        var captionContainer, captionText;
+
+        if (typeof _this5.options.captionSelector === 'string') {
+          captionContainer = _this5.options.captionSelector === 'self' ? _this5.relatedElements[_this5.currentImageIndex] : _this5.relatedElements[_this5.currentImageIndex].querySelector(_this5.options.captionSelector);
+        } else if (typeof _this5.options.captionSelector === 'function') {
+          captionContainer = _this5.options.captionSelector(_this5.relatedElements[_this5.currentImageIndex]);
+        }
+
+        if (_this5.options.captions && captionContainer) {
+          if (_this5.options.captionType === 'data') {
+            captionText = captionContainer.dataset[_this5.options.captionsData];
+          } else if (_this5.options.captionType === 'text') {
+            captionText = captionContainer.innerHTML;
+          } else {
+            captionText = captionContainer.getAttribute(_this5.options.captionsData);
+          }
+        }
+
+        if (!_this5.options.loop) {
+          if (_this5.currentImageIndex === 0) {
+            _this5.hide(_this5.domNodes.navigation.querySelector('.sl-prev'));
+          }
+
+          if (_this5.currentImageIndex >= _this5.relatedElements.length - 1) {
+            _this5.hide(_this5.domNodes.navigation.querySelector('.sl-next'));
+          }
+
+          if (_this5.currentImageIndex > 0) {
+            _this5.show(_this5.domNodes.navigation.querySelector('.sl-prev'));
+          }
+
+          if (_this5.currentImageIndex < _this5.relatedElements.length - 1) {
+            _this5.show(_this5.domNodes.navigation.querySelector('.sl-next'));
+          }
+        }
+
+        if (_this5.relatedElements.length === 1) {
+          _this5.hide(_this5.domNodes.navigation.querySelectorAll('.sl-prev, .sl-next'));
+        } else {
+          _this5.show(_this5.domNodes.navigation.querySelectorAll('.sl-prev, .sl-next'));
+        }
+
+        if (direction === 1 || direction === -1) {
+          if (_this5.options.animationSlide) {
+            _this5.slide(0, 100 * direction + 'px');
+
+            setTimeout(function () {
+              _this5.slide(_this5.options.animationSpeed / 1000, 0 + 'px');
+            }, 50);
+          }
+
+          _this5.fadeIn(_this5.domNodes.image, _this5.options.fadeSpeed, function () {
+            _this5.isAnimating = false;
+
+            _this5.setCaption(captionText, imageWidth);
+          });
+        } else {
+          _this5.isAnimating = false;
+
+          _this5.setCaption(captionText, imageWidth);
+        }
+
+        if (_this5.options.additionalHtml && !_this5.domNodes.additionalHtml) {
+          _this5.domNodes.additionalHtml = document.createElement('div');
+
+          _this5.domNodes.additionalHtml.classList.add('sl-additional-html');
+
+          _this5.domNodes.additionalHtml.innerHTML = _this5.options.additionalHtml;
+
+          _this5.domNodes.image.appendChild(_this5.domNodes.additionalHtml);
+        }
+      });
+    }
+  }, {
+    key: "zoomPanElement",
+    value: function zoomPanElement(targetOffsetX, targetOffsetY, targetScale) {
+      this.currentImage.style[this.transitionPrefix + 'transform'] = 'translate(' + targetOffsetX + ',' + targetOffsetY + ') scale(' + targetScale + ')';
+    }
+  }, {
+    key: "minMax",
+    value: function minMax(value, min, max) {
+      return value < min ? min : value > max ? max : value;
+    }
+  }, {
+    key: "setZoomData",
+    value: function setZoomData(initialScale, targetOffsetX, targetOffsetY) {
+      this.currentImage.dataset.scale = initialScale;
+      this.currentImage.dataset.translateX = targetOffsetX;
+      this.currentImage.dataset.translateY = targetOffsetY;
+    }
+  }, {
+    key: "hashchangeHandler",
+    value: function hashchangeHandler() {
+      if (this.isOpen && this.hash === this.initialLocationHash) {
+        this.hashReseted = true;
+        this.close();
+      }
+    }
+  }, {
+    key: "addEvents",
+    value: function addEvents() {
+      var _this6 = this;
+
+      // resize/responsive
+      this.addEventListener(window, 'resize.' + this.eventNamespace, function (event) {
+        //this.adjustImage.bind(this)
+        if (_this6.isOpen) {
+          _this6.adjustImage();
+        }
+      });
+      this.addEventListener(this.domNodes.closeButton, ['click.' + this.eventNamespace, 'touchstart.' + this.eventNamespace], this.close.bind(this));
+
+      if (this.options.history) {
+        setTimeout(function () {
+          _this6.addEventListener(window, 'hashchange.' + _this6.eventNamespace, function (event) {
+            if (_this6.isOpen) {
+              _this6.hashchangeHandler();
+            }
+          });
+        }, 40);
+      }
+
+      this.addEventListener(this.domNodes.navigation.getElementsByTagName('button'), 'click.' + this.eventNamespace, function (event) {
+        if (!event.currentTarget.tagName.match(/button/i)) {
+          return true;
+        }
+
+        event.preventDefault();
+        _this6.controlCoordinates.swipeDiff = 0;
+
+        _this6.loadImage(event.currentTarget.classList.contains('sl-next') ? 1 : -1);
+      });
+      this.addEventListener(this.domNodes.image, ['touchstart.' + this.eventNamespace, 'mousedown.' + this.eventNamespace], function (event) {
+        if (event.target.tagName === 'A' && event.type === 'touchstart') {
+          return true;
+        }
+
+        if (event.type === 'mousedown') {
+          _this6.controlCoordinates.initialPointerOffsetX = event.clientX;
+          _this6.controlCoordinates.initialPointerOffsetY = event.clientY;
+          _this6.controlCoordinates.containerHeight = _this6.getDimensions(_this6.domNodes.image).height;
+          _this6.controlCoordinates.containerWidth = _this6.getDimensions(_this6.domNodes.image).width;
+          _this6.controlCoordinates.imgHeight = _this6.getDimensions(_this6.currentImage).height;
+          _this6.controlCoordinates.imgWidth = _this6.getDimensions(_this6.currentImage).width;
+          _this6.controlCoordinates.containerOffsetX = _this6.domNodes.image.offsetLeft;
+          _this6.controlCoordinates.containerOffsetY = _this6.domNodes.image.offsetTop;
+          _this6.controlCoordinates.initialOffsetX = parseFloat(_this6.currentImage.dataset.translateX);
+          _this6.controlCoordinates.initialOffsetY = parseFloat(_this6.currentImage.dataset.translateY);
+          _this6.controlCoordinates.capture = true;
+        } else {
+          _this6.controlCoordinates.touchCount = event.touches.length;
+          _this6.controlCoordinates.initialPointerOffsetX = event.touches[0].clientX;
+          _this6.controlCoordinates.initialPointerOffsetY = event.touches[0].clientY;
+          _this6.controlCoordinates.containerHeight = _this6.getDimensions(_this6.domNodes.image).height;
+          _this6.controlCoordinates.containerWidth = _this6.getDimensions(_this6.domNodes.image).width;
+          _this6.controlCoordinates.imgHeight = _this6.getDimensions(_this6.currentImage).height;
+          _this6.controlCoordinates.imgWidth = _this6.getDimensions(_this6.currentImage).width;
+          _this6.controlCoordinates.containerOffsetX = _this6.domNodes.image.offsetLeft;
+          _this6.controlCoordinates.containerOffsetY = _this6.domNodes.image.offsetTop;
+
+          if (_this6.controlCoordinates.touchCount === 1)
+            /* Single touch */
+            {
+              if (!_this6.controlCoordinates.doubleTapped) {
+                _this6.controlCoordinates.doubleTapped = true;
+                setTimeout(function () {
+                  _this6.controlCoordinates.doubleTapped = false;
+                }, 300);
+              } else {
+                _this6.currentImage.classList.add('sl-transition');
+
+                if (!_this6.controlCoordinates.zoomed) {
+                  _this6.controlCoordinates.initialScale = _this6.options.doubleTapZoom;
+
+                  _this6.setZoomData(_this6.controlCoordinates.initialScale, 0, 0);
+
+                  _this6.zoomPanElement(0 + "px", 0 + "px", _this6.controlCoordinates.initialScale);
+
+                  if (!_this6.domNodes.caption.style.opacity && _this6.domNodes.caption.style.display !== 'none') {
+                    _this6.fadeOut(_this6.domNodes.caption, _this6.options.fadeSpeed);
+                  }
+
+                  _this6.controlCoordinates.zoomed = true;
+                } else {
+                  _this6.controlCoordinates.initialScale = 1;
+
+                  _this6.setZoomData(_this6.controlCoordinates.initialScale, 0, 0);
+
+                  _this6.zoomPanElement(0 + "px", 0 + "px", _this6.controlCoordinates.initialScale);
+
+                  _this6.controlCoordinates.zoomed = false;
+                }
+
+                setTimeout(function () {
+                  if (_this6.currentImage) {
+                    _this6.currentImage.classList.remove('sl-transition');
+                  }
+                }, 200);
+                return false;
+              }
+
+              _this6.controlCoordinates.initialOffsetX = parseFloat(_this6.currentImage.dataset.translateX);
+              _this6.controlCoordinates.initialOffsetY = parseFloat(_this6.currentImage.dataset.translateY);
+            } else if (_this6.controlCoordinates.touchCount === 2)
+            /* Pinch */
+            {
+              _this6.controlCoordinates.initialPointerOffsetX2 = event.touches[1].clientX;
+              _this6.controlCoordinates.initialPointerOffsetY2 = event.touches[1].clientY;
+              _this6.controlCoordinates.initialOffsetX = parseFloat(_this6.currentImage.dataset.translateX);
+              _this6.controlCoordinates.initialOffsetY = parseFloat(_this6.currentImage.dataset.translateY);
+              _this6.controlCoordinates.pinchOffsetX = (_this6.controlCoordinates.initialPointerOffsetX + _this6.controlCoordinates.initialPointerOffsetX2) / 2;
+              _this6.controlCoordinates.pinchOffsetY = (_this6.controlCoordinates.initialPointerOffsetY + _this6.controlCoordinates.initialPointerOffsetY2) / 2;
+              _this6.controlCoordinates.initialPinchDistance = Math.sqrt((_this6.controlCoordinates.initialPointerOffsetX - _this6.controlCoordinates.initialPointerOffsetX2) * (_this6.controlCoordinates.initialPointerOffsetX - _this6.controlCoordinates.initialPointerOffsetX2) + (_this6.controlCoordinates.initialPointerOffsetY - _this6.controlCoordinates.initialPointerOffsetY2) * (_this6.controlCoordinates.initialPointerOffsetY - _this6.controlCoordinates.initialPointerOffsetY2));
+            }
+
+          _this6.controlCoordinates.capture = true;
+        }
+
+        if (_this6.controlCoordinates.mousedown) return true;
+
+        if (_this6.transitionCapable) {
+          _this6.controlCoordinates.imageLeft = parseInt(_this6.domNodes.image.style.left, 10);
+        }
+
+        _this6.controlCoordinates.mousedown = true;
+        _this6.controlCoordinates.swipeDiff = 0;
+        _this6.controlCoordinates.swipeYDiff = 0;
+        _this6.controlCoordinates.swipeStart = event.pageX || event.touches[0].pageX;
+        _this6.controlCoordinates.swipeYStart = event.pageY || event.touches[0].pageY;
+        return false;
+      });
+      this.addEventListener(this.domNodes.image, ['touchmove.' + this.eventNamespace, 'mousemove.' + this.eventNamespace, 'MSPointerMove'], function (event) {
+        if (!_this6.controlCoordinates.mousedown) {
+          return true;
+        }
+
+        event.preventDefault();
+
+        if (event.type === 'touchmove') {
+          if (_this6.controlCoordinates.capture === false) {
+            return false;
+          }
+
+          _this6.controlCoordinates.pointerOffsetX = event.touches[0].clientX;
+          _this6.controlCoordinates.pointerOffsetY = event.touches[0].clientY;
+          _this6.controlCoordinates.touchCount = event.touches.length;
+          _this6.controlCoordinates.touchmoveCount++;
+
+          if (_this6.controlCoordinates.touchCount > 1)
+            /* Pinch */
+            {
+              _this6.controlCoordinates.pointerOffsetX2 = event.touches[1].clientX;
+              _this6.controlCoordinates.pointerOffsetY2 = event.touches[1].clientY;
+              _this6.controlCoordinates.targetPinchDistance = Math.sqrt((_this6.controlCoordinates.pointerOffsetX - _this6.controlCoordinates.pointerOffsetX2) * (_this6.controlCoordinates.pointerOffsetX - _this6.controlCoordinates.pointerOffsetX2) + (_this6.controlCoordinates.pointerOffsetY - _this6.controlCoordinates.pointerOffsetY2) * (_this6.controlCoordinates.pointerOffsetY - _this6.controlCoordinates.pointerOffsetY2));
+
+              if (_this6.controlCoordinates.initialPinchDistance === null) {
+                _this6.controlCoordinates.initialPinchDistance = _this6.controlCoordinates.targetPinchDistance;
+              }
+
+              if (Math.abs(_this6.controlCoordinates.initialPinchDistance - _this6.controlCoordinates.targetPinchDistance) >= 1) {
+                /* Initialize helpers */
+                _this6.controlCoordinates.targetScale = _this6.minMax(_this6.controlCoordinates.targetPinchDistance / _this6.controlCoordinates.initialPinchDistance * _this6.controlCoordinates.initialScale, 1, _this6.options.maxZoom);
+                _this6.controlCoordinates.limitOffsetX = (_this6.controlCoordinates.imgWidth * _this6.controlCoordinates.targetScale - _this6.controlCoordinates.containerWidth) / 2;
+                _this6.controlCoordinates.limitOffsetY = (_this6.controlCoordinates.imgHeight * _this6.controlCoordinates.targetScale - _this6.controlCoordinates.containerHeight) / 2;
+                _this6.controlCoordinates.scaleDifference = _this6.controlCoordinates.targetScale - _this6.controlCoordinates.initialScale;
+                _this6.controlCoordinates.targetOffsetX = _this6.controlCoordinates.imgWidth * _this6.controlCoordinates.targetScale <= _this6.controlCoordinates.containerWidth ? 0 : _this6.minMax(_this6.controlCoordinates.initialOffsetX - (_this6.controlCoordinates.pinchOffsetX - _this6.controlCoordinates.containerOffsetX - _this6.controlCoordinates.containerWidth / 2 - _this6.controlCoordinates.initialOffsetX) / (_this6.controlCoordinates.targetScale - _this6.controlCoordinates.scaleDifference) * _this6.controlCoordinates.scaleDifference, _this6.controlCoordinates.limitOffsetX * -1, _this6.controlCoordinates.limitOffsetX);
+                _this6.controlCoordinates.targetOffsetY = _this6.controlCoordinates.imgHeight * _this6.controlCoordinates.targetScale <= _this6.controlCoordinates.containerHeight ? 0 : _this6.minMax(_this6.controlCoordinates.initialOffsetY - (_this6.controlCoordinates.pinchOffsetY - _this6.controlCoordinates.containerOffsetY - _this6.controlCoordinates.containerHeight / 2 - _this6.controlCoordinates.initialOffsetY) / (_this6.controlCoordinates.targetScale - _this6.controlCoordinates.scaleDifference) * _this6.controlCoordinates.scaleDifference, _this6.controlCoordinates.limitOffsetY * -1, _this6.controlCoordinates.limitOffsetY);
+
+                _this6.zoomPanElement(_this6.controlCoordinates.targetOffsetX + "px", _this6.controlCoordinates.targetOffsetY + "px", _this6.controlCoordinates.targetScale);
+
+                if (_this6.controlCoordinates.targetScale > 1) {
+                  _this6.controlCoordinates.zoomed = true;
+
+                  if (!_this6.domNodes.caption.style.opacity && _this6.domNodes.caption.style.display !== 'none') {
+                    _this6.fadeOut(_this6.domNodes.caption, _this6.options.fadeSpeed);
+                  }
+                }
+
+                _this6.controlCoordinates.initialPinchDistance = _this6.controlCoordinates.targetPinchDistance;
+                _this6.controlCoordinates.initialScale = _this6.controlCoordinates.targetScale;
+                _this6.controlCoordinates.initialOffsetX = _this6.controlCoordinates.targetOffsetX;
+                _this6.controlCoordinates.initialOffsetY = _this6.controlCoordinates.targetOffsetY;
+              }
+            } else {
+            _this6.controlCoordinates.targetScale = _this6.controlCoordinates.initialScale;
+            _this6.controlCoordinates.limitOffsetX = (_this6.controlCoordinates.imgWidth * _this6.controlCoordinates.targetScale - _this6.controlCoordinates.containerWidth) / 2;
+            _this6.controlCoordinates.limitOffsetY = (_this6.controlCoordinates.imgHeight * _this6.controlCoordinates.targetScale - _this6.controlCoordinates.containerHeight) / 2;
+            _this6.controlCoordinates.targetOffsetX = _this6.controlCoordinates.imgWidth * _this6.controlCoordinates.targetScale <= _this6.controlCoordinates.containerWidth ? 0 : _this6.minMax(_this6.controlCoordinates.pointerOffsetX - (_this6.controlCoordinates.initialPointerOffsetX - _this6.controlCoordinates.initialOffsetX), _this6.controlCoordinates.limitOffsetX * -1, _this6.controlCoordinates.limitOffsetX);
+            _this6.controlCoordinates.targetOffsetY = _this6.controlCoordinates.imgHeight * _this6.controlCoordinates.targetScale <= _this6.controlCoordinates.containerHeight ? 0 : _this6.minMax(_this6.controlCoordinates.pointerOffsetY - (_this6.controlCoordinates.initialPointerOffsetY - _this6.controlCoordinates.initialOffsetY), _this6.controlCoordinates.limitOffsetY * -1, _this6.controlCoordinates.limitOffsetY);
+
+            if (Math.abs(_this6.controlCoordinates.targetOffsetX) === Math.abs(_this6.controlCoordinates.limitOffsetX)) {
+              _this6.controlCoordinates.initialOffsetX = _this6.controlCoordinates.targetOffsetX;
+              _this6.controlCoordinates.initialPointerOffsetX = _this6.controlCoordinates.pointerOffsetX;
+            }
+
+            if (Math.abs(_this6.controlCoordinates.targetOffsetY) === Math.abs(_this6.controlCoordinates.limitOffsetY)) {
+              _this6.controlCoordinates.initialOffsetY = _this6.controlCoordinates.targetOffsetY;
+              _this6.controlCoordinates.initialPointerOffsetY = _this6.controlCoordinates.pointerOffsetY;
+            }
+
+            _this6.setZoomData(_this6.controlCoordinates.initialScale, _this6.controlCoordinates.targetOffsetX, _this6.controlCoordinates.targetOffsetY);
+
+            _this6.zoomPanElement(_this6.controlCoordinates.targetOffsetX + "px", _this6.controlCoordinates.targetOffsetY + "px", _this6.controlCoordinates.targetScale);
+          }
+        }
+        /* Mouse Move implementation */
+
+
+        if (event.type === 'mousemove' && _this6.controlCoordinates.mousedown) {
+          if (event.type == 'touchmove') return true;
+          if (_this6.controlCoordinates.capture === false) return false;
+          _this6.controlCoordinates.pointerOffsetX = event.clientX;
+          _this6.controlCoordinates.pointerOffsetY = event.clientY;
+          _this6.controlCoordinates.targetScale = _this6.controlCoordinates.initialScale;
+          _this6.controlCoordinates.limitOffsetX = (_this6.controlCoordinates.imgWidth * _this6.controlCoordinates.targetScale - _this6.controlCoordinates.containerWidth) / 2;
+          _this6.controlCoordinates.limitOffsetY = (_this6.controlCoordinates.imgHeight * _this6.controlCoordinates.targetScale - _this6.controlCoordinates.containerHeight) / 2;
+          _this6.controlCoordinates.targetOffsetX = _this6.controlCoordinates.imgWidth * _this6.controlCoordinates.targetScale <= _this6.controlCoordinates.containerWidth ? 0 : _this6.minMax(_this6.controlCoordinates.pointerOffsetX - (_this6.controlCoordinates.initialPointerOffsetX - _this6.controlCoordinates.initialOffsetX), _this6.controlCoordinates.limitOffsetX * -1, _this6.controlCoordinates.limitOffsetX);
+          _this6.controlCoordinates.targetOffsetY = _this6.controlCoordinates.imgHeight * _this6.controlCoordinates.targetScale <= _this6.controlCoordinates.containerHeight ? 0 : _this6.minMax(_this6.controlCoordinates.pointerOffsetY - (_this6.controlCoordinates.initialPointerOffsetY - _this6.controlCoordinates.initialOffsetY), _this6.controlCoordinates.limitOffsetY * -1, _this6.controlCoordinates.limitOffsetY);
+
+          if (Math.abs(_this6.controlCoordinates.targetOffsetX) === Math.abs(_this6.controlCoordinates.limitOffsetX)) {
+            _this6.controlCoordinates.initialOffsetX = _this6.controlCoordinates.targetOffsetX;
+            _this6.controlCoordinates.initialPointerOffsetX = _this6.controlCoordinates.pointerOffsetX;
+          }
+
+          if (Math.abs(_this6.controlCoordinates.targetOffsetY) === Math.abs(_this6.controlCoordinates.limitOffsetY)) {
+            _this6.controlCoordinates.initialOffsetY = _this6.controlCoordinates.targetOffsetY;
+            _this6.controlCoordinates.initialPointerOffsetY = _this6.controlCoordinates.pointerOffsetY;
+          }
+
+          _this6.setZoomData(_this6.controlCoordinates.initialScale, _this6.controlCoordinates.targetOffsetX, _this6.controlCoordinates.targetOffsetY);
+
+          _this6.zoomPanElement(_this6.controlCoordinates.targetOffsetX + "px", _this6.controlCoordinates.targetOffsetY + "px", _this6.controlCoordinates.targetScale);
+        }
+
+        if (!_this6.controlCoordinates.zoomed) {
+          _this6.controlCoordinates.swipeEnd = event.pageX || event.touches[0].pageX;
+          _this6.controlCoordinates.swipeYEnd = event.pageY || event.touches[0].pageY;
+          _this6.controlCoordinates.swipeDiff = _this6.controlCoordinates.swipeStart - _this6.controlCoordinates.swipeEnd;
+          _this6.controlCoordinates.swipeYDiff = _this6.controlCoordinates.swipeYStart - _this6.controlCoordinates.swipeYEnd;
+
+          if (_this6.options.animationSlide) {
+            _this6.slide(0, -_this6.controlCoordinates.swipeDiff + 'px');
+          }
+        }
+      });
+      this.addEventListener(this.domNodes.image, ['touchend.' + this.eventNamespace, 'mouseup.' + this.eventNamespace, 'touchcancel.' + this.eventNamespace, 'mouseleave.' + this.eventNamespace, 'pointerup', 'pointercancel', 'MSPointerUp', 'MSPointerCancel'], function (event) {
+        if (_this6.isTouchDevice && event.type === 'touchend') {
+          _this6.controlCoordinates.touchCount = event.touches.length;
+
+          if (_this6.controlCoordinates.touchCount === 0)
+            /* No touch */
+            {
+              /* Set attributes */
+              if (_this6.currentImage) {
+                _this6.setZoomData(_this6.controlCoordinates.initialScale, _this6.controlCoordinates.targetOffsetX, _this6.controlCoordinates.targetOffsetY);
+              }
+
+              if (_this6.controlCoordinates.initialScale === 1) {
+                _this6.controlCoordinates.zoomed = false;
+
+                if (_this6.domNodes.caption.style.display === 'none') {
+                  _this6.fadeIn(_this6.domNodes.caption, _this6.options.fadeSpeed);
+                }
+              }
+
+              _this6.controlCoordinates.initialPinchDistance = null;
+              _this6.controlCoordinates.capture = false;
+            } else if (_this6.controlCoordinates.touchCount === 1)
+            /* Single touch */
+            {
+              _this6.controlCoordinates.initialPointerOffsetX = event.touches[0].clientX;
+              _this6.controlCoordinates.initialPointerOffsetY = event.touches[0].clientY;
+            } else if (_this6.controlCoordinates.touchCount > 1)
+            /* Pinch */
+            {
+              _this6.controlCoordinates.initialPinchDistance = null;
+            }
+        }
+
+        if (_this6.controlCoordinates.mousedown) {
+          _this6.controlCoordinates.mousedown = false;
+          var possibleDir = true;
+
+          if (!_this6.options.loop) {
+            if (_this6.currentImageIndex === 0 && _this6.controlCoordinates.swipeDiff < 0) {
+              possibleDir = false;
+            }
+
+            if (_this6.currentImageIndex >= _this6.relatedElements.length - 1 && _this6.controlCoordinates.swipeDiff > 0) {
+              possibleDir = false;
+            }
+          }
+
+          if (Math.abs(_this6.controlCoordinates.swipeDiff) > _this6.options.swipeTolerance && possibleDir) {
+            _this6.loadImage(_this6.controlCoordinates.swipeDiff > 0 ? 1 : -1);
+          } else if (_this6.options.animationSlide) {
+            _this6.slide(_this6.options.animationSpeed / 1000, 0 + 'px');
+          }
+
+          if (_this6.options.swipeClose && Math.abs(_this6.controlCoordinates.swipeYDiff) > 50 && Math.abs(_this6.controlCoordinates.swipeDiff) < _this6.options.swipeTolerance) {
+            _this6.close();
+          }
+        }
+      });
+      this.addEventListener(this.domNodes.image, ['dblclick'], function (event) {
+        if (_this6.isTouchDevice) return;
+        _this6.controlCoordinates.initialPointerOffsetX = event.clientX;
+        _this6.controlCoordinates.initialPointerOffsetY = event.clientY;
+        _this6.controlCoordinates.containerHeight = _this6.getDimensions(_this6.domNodes.image).height;
+        _this6.controlCoordinates.containerWidth = _this6.getDimensions(_this6.domNodes.image).width;
+        _this6.controlCoordinates.imgHeight = _this6.getDimensions(_this6.currentImage).height;
+        _this6.controlCoordinates.imgWidth = _this6.getDimensions(_this6.currentImage).width;
+        _this6.controlCoordinates.containerOffsetX = _this6.domNodes.image.offsetLeft;
+        _this6.controlCoordinates.containerOffsetY = _this6.domNodes.image.offsetTop;
+
+        _this6.currentImage.classList.add('sl-transition');
+
+        if (!_this6.controlCoordinates.zoomed) {
+          _this6.controlCoordinates.initialScale = _this6.options.doubleTapZoom;
+
+          _this6.setZoomData(_this6.controlCoordinates.initialScale, 0, 0);
+
+          _this6.zoomPanElement(0 + "px", 0 + "px", _this6.controlCoordinates.initialScale);
+
+          if (!_this6.domNodes.caption.style.opacity && _this6.domNodes.caption.style.display !== 'none') {
+            _this6.fadeOut(_this6.domNodes.caption, _this6.options.fadeSpeed);
+          }
+
+          _this6.controlCoordinates.zoomed = true;
+        } else {
+          _this6.controlCoordinates.initialScale = 1;
+
+          _this6.setZoomData(_this6.controlCoordinates.initialScale, 0, 0);
+
+          _this6.zoomPanElement(0 + "px", 0 + "px", _this6.controlCoordinates.initialScale);
+
+          _this6.controlCoordinates.zoomed = false;
+
+          if (_this6.domNodes.caption.style.display === 'none') {
+            _this6.fadeIn(_this6.domNodes.caption, _this6.options.fadeSpeed);
+          }
+        }
+
+        setTimeout(function () {
+          if (_this6.currentImage) {
+            _this6.currentImage.classList.remove('sl-transition');
+          }
+        }, 200);
+        _this6.controlCoordinates.capture = true;
+        return false;
+      });
+    }
+  }, {
+    key: "getDimensions",
+    value: function getDimensions(element) {
+      var styles = window.getComputedStyle(element),
+          height = element.offsetHeight,
+          width = element.offsetWidth,
+          borderTopWidth = parseFloat(styles.borderTopWidth),
+          borderBottomWidth = parseFloat(styles.borderBottomWidth),
+          paddingTop = parseFloat(styles.paddingTop),
+          paddingBottom = parseFloat(styles.paddingBottom),
+          borderLeftWidth = parseFloat(styles.borderLeftWidth),
+          borderRightWidth = parseFloat(styles.borderRightWidth),
+          paddingLeft = parseFloat(styles.paddingLeft),
+          paddingRight = parseFloat(styles.paddingRight);
+      return {
+        height: height - borderBottomWidth - borderTopWidth - paddingTop - paddingBottom,
+        width: width - borderLeftWidth - borderRightWidth - paddingLeft - paddingRight
+      };
+    }
+  }, {
+    key: "updateHash",
+    value: function updateHash() {
+      var newHash = 'pid=' + (this.currentImageIndex + 1),
+          newURL = window.location.href.split('#')[0] + '#' + newHash;
+      this.hashReseted = false;
+
+      if (this.pushStateSupport) {
+        window.history[this.historyHasChanges ? 'replaceState' : 'pushState']('', document.title, newURL);
+      } else {
+        // what is the browser target of this?
+        if (this.historyHasChanges) {
+          window.location.replace(newURL);
+        } else {
+          window.location.hash = newHash;
+        }
+      }
+
+      if (!this.historyHasChanges) {
+        this.urlChangedOnce = true;
+      }
+
+      this.historyHasChanges = true;
+    }
+  }, {
+    key: "resetHash",
+    value: function resetHash() {
+      this.hashReseted = true;
+
+      if (this.urlChangedOnce) {
+        history.back();
+      } else {
+        if (this.pushStateSupport) {
+          history.pushState('', document.title, window.location.pathname + window.location.search);
+        } else {
+          window.location.hash = '';
+        }
+      } //
+      //in case an history operation is still pending
+
+
+      clearTimeout(this.historyUpdateTimeout);
+    }
+  }, {
+    key: "updateURL",
+    value: function updateURL() {
+      clearTimeout(this.historyUpdateTimeout);
+
+      if (!this.historyHasChanges) {
+        this.updateHash(); // first time
+      } else {
+        this.historyUpdateTimeout = setTimeout(this.updateHash.bind(this), 800);
+      }
+    }
+  }, {
+    key: "setCaption",
+    value: function setCaption(captionText, imageWidth) {
+      var _this7 = this;
+
+      if (this.options.captions && captionText && captionText !== '' && typeof captionText !== "undefined") {
+        this.hide(this.domNodes.caption);
+        this.domNodes.caption.style.width = imageWidth + 'px';
+        this.domNodes.caption.innerHTML = captionText;
+        this.domNodes.image.appendChild(this.domNodes.caption);
+        setTimeout(function () {
+          _this7.fadeIn(_this7.domNodes.caption, _this7.options.fadeSpeed);
+        }, this.options.captionDelay);
+      }
+    }
+  }, {
+    key: "slide",
+    value: function slide(speed, pos) {
+      if (!this.transitionCapable) {
+        return this.domNodes.image.style.left = pos;
+      }
+
+      this.domNodes.image.style[this.transitionPrefix + 'transform'] = 'translateX(' + pos + ')';
+      this.domNodes.image.style[this.transitionPrefix + 'transition'] = this.transitionPrefix + 'transform ' + speed + 's linear';
+    }
+  }, {
+    key: "getRelated",
+    value: function getRelated(rel) {
+      var elems;
+
+      if (rel && rel !== false && rel !== 'nofollow') {
+        elems = Array.from(this.elements).filter(function (element) {
+          return element.getAttribute('rel') === rel;
+        });
+      } else {
+        elems = this.elements;
+      }
+
+      return elems;
+    }
+  }, {
+    key: "openImage",
+    value: function openImage(element) {
+      var _this8 = this;
+
+      element.dispatchEvent(new Event('show.' + this.eventNamespace));
+
+      if (this.options.disableScroll) {
+        this.globalScrollbarWidth = this.toggleScrollbar('hide');
+      }
+
+      if (this.options.htmlClass && this.options.htmlClass !== '') {
+        document.querySelector('html').classList.add(this.options.htmlClass);
+      }
+
+      document.body.appendChild(this.domNodes.wrapper);
+      this.domNodes.wrapper.appendChild(this.domNodes.image);
+
+      if (this.options.overlay) {
+        document.body.appendChild(this.domNodes.overlay);
+      }
+
+      this.relatedElements = this.getRelated(element.rel);
+
+      if (this.options.showCounter) {
+        if (this.relatedElements.length == 1 && this.domNodes.wrapper.contains(this.domNodes.counter)) {
+          this.domNodes.wrapper.removeChild(this.domNodes.counter);
+        } else if (this.relatedElements.length > 1 && !this.domNodes.wrapper.contains(this.domNodes.counter)) {
+          this.domNodes.wrapper.appendChild(this.domNodes.counter);
+        }
+      }
+
+      this.isAnimating = true;
+      this.currentImageIndex = this.relatedElements.indexOf(element);
+      var targetURL = element.getAttribute(this.options.sourceAttr);
+      this.currentImage = document.createElement('img');
+      this.currentImage.style.display = 'none';
+      this.currentImage.setAttribute('src', targetURL);
+      this.currentImage.dataset.scale = 1;
+      this.currentImage.dataset.translateX = 0;
+      this.currentImage.dataset.translateY = 0;
+
+      if (this.loadedImages.indexOf(targetURL) === -1) {
+        this.loadedImages.push(targetURL);
+      }
+
+      this.domNodes.image.innerHTML = '';
+      this.domNodes.image.setAttribute('style', '');
+      this.domNodes.image.appendChild(this.currentImage);
+      this.fadeIn(this.domNodes.overlay, this.options.fadeSpeed);
+      this.fadeIn([this.domNodes.counter, this.domNodes.navigation, this.domNodes.closeButton], this.options.fadeSpeed);
+      this.show(this.domNodes.spinner);
+      this.domNodes.counter.querySelector('.sl-current').innerHTML = this.currentImageIndex + 1;
+      this.domNodes.counter.querySelector('.sl-total').innerHTML = this.relatedElements.length;
+      this.adjustImage();
+
+      if (this.options.preloading) {
+        this.preload();
+      }
+
+      setTimeout(function () {
+        element.dispatchEvent(new Event('shown.' + _this8.eventNamespace));
+      }, this.options.animationSpeed);
+    }
+  }, {
+    key: "forceFocus",
+    value: function forceFocus() {
+      var _this9 = this;
+
+      this.removeEventListener(document, 'focusin.' + this.eventNamespace);
+      this.addEventListener(document, 'focusin.' + this.eventNamespace, function (event) {
+        if (document !== event.target && _this9.domNodes.wrapper !== event.target && !_this9.domNodes.wrapper.contains(event.target)) {
+          _this9.domNodes.wrapper.focus();
+        }
+      });
+    } // utility
+
+  }, {
+    key: "addEventListener",
+    value: function addEventListener(elements, events, callback, opts) {
+      elements = this.wrap(elements);
+      events = this.wrap(events);
+
+      var _iterator = _createForOfIteratorHelper(elements),
+          _step;
+
+      try {
+        for (_iterator.s(); !(_step = _iterator.n()).done;) {
+          var element = _step.value;
+
+          if (!element.namespaces) {
+            element.namespaces = {};
+          } // save the namespaces addEventListener the DOM element itself
+
+
+          var _iterator2 = _createForOfIteratorHelper(events),
+              _step2;
+
+          try {
+            for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
+              var event = _step2.value;
+              var options = opts || false;
+              element.namespaces[event] = callback;
+              element.addEventListener(event.split('.')[0], callback, options);
+            }
+          } catch (err) {
+            _iterator2.e(err);
+          } finally {
+            _iterator2.f();
+          }
+        }
+      } catch (err) {
+        _iterator.e(err);
+      } finally {
+        _iterator.f();
+      }
+    }
+  }, {
+    key: "removeEventListener",
+    value: function removeEventListener(elements, events) {
+      elements = this.wrap(elements);
+      events = this.wrap(events);
+
+      var _iterator3 = _createForOfIteratorHelper(elements),
+          _step3;
+
+      try {
+        for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
+          var element = _step3.value;
+
+          var _iterator4 = _createForOfIteratorHelper(events),
+              _step4;
+
+          try {
+            for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
+              var event = _step4.value;
+
+              if (element.namespaces && element.namespaces[event]) {
+                element.removeEventListener(event.split('.')[0], element.namespaces[event]);
+                delete element.namespaces[event];
+              }
+            }
+          } catch (err) {
+            _iterator4.e(err);
+          } finally {
+            _iterator4.f();
+          }
+        }
+      } catch (err) {
+        _iterator3.e(err);
+      } finally {
+        _iterator3.f();
+      }
+    }
+  }, {
+    key: "fadeOut",
+    value: function fadeOut(elements, duration, callback) {
+      var _this10 = this;
+
+      elements = this.wrap(elements);
+
+      var _iterator5 = _createForOfIteratorHelper(elements),
+          _step5;
+
+      try {
+        for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {
+          var element = _step5.value;
+          element.style.opacity = 1;
+        }
+      } catch (err) {
+        _iterator5.e(err);
+      } finally {
+        _iterator5.f();
+      }
+
+      this.isFadeIn = false;
+
+      var step = 16.66666 / (duration || this.options.fadeSpeed),
+          fade = function fade() {
+        var currentOpacity = parseFloat(elements[0].style.opacity);
+
+        if ((currentOpacity -= step) < 0) {
+          var _iterator6 = _createForOfIteratorHelper(elements),
+              _step6;
+
+          try {
+            for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {
+              var element = _step6.value;
+              element.style.display = "none";
+              element.style.opacity = '';
+            }
+          } catch (err) {
+            _iterator6.e(err);
+          } finally {
+            _iterator6.f();
+          }
+
+          callback && callback.call(_this10, elements);
+        } else {
+          var _iterator7 = _createForOfIteratorHelper(elements),
+              _step7;
+
+          try {
+            for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) {
+              var _element = _step7.value;
+              _element.style.opacity = currentOpacity;
+            }
+          } catch (err) {
+            _iterator7.e(err);
+          } finally {
+            _iterator7.f();
+          }
+
+          requestAnimationFrame(fade);
+        }
+      };
+
+      fade();
+    }
+  }, {
+    key: "fadeIn",
+    value: function fadeIn(elements, duration, callback, display) {
+      var _this11 = this;
+
+      elements = this.wrap(elements);
+
+      var _iterator8 = _createForOfIteratorHelper(elements),
+          _step8;
+
+      try {
+        for (_iterator8.s(); !(_step8 = _iterator8.n()).done;) {
+          var element = _step8.value;
+          element.style.opacity = 0;
+          element.style.display = display || "block";
+        }
+      } catch (err) {
+        _iterator8.e(err);
+      } finally {
+        _iterator8.f();
+      }
+
+      this.isFadeIn = true;
+
+      var opacityTarget = parseFloat(elements[0].dataset.opacityTarget || 1),
+          step = 16.66666 * opacityTarget / (duration || this.options.fadeSpeed),
+          fade = function fade() {
+        var currentOpacity = parseFloat(elements[0].style.opacity);
+
+        if (!((currentOpacity += step) > opacityTarget)) {
+          var _iterator9 = _createForOfIteratorHelper(elements),
+              _step9;
+
+          try {
+            for (_iterator9.s(); !(_step9 = _iterator9.n()).done;) {
+              var element = _step9.value;
+              element.style.opacity = currentOpacity;
+            }
+          } catch (err) {
+            _iterator9.e(err);
+          } finally {
+            _iterator9.f();
+          }
+
+          if (!_this11.isFadeIn) return;
+          requestAnimationFrame(fade);
+        } else {
+          var _iterator10 = _createForOfIteratorHelper(elements),
+              _step10;
+
+          try {
+            for (_iterator10.s(); !(_step10 = _iterator10.n()).done;) {
+              var _element2 = _step10.value;
+              _element2.style.opacity = '';
+            }
+          } catch (err) {
+            _iterator10.e(err);
+          } finally {
+            _iterator10.f();
+          }
+
+          callback && callback.call(_this11, elements);
+        }
+      };
+
+      fade();
+    }
+  }, {
+    key: "hide",
+    value: function hide(elements) {
+      elements = this.wrap(elements);
+
+      var _iterator11 = _createForOfIteratorHelper(elements),
+          _step11;
+
+      try {
+        for (_iterator11.s(); !(_step11 = _iterator11.n()).done;) {
+          var element = _step11.value;
+          element.dataset.initialDisplay = element.style.display;
+          element.style.display = 'none';
+        }
+      } catch (err) {
+        _iterator11.e(err);
+      } finally {
+        _iterator11.f();
+      }
+    }
+  }, {
+    key: "show",
+    value: function show(elements, display) {
+      elements = this.wrap(elements);
+
+      var _iterator12 = _createForOfIteratorHelper(elements),
+          _step12;
+
+      try {
+        for (_iterator12.s(); !(_step12 = _iterator12.n()).done;) {
+          var element = _step12.value;
+          element.style.display = element.dataset.initialDisplay || display || 'block';
+        }
+      } catch (err) {
+        _iterator12.e(err);
+      } finally {
+        _iterator12.f();
+      }
+    }
+  }, {
+    key: "wrap",
+    value: function wrap(input) {
+      return typeof input[Symbol.iterator] === 'function' && typeof input !== 'string' ? input : [input];
+    }
+  }, {
+    key: "on",
+    value: function on(events, callback) {
+      events = this.wrap(events);
+
+      var _iterator13 = _createForOfIteratorHelper(this.elements),
+          _step13;
+
+      try {
+        for (_iterator13.s(); !(_step13 = _iterator13.n()).done;) {
+          var element = _step13.value;
+
+          if (!element.fullyNamespacedEvents) {
+            element.fullyNamespacedEvents = {};
+          }
+
+          var _iterator14 = _createForOfIteratorHelper(events),
+              _step14;
+
+          try {
+            for (_iterator14.s(); !(_step14 = _iterator14.n()).done;) {
+              var event = _step14.value;
+              element.fullyNamespacedEvents[event] = callback;
+              element.addEventListener(event, callback);
+            }
+          } catch (err) {
+            _iterator14.e(err);
+          } finally {
+            _iterator14.f();
+          }
+        }
+      } catch (err) {
+        _iterator13.e(err);
+      } finally {
+        _iterator13.f();
+      }
+
+      return this;
+    }
+  }, {
+    key: "off",
+    value: function off(events) {
+      events = this.wrap(events);
+
+      var _iterator15 = _createForOfIteratorHelper(this.elements),
+          _step15;
+
+      try {
+        for (_iterator15.s(); !(_step15 = _iterator15.n()).done;) {
+          var element = _step15.value;
+
+          var _iterator16 = _createForOfIteratorHelper(events),
+              _step16;
+
+          try {
+            for (_iterator16.s(); !(_step16 = _iterator16.n()).done;) {
+              var event = _step16.value;
+
+              if (typeof element.fullyNamespacedEvents !== 'undefined' && event in element.fullyNamespacedEvents) {
+                element.removeEventListener(event, element.fullyNamespacedEvents[event]);
+              }
+            }
+          } catch (err) {
+            _iterator16.e(err);
+          } finally {
+            _iterator16.f();
+          }
+        }
+      } catch (err) {
+        _iterator15.e(err);
+      } finally {
+        _iterator15.f();
+      }
+
+      return this;
+    } // api
+
+  }, {
+    key: "open",
+    value: function open(elem) {
+      elem = elem || this.elements[0];
+
+      if (typeof jQuery !== "undefined" && elem instanceof jQuery) {
+        elem = elem.get(0);
+      }
+
+      this.initialImageIndex = this.elements.indexOf(elem);
+
+      if (this.initialImageIndex > -1) {
+        this.openImage(elem);
+      }
+    }
+  }, {
+    key: "next",
+    value: function next() {
+      this.loadImage(1);
+    }
+  }, {
+    key: "prev",
+    value: function prev() {
+      this.loadImage(-1);
+    } //close is exposed anyways..
+
+  }, {
+    key: "destroy",
+    value: function destroy() {
+      //remove all custom event listeners from elements
+      this.off(['close.' + this.eventNamespace, 'closed.' + this.eventNamespace, 'nextImageLoaded.' + this.eventNamespace, 'prevImageLoaded.' + this.eventNamespace, 'change.' + this.eventNamespace, 'nextDone.' + this.eventNamespace, 'prevDone.' + this.eventNamespace, 'error.' + this.eventNamespace, 'changed.' + this.eventNamespace, 'next.' + this.eventNamespace, 'prev.' + this.eventNamespace, 'show.' + this.eventNamespace, 'shown.' + this.eventNamespace]);
+      this.removeEventListener(this.elements, 'click.' + this.eventNamespace);
+      this.removeEventListener(document, 'focusin.' + this.eventNamespace);
+      this.removeEventListener(document.body, 'contextmenu.' + this.eventNamespace);
+      this.removeEventListener(document.body, 'keyup.' + this.eventNamespace);
+      this.removeEventListener(this.domNodes.navigation.getElementsByTagName('button'), 'click.' + this.eventNamespace);
+      this.removeEventListener(this.domNodes.closeButton, 'click.' + this.eventNamespace);
+      this.removeEventListener(window, 'resize.' + this.eventNamespace);
+      this.removeEventListener(window, 'hashchange.' + this.eventNamespace);
+      this.close();
+
+      if (this.isOpen) {
+        document.body.removeChild(this.domNodes.wrapper);
+        document.body.removeChild(this.domNodes.overlay);
+      }
+
+      this.elements = null;
+    }
+  }, {
+    key: "refresh",
+    value: function refresh() {
+      if (!this.initialSelector) {
+        throw 'refreshing only works when you initialize using a selector!';
+      }
+
+      var options = this.options,
+          selector = this.initialSelector;
+      this.destroy();
+      this.constructor(selector, options);
+      return this;
+    }
+  }, {
+    key: "hash",
+    get: function get() {
+      return window.location.hash.substring(1);
+    }
+  }]);
+
+  return SimpleLightbox;
+}();
+
+var _default = SimpleLightbox;
+exports["default"] = _default;
+global.SimpleLightbox = SimpleLightbox;
+
+}).call(this)}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
+},{}]},{},[1]);
diff --git a/photos/simplelightbox-master/dist/simple-lightbox.legacy.js b/photos/simplelightbox-master/dist/simple-lightbox.legacy.js
new file mode 100644
index 0000000000000000000000000000000000000000..a8d657d6d243a8a57a177839707aeee6eeaa33ba
--- /dev/null
+++ b/photos/simplelightbox-master/dist/simple-lightbox.legacy.js
@@ -0,0 +1,13716 @@
+/*!
+	By André Rinas, www.andrerinas.de
+	Documentation, www.simplelightbox.de
+	Available for use under the MIT License
+	Version 2.7.0
+*/
+(function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i<t.length;i++)o(t[i]);return o}return r})()({1:[function(require,module,exports){
+require('../modules/es.symbol');
+require('../modules/es.symbol.async-iterator');
+require('../modules/es.symbol.description');
+require('../modules/es.symbol.has-instance');
+require('../modules/es.symbol.is-concat-spreadable');
+require('../modules/es.symbol.iterator');
+require('../modules/es.symbol.match');
+require('../modules/es.symbol.match-all');
+require('../modules/es.symbol.replace');
+require('../modules/es.symbol.search');
+require('../modules/es.symbol.species');
+require('../modules/es.symbol.split');
+require('../modules/es.symbol.to-primitive');
+require('../modules/es.symbol.to-string-tag');
+require('../modules/es.symbol.unscopables');
+require('../modules/es.object.assign');
+require('../modules/es.object.create');
+require('../modules/es.object.define-property');
+require('../modules/es.object.define-properties');
+require('../modules/es.object.entries');
+require('../modules/es.object.freeze');
+require('../modules/es.object.from-entries');
+require('../modules/es.object.get-own-property-descriptor');
+require('../modules/es.object.get-own-property-descriptors');
+require('../modules/es.object.get-own-property-names');
+require('../modules/es.object.get-prototype-of');
+require('../modules/es.object.is');
+require('../modules/es.object.is-extensible');
+require('../modules/es.object.is-frozen');
+require('../modules/es.object.is-sealed');
+require('../modules/es.object.keys');
+require('../modules/es.object.prevent-extensions');
+require('../modules/es.object.seal');
+require('../modules/es.object.set-prototype-of');
+require('../modules/es.object.values');
+require('../modules/es.object.to-string');
+require('../modules/es.object.define-getter');
+require('../modules/es.object.define-setter');
+require('../modules/es.object.lookup-getter');
+require('../modules/es.object.lookup-setter');
+require('../modules/es.function.bind');
+require('../modules/es.function.name');
+require('../modules/es.function.has-instance');
+require('../modules/es.global-this');
+require('../modules/es.array.from');
+require('../modules/es.array.is-array');
+require('../modules/es.array.of');
+require('../modules/es.array.concat');
+require('../modules/es.array.copy-within');
+require('../modules/es.array.every');
+require('../modules/es.array.fill');
+require('../modules/es.array.filter');
+require('../modules/es.array.find');
+require('../modules/es.array.find-index');
+require('../modules/es.array.flat');
+require('../modules/es.array.flat-map');
+require('../modules/es.array.for-each');
+require('../modules/es.array.includes');
+require('../modules/es.array.index-of');
+require('../modules/es.array.join');
+require('../modules/es.array.last-index-of');
+require('../modules/es.array.map');
+require('../modules/es.array.reduce');
+require('../modules/es.array.reduce-right');
+require('../modules/es.array.reverse');
+require('../modules/es.array.slice');
+require('../modules/es.array.some');
+require('../modules/es.array.sort');
+require('../modules/es.array.splice');
+require('../modules/es.array.species');
+require('../modules/es.array.unscopables.flat');
+require('../modules/es.array.unscopables.flat-map');
+require('../modules/es.array.iterator');
+require('../modules/es.string.from-code-point');
+require('../modules/es.string.raw');
+require('../modules/es.string.code-point-at');
+require('../modules/es.string.ends-with');
+require('../modules/es.string.includes');
+require('../modules/es.string.match');
+require('../modules/es.string.match-all');
+require('../modules/es.string.pad-end');
+require('../modules/es.string.pad-start');
+require('../modules/es.string.repeat');
+require('../modules/es.string.replace');
+require('../modules/es.string.search');
+require('../modules/es.string.split');
+require('../modules/es.string.starts-with');
+require('../modules/es.string.trim');
+require('../modules/es.string.trim-start');
+require('../modules/es.string.trim-end');
+require('../modules/es.string.iterator');
+require('../modules/es.string.anchor');
+require('../modules/es.string.big');
+require('../modules/es.string.blink');
+require('../modules/es.string.bold');
+require('../modules/es.string.fixed');
+require('../modules/es.string.fontcolor');
+require('../modules/es.string.fontsize');
+require('../modules/es.string.italics');
+require('../modules/es.string.link');
+require('../modules/es.string.small');
+require('../modules/es.string.strike');
+require('../modules/es.string.sub');
+require('../modules/es.string.sup');
+require('../modules/es.regexp.constructor');
+require('../modules/es.regexp.exec');
+require('../modules/es.regexp.flags');
+require('../modules/es.regexp.sticky');
+require('../modules/es.regexp.test');
+require('../modules/es.regexp.to-string');
+require('../modules/es.parse-int');
+require('../modules/es.parse-float');
+require('../modules/es.number.constructor');
+require('../modules/es.number.epsilon');
+require('../modules/es.number.is-finite');
+require('../modules/es.number.is-integer');
+require('../modules/es.number.is-nan');
+require('../modules/es.number.is-safe-integer');
+require('../modules/es.number.max-safe-integer');
+require('../modules/es.number.min-safe-integer');
+require('../modules/es.number.parse-float');
+require('../modules/es.number.parse-int');
+require('../modules/es.number.to-fixed');
+require('../modules/es.number.to-precision');
+require('../modules/es.math.acosh');
+require('../modules/es.math.asinh');
+require('../modules/es.math.atanh');
+require('../modules/es.math.cbrt');
+require('../modules/es.math.clz32');
+require('../modules/es.math.cosh');
+require('../modules/es.math.expm1');
+require('../modules/es.math.fround');
+require('../modules/es.math.hypot');
+require('../modules/es.math.imul');
+require('../modules/es.math.log10');
+require('../modules/es.math.log1p');
+require('../modules/es.math.log2');
+require('../modules/es.math.sign');
+require('../modules/es.math.sinh');
+require('../modules/es.math.tanh');
+require('../modules/es.math.to-string-tag');
+require('../modules/es.math.trunc');
+require('../modules/es.date.now');
+require('../modules/es.date.to-json');
+require('../modules/es.date.to-iso-string');
+require('../modules/es.date.to-string');
+require('../modules/es.date.to-primitive');
+require('../modules/es.json.stringify');
+require('../modules/es.json.to-string-tag');
+require('../modules/es.promise');
+require('../modules/es.promise.all-settled');
+require('../modules/es.promise.finally');
+require('../modules/es.map');
+require('../modules/es.set');
+require('../modules/es.weak-map');
+require('../modules/es.weak-set');
+require('../modules/es.array-buffer.constructor');
+require('../modules/es.array-buffer.is-view');
+require('../modules/es.array-buffer.slice');
+require('../modules/es.data-view');
+require('../modules/es.typed-array.int8-array');
+require('../modules/es.typed-array.uint8-array');
+require('../modules/es.typed-array.uint8-clamped-array');
+require('../modules/es.typed-array.int16-array');
+require('../modules/es.typed-array.uint16-array');
+require('../modules/es.typed-array.int32-array');
+require('../modules/es.typed-array.uint32-array');
+require('../modules/es.typed-array.float32-array');
+require('../modules/es.typed-array.float64-array');
+require('../modules/es.typed-array.from');
+require('../modules/es.typed-array.of');
+require('../modules/es.typed-array.copy-within');
+require('../modules/es.typed-array.every');
+require('../modules/es.typed-array.fill');
+require('../modules/es.typed-array.filter');
+require('../modules/es.typed-array.find');
+require('../modules/es.typed-array.find-index');
+require('../modules/es.typed-array.for-each');
+require('../modules/es.typed-array.includes');
+require('../modules/es.typed-array.index-of');
+require('../modules/es.typed-array.iterator');
+require('../modules/es.typed-array.join');
+require('../modules/es.typed-array.last-index-of');
+require('../modules/es.typed-array.map');
+require('../modules/es.typed-array.reduce');
+require('../modules/es.typed-array.reduce-right');
+require('../modules/es.typed-array.reverse');
+require('../modules/es.typed-array.set');
+require('../modules/es.typed-array.slice');
+require('../modules/es.typed-array.some');
+require('../modules/es.typed-array.sort');
+require('../modules/es.typed-array.subarray');
+require('../modules/es.typed-array.to-locale-string');
+require('../modules/es.typed-array.to-string');
+require('../modules/es.reflect.apply');
+require('../modules/es.reflect.construct');
+require('../modules/es.reflect.define-property');
+require('../modules/es.reflect.delete-property');
+require('../modules/es.reflect.get');
+require('../modules/es.reflect.get-own-property-descriptor');
+require('../modules/es.reflect.get-prototype-of');
+require('../modules/es.reflect.has');
+require('../modules/es.reflect.is-extensible');
+require('../modules/es.reflect.own-keys');
+require('../modules/es.reflect.prevent-extensions');
+require('../modules/es.reflect.set');
+require('../modules/es.reflect.set-prototype-of');
+var path = require('../internals/path');
+
+module.exports = path;
+
+},{"../internals/path":112,"../modules/es.array-buffer.constructor":158,"../modules/es.array-buffer.is-view":159,"../modules/es.array-buffer.slice":160,"../modules/es.array.concat":161,"../modules/es.array.copy-within":162,"../modules/es.array.every":163,"../modules/es.array.fill":164,"../modules/es.array.filter":165,"../modules/es.array.find":167,"../modules/es.array.find-index":166,"../modules/es.array.flat":169,"../modules/es.array.flat-map":168,"../modules/es.array.for-each":170,"../modules/es.array.from":171,"../modules/es.array.includes":172,"../modules/es.array.index-of":173,"../modules/es.array.is-array":174,"../modules/es.array.iterator":175,"../modules/es.array.join":176,"../modules/es.array.last-index-of":177,"../modules/es.array.map":178,"../modules/es.array.of":179,"../modules/es.array.reduce":181,"../modules/es.array.reduce-right":180,"../modules/es.array.reverse":182,"../modules/es.array.slice":183,"../modules/es.array.some":184,"../modules/es.array.sort":185,"../modules/es.array.species":186,"../modules/es.array.splice":187,"../modules/es.array.unscopables.flat":189,"../modules/es.array.unscopables.flat-map":188,"../modules/es.data-view":190,"../modules/es.date.now":191,"../modules/es.date.to-iso-string":192,"../modules/es.date.to-json":193,"../modules/es.date.to-primitive":194,"../modules/es.date.to-string":195,"../modules/es.function.bind":196,"../modules/es.function.has-instance":197,"../modules/es.function.name":198,"../modules/es.global-this":199,"../modules/es.json.stringify":200,"../modules/es.json.to-string-tag":201,"../modules/es.map":202,"../modules/es.math.acosh":203,"../modules/es.math.asinh":204,"../modules/es.math.atanh":205,"../modules/es.math.cbrt":206,"../modules/es.math.clz32":207,"../modules/es.math.cosh":208,"../modules/es.math.expm1":209,"../modules/es.math.fround":210,"../modules/es.math.hypot":211,"../modules/es.math.imul":212,"../modules/es.math.log10":213,"../modules/es.math.log1p":214,"../modules/es.math.log2":215,"../modules/es.math.sign":216,"../modules/es.math.sinh":217,"../modules/es.math.tanh":218,"../modules/es.math.to-string-tag":219,"../modules/es.math.trunc":220,"../modules/es.number.constructor":221,"../modules/es.number.epsilon":222,"../modules/es.number.is-finite":223,"../modules/es.number.is-integer":224,"../modules/es.number.is-nan":225,"../modules/es.number.is-safe-integer":226,"../modules/es.number.max-safe-integer":227,"../modules/es.number.min-safe-integer":228,"../modules/es.number.parse-float":229,"../modules/es.number.parse-int":230,"../modules/es.number.to-fixed":231,"../modules/es.number.to-precision":232,"../modules/es.object.assign":233,"../modules/es.object.create":234,"../modules/es.object.define-getter":235,"../modules/es.object.define-properties":236,"../modules/es.object.define-property":237,"../modules/es.object.define-setter":238,"../modules/es.object.entries":239,"../modules/es.object.freeze":240,"../modules/es.object.from-entries":241,"../modules/es.object.get-own-property-descriptor":242,"../modules/es.object.get-own-property-descriptors":243,"../modules/es.object.get-own-property-names":244,"../modules/es.object.get-prototype-of":245,"../modules/es.object.is":249,"../modules/es.object.is-extensible":246,"../modules/es.object.is-frozen":247,"../modules/es.object.is-sealed":248,"../modules/es.object.keys":250,"../modules/es.object.lookup-getter":251,"../modules/es.object.lookup-setter":252,"../modules/es.object.prevent-extensions":253,"../modules/es.object.seal":254,"../modules/es.object.set-prototype-of":255,"../modules/es.object.to-string":256,"../modules/es.object.values":257,"../modules/es.parse-float":258,"../modules/es.parse-int":259,"../modules/es.promise":262,"../modules/es.promise.all-settled":260,"../modules/es.promise.finally":261,"../modules/es.reflect.apply":263,"../modules/es.reflect.construct":264,"../modules/es.reflect.define-property":265,"../modules/es.reflect.delete-property":266,"../modules/es.reflect.get":269,"../modules/es.reflect.get-own-property-descriptor":267,"../modules/es.reflect.get-prototype-of":268,"../modules/es.reflect.has":270,"../modules/es.reflect.is-extensible":271,"../modules/es.reflect.own-keys":272,"../modules/es.reflect.prevent-extensions":273,"../modules/es.reflect.set":275,"../modules/es.reflect.set-prototype-of":274,"../modules/es.regexp.constructor":276,"../modules/es.regexp.exec":277,"../modules/es.regexp.flags":278,"../modules/es.regexp.sticky":279,"../modules/es.regexp.test":280,"../modules/es.regexp.to-string":281,"../modules/es.set":282,"../modules/es.string.anchor":283,"../modules/es.string.big":284,"../modules/es.string.blink":285,"../modules/es.string.bold":286,"../modules/es.string.code-point-at":287,"../modules/es.string.ends-with":288,"../modules/es.string.fixed":289,"../modules/es.string.fontcolor":290,"../modules/es.string.fontsize":291,"../modules/es.string.from-code-point":292,"../modules/es.string.includes":293,"../modules/es.string.italics":294,"../modules/es.string.iterator":295,"../modules/es.string.link":296,"../modules/es.string.match":298,"../modules/es.string.match-all":297,"../modules/es.string.pad-end":299,"../modules/es.string.pad-start":300,"../modules/es.string.raw":301,"../modules/es.string.repeat":302,"../modules/es.string.replace":303,"../modules/es.string.search":304,"../modules/es.string.small":305,"../modules/es.string.split":306,"../modules/es.string.starts-with":307,"../modules/es.string.strike":308,"../modules/es.string.sub":309,"../modules/es.string.sup":310,"../modules/es.string.trim":313,"../modules/es.string.trim-end":311,"../modules/es.string.trim-start":312,"../modules/es.symbol":319,"../modules/es.symbol.async-iterator":314,"../modules/es.symbol.description":315,"../modules/es.symbol.has-instance":316,"../modules/es.symbol.is-concat-spreadable":317,"../modules/es.symbol.iterator":318,"../modules/es.symbol.match":321,"../modules/es.symbol.match-all":320,"../modules/es.symbol.replace":322,"../modules/es.symbol.search":323,"../modules/es.symbol.species":324,"../modules/es.symbol.split":325,"../modules/es.symbol.to-primitive":326,"../modules/es.symbol.to-string-tag":327,"../modules/es.symbol.unscopables":328,"../modules/es.typed-array.copy-within":329,"../modules/es.typed-array.every":330,"../modules/es.typed-array.fill":331,"../modules/es.typed-array.filter":332,"../modules/es.typed-array.find":334,"../modules/es.typed-array.find-index":333,"../modules/es.typed-array.float32-array":335,"../modules/es.typed-array.float64-array":336,"../modules/es.typed-array.for-each":337,"../modules/es.typed-array.from":338,"../modules/es.typed-array.includes":339,"../modules/es.typed-array.index-of":340,"../modules/es.typed-array.int16-array":341,"../modules/es.typed-array.int32-array":342,"../modules/es.typed-array.int8-array":343,"../modules/es.typed-array.iterator":344,"../modules/es.typed-array.join":345,"../modules/es.typed-array.last-index-of":346,"../modules/es.typed-array.map":347,"../modules/es.typed-array.of":348,"../modules/es.typed-array.reduce":350,"../modules/es.typed-array.reduce-right":349,"../modules/es.typed-array.reverse":351,"../modules/es.typed-array.set":352,"../modules/es.typed-array.slice":353,"../modules/es.typed-array.some":354,"../modules/es.typed-array.sort":355,"../modules/es.typed-array.subarray":356,"../modules/es.typed-array.to-locale-string":357,"../modules/es.typed-array.to-string":358,"../modules/es.typed-array.uint16-array":359,"../modules/es.typed-array.uint32-array":360,"../modules/es.typed-array.uint8-array":361,"../modules/es.typed-array.uint8-clamped-array":362,"../modules/es.weak-map":363,"../modules/es.weak-set":364}],2:[function(require,module,exports){
+module.exports = function (it) {
+  if (typeof it != 'function') {
+    throw TypeError(String(it) + ' is not a function');
+  } return it;
+};
+
+},{}],3:[function(require,module,exports){
+var isObject = require('../internals/is-object');
+
+module.exports = function (it) {
+  if (!isObject(it) && it !== null) {
+    throw TypeError("Can't set " + String(it) + ' as a prototype');
+  } return it;
+};
+
+},{"../internals/is-object":75}],4:[function(require,module,exports){
+var wellKnownSymbol = require('../internals/well-known-symbol');
+var create = require('../internals/object-create');
+var definePropertyModule = require('../internals/object-define-property');
+
+var UNSCOPABLES = wellKnownSymbol('unscopables');
+var ArrayPrototype = Array.prototype;
+
+// Array.prototype[@@unscopables]
+// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables
+if (ArrayPrototype[UNSCOPABLES] == undefined) {
+  definePropertyModule.f(ArrayPrototype, UNSCOPABLES, {
+    configurable: true,
+    value: create(null)
+  });
+}
+
+// add a key to Array.prototype[@@unscopables]
+module.exports = function (key) {
+  ArrayPrototype[UNSCOPABLES][key] = true;
+};
+
+},{"../internals/object-create":96,"../internals/object-define-property":98,"../internals/well-known-symbol":156}],5:[function(require,module,exports){
+'use strict';
+var charAt = require('../internals/string-multibyte').charAt;
+
+// `AdvanceStringIndex` abstract operation
+// https://tc39.github.io/ecma262/#sec-advancestringindex
+module.exports = function (S, index, unicode) {
+  return index + (unicode ? charAt(S, index).length : 1);
+};
+
+},{"../internals/string-multibyte":131}],6:[function(require,module,exports){
+module.exports = function (it, Constructor, name) {
+  if (!(it instanceof Constructor)) {
+    throw TypeError('Incorrect ' + (name ? name + ' ' : '') + 'invocation');
+  } return it;
+};
+
+},{}],7:[function(require,module,exports){
+var isObject = require('../internals/is-object');
+
+module.exports = function (it) {
+  if (!isObject(it)) {
+    throw TypeError(String(it) + ' is not an object');
+  } return it;
+};
+
+},{"../internals/is-object":75}],8:[function(require,module,exports){
+module.exports = typeof ArrayBuffer !== 'undefined' && typeof DataView !== 'undefined';
+
+},{}],9:[function(require,module,exports){
+'use strict';
+var NATIVE_ARRAY_BUFFER = require('../internals/array-buffer-native');
+var DESCRIPTORS = require('../internals/descriptors');
+var global = require('../internals/global');
+var isObject = require('../internals/is-object');
+var has = require('../internals/has');
+var classof = require('../internals/classof');
+var createNonEnumerableProperty = require('../internals/create-non-enumerable-property');
+var redefine = require('../internals/redefine');
+var defineProperty = require('../internals/object-define-property').f;
+var getPrototypeOf = require('../internals/object-get-prototype-of');
+var setPrototypeOf = require('../internals/object-set-prototype-of');
+var wellKnownSymbol = require('../internals/well-known-symbol');
+var uid = require('../internals/uid');
+
+var Int8Array = global.Int8Array;
+var Int8ArrayPrototype = Int8Array && Int8Array.prototype;
+var Uint8ClampedArray = global.Uint8ClampedArray;
+var Uint8ClampedArrayPrototype = Uint8ClampedArray && Uint8ClampedArray.prototype;
+var TypedArray = Int8Array && getPrototypeOf(Int8Array);
+var TypedArrayPrototype = Int8ArrayPrototype && getPrototypeOf(Int8ArrayPrototype);
+var ObjectPrototype = Object.prototype;
+var isPrototypeOf = ObjectPrototype.isPrototypeOf;
+
+var TO_STRING_TAG = wellKnownSymbol('toStringTag');
+var TYPED_ARRAY_TAG = uid('TYPED_ARRAY_TAG');
+// Fixing native typed arrays in Opera Presto crashes the browser, see #595
+var NATIVE_ARRAY_BUFFER_VIEWS = NATIVE_ARRAY_BUFFER && !!setPrototypeOf && classof(global.opera) !== 'Opera';
+var TYPED_ARRAY_TAG_REQIRED = false;
+var NAME;
+
+var TypedArrayConstructorsList = {
+  Int8Array: 1,
+  Uint8Array: 1,
+  Uint8ClampedArray: 1,
+  Int16Array: 2,
+  Uint16Array: 2,
+  Int32Array: 4,
+  Uint32Array: 4,
+  Float32Array: 4,
+  Float64Array: 8
+};
+
+var isView = function isView(it) {
+  var klass = classof(it);
+  return klass === 'DataView' || has(TypedArrayConstructorsList, klass);
+};
+
+var isTypedArray = function (it) {
+  return isObject(it) && has(TypedArrayConstructorsList, classof(it));
+};
+
+var aTypedArray = function (it) {
+  if (isTypedArray(it)) return it;
+  throw TypeError('Target is not a typed array');
+};
+
+var aTypedArrayConstructor = function (C) {
+  if (setPrototypeOf) {
+    if (isPrototypeOf.call(TypedArray, C)) return C;
+  } else for (var ARRAY in TypedArrayConstructorsList) if (has(TypedArrayConstructorsList, NAME)) {
+    var TypedArrayConstructor = global[ARRAY];
+    if (TypedArrayConstructor && (C === TypedArrayConstructor || isPrototypeOf.call(TypedArrayConstructor, C))) {
+      return C;
+    }
+  } throw TypeError('Target is not a typed array constructor');
+};
+
+var exportTypedArrayMethod = function (KEY, property, forced) {
+  if (!DESCRIPTORS) return;
+  if (forced) for (var ARRAY in TypedArrayConstructorsList) {
+    var TypedArrayConstructor = global[ARRAY];
+    if (TypedArrayConstructor && has(TypedArrayConstructor.prototype, KEY)) {
+      delete TypedArrayConstructor.prototype[KEY];
+    }
+  }
+  if (!TypedArrayPrototype[KEY] || forced) {
+    redefine(TypedArrayPrototype, KEY, forced ? property
+      : NATIVE_ARRAY_BUFFER_VIEWS && Int8ArrayPrototype[KEY] || property);
+  }
+};
+
+var exportTypedArrayStaticMethod = function (KEY, property, forced) {
+  var ARRAY, TypedArrayConstructor;
+  if (!DESCRIPTORS) return;
+  if (setPrototypeOf) {
+    if (forced) for (ARRAY in TypedArrayConstructorsList) {
+      TypedArrayConstructor = global[ARRAY];
+      if (TypedArrayConstructor && has(TypedArrayConstructor, KEY)) {
+        delete TypedArrayConstructor[KEY];
+      }
+    }
+    if (!TypedArray[KEY] || forced) {
+      // V8 ~ Chrome 49-50 `%TypedArray%` methods are non-writable non-configurable
+      try {
+        return redefine(TypedArray, KEY, forced ? property : NATIVE_ARRAY_BUFFER_VIEWS && Int8Array[KEY] || property);
+      } catch (error) { /* empty */ }
+    } else return;
+  }
+  for (ARRAY in TypedArrayConstructorsList) {
+    TypedArrayConstructor = global[ARRAY];
+    if (TypedArrayConstructor && (!TypedArrayConstructor[KEY] || forced)) {
+      redefine(TypedArrayConstructor, KEY, property);
+    }
+  }
+};
+
+for (NAME in TypedArrayConstructorsList) {
+  if (!global[NAME]) NATIVE_ARRAY_BUFFER_VIEWS = false;
+}
+
+// WebKit bug - typed arrays constructors prototype is Object.prototype
+if (!NATIVE_ARRAY_BUFFER_VIEWS || typeof TypedArray != 'function' || TypedArray === Function.prototype) {
+  // eslint-disable-next-line no-shadow
+  TypedArray = function TypedArray() {
+    throw TypeError('Incorrect invocation');
+  };
+  if (NATIVE_ARRAY_BUFFER_VIEWS) for (NAME in TypedArrayConstructorsList) {
+    if (global[NAME]) setPrototypeOf(global[NAME], TypedArray);
+  }
+}
+
+if (!NATIVE_ARRAY_BUFFER_VIEWS || !TypedArrayPrototype || TypedArrayPrototype === ObjectPrototype) {
+  TypedArrayPrototype = TypedArray.prototype;
+  if (NATIVE_ARRAY_BUFFER_VIEWS) for (NAME in TypedArrayConstructorsList) {
+    if (global[NAME]) setPrototypeOf(global[NAME].prototype, TypedArrayPrototype);
+  }
+}
+
+// WebKit bug - one more object in Uint8ClampedArray prototype chain
+if (NATIVE_ARRAY_BUFFER_VIEWS && getPrototypeOf(Uint8ClampedArrayPrototype) !== TypedArrayPrototype) {
+  setPrototypeOf(Uint8ClampedArrayPrototype, TypedArrayPrototype);
+}
+
+if (DESCRIPTORS && !has(TypedArrayPrototype, TO_STRING_TAG)) {
+  TYPED_ARRAY_TAG_REQIRED = true;
+  defineProperty(TypedArrayPrototype, TO_STRING_TAG, { get: function () {
+    return isObject(this) ? this[TYPED_ARRAY_TAG] : undefined;
+  } });
+  for (NAME in TypedArrayConstructorsList) if (global[NAME]) {
+    createNonEnumerableProperty(global[NAME], TYPED_ARRAY_TAG, NAME);
+  }
+}
+
+module.exports = {
+  NATIVE_ARRAY_BUFFER_VIEWS: NATIVE_ARRAY_BUFFER_VIEWS,
+  TYPED_ARRAY_TAG: TYPED_ARRAY_TAG_REQIRED && TYPED_ARRAY_TAG,
+  aTypedArray: aTypedArray,
+  aTypedArrayConstructor: aTypedArrayConstructor,
+  exportTypedArrayMethod: exportTypedArrayMethod,
+  exportTypedArrayStaticMethod: exportTypedArrayStaticMethod,
+  isView: isView,
+  isTypedArray: isTypedArray,
+  TypedArray: TypedArray,
+  TypedArrayPrototype: TypedArrayPrototype
+};
+
+},{"../internals/array-buffer-native":8,"../internals/classof":26,"../internals/create-non-enumerable-property":35,"../internals/descriptors":42,"../internals/global":59,"../internals/has":60,"../internals/is-object":75,"../internals/object-define-property":98,"../internals/object-get-prototype-of":103,"../internals/object-set-prototype-of":108,"../internals/redefine":116,"../internals/uid":153,"../internals/well-known-symbol":156}],10:[function(require,module,exports){
+'use strict';
+var global = require('../internals/global');
+var DESCRIPTORS = require('../internals/descriptors');
+var NATIVE_ARRAY_BUFFER = require('../internals/array-buffer-native');
+var createNonEnumerableProperty = require('../internals/create-non-enumerable-property');
+var redefineAll = require('../internals/redefine-all');
+var fails = require('../internals/fails');
+var anInstance = require('../internals/an-instance');
+var toInteger = require('../internals/to-integer');
+var toLength = require('../internals/to-length');
+var toIndex = require('../internals/to-index');
+var IEEE754 = require('../internals/ieee754');
+var getPrototypeOf = require('../internals/object-get-prototype-of');
+var setPrototypeOf = require('../internals/object-set-prototype-of');
+var getOwnPropertyNames = require('../internals/object-get-own-property-names').f;
+var defineProperty = require('../internals/object-define-property').f;
+var arrayFill = require('../internals/array-fill');
+var setToStringTag = require('../internals/set-to-string-tag');
+var InternalStateModule = require('../internals/internal-state');
+
+var getInternalState = InternalStateModule.get;
+var setInternalState = InternalStateModule.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[ARRAY_BUFFER];
+var $ArrayBuffer = NativeArrayBuffer;
+var $DataView = global[DATA_VIEW];
+var $DataViewPrototype = $DataView && $DataView[PROTOTYPE];
+var ObjectPrototype = Object.prototype;
+var RangeError = global.RangeError;
+
+var packIEEE754 = IEEE754.pack;
+var unpackIEEE754 = IEEE754.unpack;
+
+var packInt8 = function (number) {
+  return [number & 0xFF];
+};
+
+var packInt16 = function (number) {
+  return [number & 0xFF, number >> 8 & 0xFF];
+};
+
+var packInt32 = function (number) {
+  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);
+};
+
+var packFloat64 = function (number) {
+  return packIEEE754(number, 52, 8);
+};
+
+var addGetter = function (Constructor, key) {
+  defineProperty(Constructor[PROTOTYPE], key, { get: function () { return getInternalState(this)[key]; } });
+};
+
+var get = function (view, count, index, isLittleEndian) {
+  var intIndex = toIndex(index);
+  var store = getInternalState(view);
+  if (intIndex + count > store.byteLength) throw RangeError(WRONG_INDEX);
+  var bytes = getInternalState(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 intIndex = toIndex(index);
+  var store = getInternalState(view);
+  if (intIndex + count > store.byteLength) throw RangeError(WRONG_INDEX);
+  var bytes = getInternalState(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) {
+  $ArrayBuffer = function ArrayBuffer(length) {
+    anInstance(this, $ArrayBuffer, ARRAY_BUFFER);
+    var byteLength = toIndex(length);
+    setInternalState(this, {
+      bytes: arrayFill.call(new Array(byteLength), 0),
+      byteLength: byteLength
+    });
+    if (!DESCRIPTORS) this.byteLength = byteLength;
+  };
+
+  $DataView = function DataView(buffer, byteOffset, byteLength) {
+    anInstance(this, $DataView, DATA_VIEW);
+    anInstance(buffer, $ArrayBuffer, DATA_VIEW);
+    var bufferLength = getInternalState(buffer).byteLength;
+    var offset = toInteger(byteOffset);
+    if (offset < 0 || offset > bufferLength) throw RangeError('Wrong offset');
+    byteLength = byteLength === undefined ? bufferLength - offset : toLength(byteLength);
+    if (offset + byteLength > bufferLength) throw RangeError(WRONG_LENGTH);
+    setInternalState(this, {
+      buffer: buffer,
+      byteLength: byteLength,
+      byteOffset: offset
+    });
+    if (!DESCRIPTORS) {
+      this.buffer = buffer;
+      this.byteLength = byteLength;
+      this.byteOffset = offset;
+    }
+  };
+
+  if (DESCRIPTORS) {
+    addGetter($ArrayBuffer, 'byteLength');
+    addGetter($DataView, 'buffer');
+    addGetter($DataView, 'byteLength');
+    addGetter($DataView, 'byteOffset');
+  }
+
+  redefineAll($DataView[PROTOTYPE], {
+    getInt8: function getInt8(byteOffset) {
+      return get(this, 1, byteOffset)[0] << 24 >> 24;
+    },
+    getUint8: function getUint8(byteOffset) {
+      return get(this, 1, byteOffset)[0];
+    },
+    getInt16: function getInt16(byteOffset /* , littleEndian */) {
+      var bytes = get(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.length > 1 ? arguments[1] : undefined);
+      return bytes[1] << 8 | bytes[0];
+    },
+    getInt32: function getInt32(byteOffset /* , littleEndian */) {
+      return unpackInt32(get(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : undefined));
+    },
+    getUint32: function getUint32(byteOffset /* , littleEndian */) {
+      return unpackInt32(get(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : undefined)) >>> 0;
+    },
+    getFloat32: function getFloat32(byteOffset /* , littleEndian */) {
+      return unpackIEEE754(get(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : undefined), 23);
+    },
+    getFloat64: function getFloat64(byteOffset /* , littleEndian */) {
+      return unpackIEEE754(get(this, 8, byteOffset, arguments.length > 1 ? arguments[1] : undefined), 52);
+    },
+    setInt8: function setInt8(byteOffset, value) {
+      set(this, 1, byteOffset, packInt8, value);
+    },
+    setUint8: function setUint8(byteOffset, value) {
+      set(this, 1, byteOffset, packInt8, value);
+    },
+    setInt16: function setInt16(byteOffset, value /* , littleEndian */) {
+      set(this, 2, byteOffset, packInt16, value, arguments.length > 2 ? arguments[2] : undefined);
+    },
+    setUint16: function setUint16(byteOffset, value /* , littleEndian */) {
+      set(this, 2, byteOffset, packInt16, value, arguments.length > 2 ? arguments[2] : undefined);
+    },
+    setInt32: function setInt32(byteOffset, value /* , littleEndian */) {
+      set(this, 4, byteOffset, packInt32, value, arguments.length > 2 ? arguments[2] : undefined);
+    },
+    setUint32: function setUint32(byteOffset, value /* , littleEndian */) {
+      set(this, 4, byteOffset, packInt32, value, arguments.length > 2 ? arguments[2] : undefined);
+    },
+    setFloat32: function setFloat32(byteOffset, value /* , littleEndian */) {
+      set(this, 4, byteOffset, packFloat32, value, arguments.length > 2 ? arguments[2] : undefined);
+    },
+    setFloat64: function setFloat64(byteOffset, value /* , littleEndian */) {
+      set(this, 8, byteOffset, packFloat64, value, arguments.length > 2 ? arguments[2] : undefined);
+    }
+  });
+} else {
+  if (!fails(function () {
+    NativeArrayBuffer(1);
+  }) || !fails(function () {
+    new NativeArrayBuffer(-1); // eslint-disable-line no-new
+  }) || fails(function () {
+    new NativeArrayBuffer(); // eslint-disable-line no-new
+    new NativeArrayBuffer(1.5); // eslint-disable-line no-new
+    new NativeArrayBuffer(NaN); // eslint-disable-line no-new
+    return NativeArrayBuffer.name != ARRAY_BUFFER;
+  })) {
+    $ArrayBuffer = function ArrayBuffer(length) {
+      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)) {
+        createNonEnumerableProperty($ArrayBuffer, key, NativeArrayBuffer[key]);
+      }
+    }
+    ArrayBufferPrototype.constructor = $ArrayBuffer;
+  }
+
+  // WebKit bug - the same parent prototype for typed arrays and data view
+  if (setPrototypeOf && getPrototypeOf($DataViewPrototype) !== ObjectPrototype) {
+    setPrototypeOf($DataViewPrototype, ObjectPrototype);
+  }
+
+  // iOS Safari 7.x bug
+  var testView = new $DataView(new $ArrayBuffer(2));
+  var nativeSetInt8 = $DataViewPrototype.setInt8;
+  testView.setInt8(0, 2147483648);
+  testView.setInt8(1, 2147483649);
+  if (testView.getInt8(0) || !testView.getInt8(1)) redefineAll($DataViewPrototype, {
+    setInt8: function setInt8(byteOffset, value) {
+      nativeSetInt8.call(this, byteOffset, value << 24 >> 24);
+    },
+    setUint8: function setUint8(byteOffset, value) {
+      nativeSetInt8.call(this, byteOffset, value << 24 >> 24);
+    }
+  }, { unsafe: true });
+}
+
+setToStringTag($ArrayBuffer, ARRAY_BUFFER);
+setToStringTag($DataView, DATA_VIEW);
+
+module.exports = {
+  ArrayBuffer: $ArrayBuffer,
+  DataView: $DataView
+};
+
+},{"../internals/an-instance":6,"../internals/array-buffer-native":8,"../internals/array-fill":12,"../internals/create-non-enumerable-property":35,"../internals/descriptors":42,"../internals/fails":50,"../internals/global":59,"../internals/ieee754":65,"../internals/internal-state":70,"../internals/object-define-property":98,"../internals/object-get-own-property-names":101,"../internals/object-get-prototype-of":103,"../internals/object-set-prototype-of":108,"../internals/redefine-all":115,"../internals/set-to-string-tag":125,"../internals/to-index":141,"../internals/to-integer":143,"../internals/to-length":144}],11:[function(require,module,exports){
+'use strict';
+var toObject = require('../internals/to-object');
+var toAbsoluteIndex = require('../internals/to-absolute-index');
+var toLength = require('../internals/to-length');
+
+var min = Math.min;
+
+// `Array.prototype.copyWithin` method implementation
+// https://tc39.github.io/ecma262/#sec-array.prototype.copywithin
+module.exports = [].copyWithin || function copyWithin(target /* = 0 */, start /* = 0, end = @length */) {
+  var O = toObject(this);
+  var len = toLength(O.length);
+  var to = toAbsoluteIndex(target, len);
+  var from = toAbsoluteIndex(start, len);
+  var end = arguments.length > 2 ? arguments[2] : undefined;
+  var count = min((end === undefined ? len : toAbsoluteIndex(end, len)) - from, len - to);
+  var inc = 1;
+  if (from < to && to < from + count) {
+    inc = -1;
+    from += count - 1;
+    to += count - 1;
+  }
+  while (count-- > 0) {
+    if (from in O) O[to] = O[from];
+    else delete O[to];
+    to += inc;
+    from += inc;
+  } return O;
+};
+
+},{"../internals/to-absolute-index":140,"../internals/to-length":144,"../internals/to-object":145}],12:[function(require,module,exports){
+'use strict';
+var toObject = require('../internals/to-object');
+var toAbsoluteIndex = require('../internals/to-absolute-index');
+var toLength = require('../internals/to-length');
+
+// `Array.prototype.fill` method implementation
+// https://tc39.github.io/ecma262/#sec-array.prototype.fill
+module.exports = 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;
+};
+
+},{"../internals/to-absolute-index":140,"../internals/to-length":144,"../internals/to-object":145}],13:[function(require,module,exports){
+'use strict';
+var $forEach = require('../internals/array-iteration').forEach;
+var arrayMethodIsStrict = require('../internals/array-method-is-strict');
+var arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');
+
+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
+module.exports = (!STRICT_METHOD || !USES_TO_LENGTH) ? function forEach(callbackfn /* , thisArg */) {
+  return $forEach(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);
+} : [].forEach;
+
+},{"../internals/array-iteration":16,"../internals/array-method-is-strict":19,"../internals/array-method-uses-to-length":20}],14:[function(require,module,exports){
+'use strict';
+var bind = require('../internals/function-bind-context');
+var toObject = require('../internals/to-object');
+var callWithSafeIterationClosing = require('../internals/call-with-safe-iteration-closing');
+var isArrayIteratorMethod = require('../internals/is-array-iterator-method');
+var toLength = require('../internals/to-length');
+var createProperty = require('../internals/create-property');
+var getIteratorMethod = require('../internals/get-iterator-method');
+
+// `Array.from` method implementation
+// https://tc39.github.io/ecma262/#sec-array.from
+module.exports = function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {
+  var O = toObject(arrayLike);
+  var C = typeof this == 'function' ? this : Array;
+  var argumentsLength = arguments.length;
+  var mapfn = argumentsLength > 1 ? arguments[1] : undefined;
+  var mapping = mapfn !== undefined;
+  var iteratorMethod = getIteratorMethod(O);
+  var index = 0;
+  var length, result, step, iterator, next, value;
+  if (mapping) mapfn = bind(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 = 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++) {
+      value = mapping ? mapfn(O[index], index) : O[index];
+      createProperty(result, index, value);
+    }
+  }
+  result.length = index;
+  return result;
+};
+
+},{"../internals/call-with-safe-iteration-closing":23,"../internals/create-property":37,"../internals/function-bind-context":54,"../internals/get-iterator-method":57,"../internals/is-array-iterator-method":71,"../internals/to-length":144,"../internals/to-object":145}],15:[function(require,module,exports){
+var toIndexedObject = require('../internals/to-indexed-object');
+var toLength = require('../internals/to-length');
+var toAbsoluteIndex = require('../internals/to-absolute-index');
+
+// `Array.prototype.{ indexOf, includes }` methods implementation
+var createMethod = function (IS_INCLUDES) {
+  return function ($this, el, fromIndex) {
+    var O = toIndexedObject($this);
+    var length = toLength(O.length);
+    var index = toAbsoluteIndex(fromIndex, length);
+    var value;
+    // Array#includes uses SameValueZero equality algorithm
+    // eslint-disable-next-line no-self-compare
+    if (IS_INCLUDES && el != el) while (length > index) {
+      value = O[index++];
+      // 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) && O[index] === el) return IS_INCLUDES || index || 0;
+    } return !IS_INCLUDES && -1;
+  };
+};
+
+module.exports = {
+  // `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)
+};
+
+},{"../internals/to-absolute-index":140,"../internals/to-indexed-object":142,"../internals/to-length":144}],16:[function(require,module,exports){
+var bind = require('../internals/function-bind-context');
+var IndexedObject = require('../internals/indexed-object');
+var toObject = require('../internals/to-object');
+var toLength = require('../internals/to-length');
+var arraySpeciesCreate = require('../internals/array-species-create');
+
+var push = [].push;
+
+// `Array.prototype.{ forEach, map, filter, some, every, find, findIndex }` methods implementation
+var createMethod = 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;
+  return function ($this, callbackfn, that, specificCreate) {
+    var O = toObject($this);
+    var self = IndexedObject(O);
+    var boundFunction = bind(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) {
+      value = self[index];
+      result = boundFunction(value, index, O);
+      if (TYPE) {
+        if (IS_MAP) target[index] = result; // map
+        else if (result) switch (TYPE) {
+          case 3: return true;              // some
+          case 5: return value;             // find
+          case 6: return index;             // findIndex
+          case 2: push.call(target, value); // filter
+        } else if (IS_EVERY) return false;  // every
+      }
+    }
+    return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : target;
+  };
+};
+
+module.exports = {
+  // `Array.prototype.forEach` method
+  // https://tc39.github.io/ecma262/#sec-array.prototype.foreach
+  forEach: createMethod(0),
+  // `Array.prototype.map` method
+  // https://tc39.github.io/ecma262/#sec-array.prototype.map
+  map: createMethod(1),
+  // `Array.prototype.filter` method
+  // https://tc39.github.io/ecma262/#sec-array.prototype.filter
+  filter: createMethod(2),
+  // `Array.prototype.some` method
+  // https://tc39.github.io/ecma262/#sec-array.prototype.some
+  some: createMethod(3),
+  // `Array.prototype.every` method
+  // https://tc39.github.io/ecma262/#sec-array.prototype.every
+  every: createMethod(4),
+  // `Array.prototype.find` method
+  // https://tc39.github.io/ecma262/#sec-array.prototype.find
+  find: createMethod(5),
+  // `Array.prototype.findIndex` method
+  // https://tc39.github.io/ecma262/#sec-array.prototype.findIndex
+  findIndex: createMethod(6)
+};
+
+},{"../internals/array-species-create":22,"../internals/function-bind-context":54,"../internals/indexed-object":66,"../internals/to-length":144,"../internals/to-object":145}],17:[function(require,module,exports){
+'use strict';
+var toIndexedObject = require('../internals/to-indexed-object');
+var toInteger = require('../internals/to-integer');
+var toLength = require('../internals/to-length');
+var arrayMethodIsStrict = require('../internals/array-method-is-strict');
+var arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');
+
+var min = Math.min;
+var nativeLastIndexOf = [].lastIndexOf;
+var NEGATIVE_ZERO = !!nativeLastIndexOf && 1 / [1].lastIndexOf(1, -0) < 0;
+var STRICT_METHOD = arrayMethodIsStrict('lastIndexOf');
+// For preventing possible almost infinite loop in non-standard implementations, test the forward version of the method
+var USES_TO_LENGTH = arrayMethodUsesToLength('indexOf', { ACCESSORS: true, 1: 0 });
+var FORCED = NEGATIVE_ZERO || !STRICT_METHOD || !USES_TO_LENGTH;
+
+// `Array.prototype.lastIndexOf` method implementation
+// https://tc39.github.io/ecma262/#sec-array.prototype.lastindexof
+module.exports = FORCED ? function lastIndexOf(searchElement /* , fromIndex = @[*-1] */) {
+  // convert -0 to +0
+  if (NEGATIVE_ZERO) 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(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;
+
+},{"../internals/array-method-is-strict":19,"../internals/array-method-uses-to-length":20,"../internals/to-indexed-object":142,"../internals/to-integer":143,"../internals/to-length":144}],18:[function(require,module,exports){
+var fails = require('../internals/fails');
+var wellKnownSymbol = require('../internals/well-known-symbol');
+var V8_VERSION = require('../internals/engine-v8-version');
+
+var SPECIES = wellKnownSymbol('species');
+
+module.exports = 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 V8_VERSION >= 51 || !fails(function () {
+    var array = [];
+    var constructor = array.constructor = {};
+    constructor[SPECIES] = function () {
+      return { foo: 1 };
+    };
+    return array[METHOD_NAME](Boolean).foo !== 1;
+  });
+};
+
+},{"../internals/engine-v8-version":47,"../internals/fails":50,"../internals/well-known-symbol":156}],19:[function(require,module,exports){
+'use strict';
+var fails = require('../internals/fails');
+
+module.exports = function (METHOD_NAME, argument) {
+  var method = [][METHOD_NAME];
+  return !!method && fails(function () {
+    // eslint-disable-next-line no-useless-call,no-throw-literal
+    method.call(null, argument || function () { throw 1; }, 1);
+  });
+};
+
+},{"../internals/fails":50}],20:[function(require,module,exports){
+var DESCRIPTORS = require('../internals/descriptors');
+var fails = require('../internals/fails');
+var has = require('../internals/has');
+
+var defineProperty = Object.defineProperty;
+var cache = {};
+
+var thrower = function (it) { throw it; };
+
+module.exports = 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);
+  });
+};
+
+},{"../internals/descriptors":42,"../internals/fails":50,"../internals/has":60}],21:[function(require,module,exports){
+var aFunction = require('../internals/a-function');
+var toObject = require('../internals/to-object');
+var IndexedObject = require('../internals/indexed-object');
+var toLength = require('../internals/to-length');
+
+// `Array.prototype.{ reduce, reduceRight }` methods implementation
+var createMethod = function (IS_RIGHT) {
+  return function (that, callbackfn, argumentsLength, memo) {
+    aFunction(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;
+  };
+};
+
+module.exports = {
+  // `Array.prototype.reduce` method
+  // https://tc39.github.io/ecma262/#sec-array.prototype.reduce
+  left: createMethod(false),
+  // `Array.prototype.reduceRight` method
+  // https://tc39.github.io/ecma262/#sec-array.prototype.reduceright
+  right: createMethod(true)
+};
+
+},{"../internals/a-function":2,"../internals/indexed-object":66,"../internals/to-length":144,"../internals/to-object":145}],22:[function(require,module,exports){
+var isObject = require('../internals/is-object');
+var isArray = require('../internals/is-array');
+var wellKnownSymbol = require('../internals/well-known-symbol');
+
+var SPECIES = wellKnownSymbol('species');
+
+// `ArraySpeciesCreate` abstract operation
+// https://tc39.github.io/ecma262/#sec-arrayspeciescreate
+module.exports = function (originalArray, length) {
+  var C;
+  if (isArray(originalArray)) {
+    C = originalArray.constructor;
+    // cross-realm fallback
+    if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;
+    else if (isObject(C)) {
+      C = C[SPECIES];
+      if (C === null) C = undefined;
+    }
+  } return new (C === undefined ? Array : C)(length === 0 ? 0 : length);
+};
+
+},{"../internals/is-array":72,"../internals/is-object":75,"../internals/well-known-symbol":156}],23:[function(require,module,exports){
+var anObject = require('../internals/an-object');
+
+// call something on iterator step with safe closing on error
+module.exports = function (iterator, fn, value, ENTRIES) {
+  try {
+    return ENTRIES ? fn(anObject(value)[0], value[1]) : fn(value);
+  // 7.4.6 IteratorClose(iterator, completion)
+  } catch (error) {
+    var returnMethod = iterator['return'];
+    if (returnMethod !== undefined) anObject(returnMethod.call(iterator));
+    throw error;
+  }
+};
+
+},{"../internals/an-object":7}],24:[function(require,module,exports){
+var wellKnownSymbol = require('../internals/well-known-symbol');
+
+var ITERATOR = wellKnownSymbol('iterator');
+var SAFE_CLOSING = false;
+
+try {
+  var called = 0;
+  var iteratorWithReturn = {
+    next: function () {
+      return { done: !!called++ };
+    },
+    'return': function () {
+      SAFE_CLOSING = true;
+    }
+  };
+  iteratorWithReturn[ITERATOR] = function () {
+    return this;
+  };
+  // eslint-disable-next-line no-throw-literal
+  Array.from(iteratorWithReturn, function () { throw 2; });
+} catch (error) { /* empty */ }
+
+module.exports = function (exec, SKIP_CLOSING) {
+  if (!SKIP_CLOSING && !SAFE_CLOSING) return false;
+  var ITERATION_SUPPORT = false;
+  try {
+    var object = {};
+    object[ITERATOR] = function () {
+      return {
+        next: function () {
+          return { done: ITERATION_SUPPORT = true };
+        }
+      };
+    };
+    exec(object);
+  } catch (error) { /* empty */ }
+  return ITERATION_SUPPORT;
+};
+
+},{"../internals/well-known-symbol":156}],25:[function(require,module,exports){
+var toString = {}.toString;
+
+module.exports = function (it) {
+  return toString.call(it).slice(8, -1);
+};
+
+},{}],26:[function(require,module,exports){
+var TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');
+var classofRaw = require('../internals/classof-raw');
+var wellKnownSymbol = require('../internals/well-known-symbol');
+
+var TO_STRING_TAG = wellKnownSymbol('toStringTag');
+// ES3 wrong here
+var CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) == 'Arguments';
+
+// fallback for IE11 Script Access Denied error
+var tryGet = function (it, key) {
+  try {
+    return it[key];
+  } catch (error) { /* empty */ }
+};
+
+// getting tag from ES6+ `Object.prototype.toString`
+module.exports = TO_STRING_TAG_SUPPORT ? 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
+    // builtinTag case
+    : CORRECT_ARGUMENTS ? classofRaw(O)
+    // ES3 arguments fallback
+    : (result = classofRaw(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : result;
+};
+
+},{"../internals/classof-raw":25,"../internals/to-string-tag-support":149,"../internals/well-known-symbol":156}],27:[function(require,module,exports){
+'use strict';
+var defineProperty = require('../internals/object-define-property').f;
+var create = require('../internals/object-create');
+var redefineAll = require('../internals/redefine-all');
+var bind = require('../internals/function-bind-context');
+var anInstance = require('../internals/an-instance');
+var iterate = require('../internals/iterate');
+var defineIterator = require('../internals/define-iterator');
+var setSpecies = require('../internals/set-species');
+var DESCRIPTORS = require('../internals/descriptors');
+var fastKey = require('../internals/internal-metadata').fastKey;
+var InternalStateModule = require('../internals/internal-state');
+
+var setInternalState = InternalStateModule.set;
+var internalStateGetterFor = InternalStateModule.getterFor;
+
+module.exports = {
+  getConstructor: function (wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER) {
+    var C = wrapper(function (that, iterable) {
+      anInstance(that, C, CONSTRUCTOR_NAME);
+      setInternalState(that, {
+        type: CONSTRUCTOR_NAME,
+        index: create(null),
+        first: undefined,
+        last: undefined,
+        size: 0
+      });
+      if (!DESCRIPTORS) that.size = 0;
+      if (iterable != undefined) iterate(iterable, that[ADDER], that, IS_MAP);
+    });
+
+    var getInternalState = internalStateGetterFor(CONSTRUCTOR_NAME);
+
+    var define = function (that, key, value) {
+      var state = getInternalState(that);
+      var entry = getEntry(that, key);
+      var previous, index;
+      // change existing entry
+      if (entry) {
+        entry.value = value;
+      // create new entry
+      } else {
+        state.last = entry = {
+          index: index = fastKey(key, true),
+          key: key,
+          value: value,
+          previous: previous = state.last,
+          next: undefined,
+          removed: false
+        };
+        if (!state.first) state.first = entry;
+        if (previous) previous.next = entry;
+        if (DESCRIPTORS) state.size++;
+        else that.size++;
+        // add to index
+        if (index !== 'F') state.index[index] = entry;
+      } return that;
+    };
+
+    var getEntry = function (that, key) {
+      var state = getInternalState(that);
+      // fast case
+      var index = fastKey(key);
+      var entry;
+      if (index !== 'F') return state.index[index];
+      // frozen object case
+      for (entry = state.first; entry; entry = entry.next) {
+        if (entry.key == key) return entry;
+      }
+    };
+
+    redefineAll(C.prototype, {
+      // 23.1.3.1 Map.prototype.clear()
+      // 23.2.3.2 Set.prototype.clear()
+      clear: function clear() {
+        var that = this;
+        var state = getInternalState(that);
+        var data = state.index;
+        var entry = state.first;
+        while (entry) {
+          entry.removed = true;
+          if (entry.previous) entry.previous = entry.previous.next = undefined;
+          delete data[entry.index];
+          entry = entry.next;
+        }
+        state.first = state.last = undefined;
+        if (DESCRIPTORS) state.size = 0;
+        else that.size = 0;
+      },
+      // 23.1.3.3 Map.prototype.delete(key)
+      // 23.2.3.4 Set.prototype.delete(value)
+      'delete': function (key) {
+        var that = this;
+        var state = getInternalState(that);
+        var entry = getEntry(that, key);
+        if (entry) {
+          var next = entry.next;
+          var prev = entry.previous;
+          delete state.index[entry.index];
+          entry.removed = true;
+          if (prev) prev.next = next;
+          if (next) next.previous = prev;
+          if (state.first == entry) state.first = next;
+          if (state.last == entry) state.last = prev;
+          if (DESCRIPTORS) state.size--;
+          else that.size--;
+        } return !!entry;
+      },
+      // 23.2.3.6 Set.prototype.forEach(callbackfn, thisArg = undefined)
+      // 23.1.3.5 Map.prototype.forEach(callbackfn, thisArg = undefined)
+      forEach: function forEach(callbackfn /* , that = undefined */) {
+        var state = getInternalState(this);
+        var boundFunction = bind(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3);
+        var entry;
+        while (entry = entry ? entry.next : state.first) {
+          boundFunction(entry.value, entry.key, this);
+          // revert to the last existing entry
+          while (entry && entry.removed) entry = entry.previous;
+        }
+      },
+      // 23.1.3.7 Map.prototype.has(key)
+      // 23.2.3.7 Set.prototype.has(value)
+      has: function has(key) {
+        return !!getEntry(this, key);
+      }
+    });
+
+    redefineAll(C.prototype, IS_MAP ? {
+      // 23.1.3.6 Map.prototype.get(key)
+      get: function get(key) {
+        var entry = getEntry(this, key);
+        return entry && entry.value;
+      },
+      // 23.1.3.9 Map.prototype.set(key, value)
+      set: function set(key, value) {
+        return define(this, key === 0 ? 0 : key, value);
+      }
+    } : {
+      // 23.2.3.1 Set.prototype.add(value)
+      add: function add(value) {
+        return define(this, value = value === 0 ? 0 : value, value);
+      }
+    });
+    if (DESCRIPTORS) defineProperty(C.prototype, 'size', {
+      get: function () {
+        return getInternalState(this).size;
+      }
+    });
+    return C;
+  },
+  setStrong: function (C, CONSTRUCTOR_NAME, IS_MAP) {
+    var ITERATOR_NAME = CONSTRUCTOR_NAME + ' Iterator';
+    var getInternalCollectionState = internalStateGetterFor(CONSTRUCTOR_NAME);
+    var getInternalIteratorState = internalStateGetterFor(ITERATOR_NAME);
+    // add .keys, .values, .entries, [@@iterator]
+    // 23.1.3.4, 23.1.3.8, 23.1.3.11, 23.1.3.12, 23.2.3.5, 23.2.3.8, 23.2.3.10, 23.2.3.11
+    defineIterator(C, CONSTRUCTOR_NAME, function (iterated, kind) {
+      setInternalState(this, {
+        type: ITERATOR_NAME,
+        target: iterated,
+        state: getInternalCollectionState(iterated),
+        kind: kind,
+        last: undefined
+      });
+    }, function () {
+      var state = getInternalIteratorState(this);
+      var kind = state.kind;
+      var entry = state.last;
+      // revert to the last existing entry
+      while (entry && entry.removed) entry = entry.previous;
+      // get next entry
+      if (!state.target || !(state.last = entry = entry ? entry.next : state.state.first)) {
+        // or finish the iteration
+        state.target = undefined;
+        return { value: undefined, done: true };
+      }
+      // return step by kind
+      if (kind == 'keys') return { value: entry.key, done: false };
+      if (kind == 'values') return { value: entry.value, done: false };
+      return { value: [entry.key, entry.value], done: false };
+    }, IS_MAP ? 'entries' : 'values', !IS_MAP, true);
+
+    // add [@@species], 23.1.2.2, 23.2.2.2
+    setSpecies(CONSTRUCTOR_NAME);
+  }
+};
+
+},{"../internals/an-instance":6,"../internals/define-iterator":40,"../internals/descriptors":42,"../internals/function-bind-context":54,"../internals/internal-metadata":69,"../internals/internal-state":70,"../internals/iterate":78,"../internals/object-create":96,"../internals/object-define-property":98,"../internals/redefine-all":115,"../internals/set-species":124}],28:[function(require,module,exports){
+'use strict';
+var redefineAll = require('../internals/redefine-all');
+var getWeakData = require('../internals/internal-metadata').getWeakData;
+var anObject = require('../internals/an-object');
+var isObject = require('../internals/is-object');
+var anInstance = require('../internals/an-instance');
+var iterate = require('../internals/iterate');
+var ArrayIterationModule = require('../internals/array-iteration');
+var $has = require('../internals/has');
+var InternalStateModule = require('../internals/internal-state');
+
+var setInternalState = InternalStateModule.set;
+var internalStateGetterFor = InternalStateModule.getterFor;
+var find = ArrayIterationModule.find;
+var findIndex = ArrayIterationModule.findIndex;
+var id = 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(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;
+  }
+};
+
+module.exports = {
+  getConstructor: function (wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER) {
+    var C = wrapper(function (that, iterable) {
+      anInstance(that, C, CONSTRUCTOR_NAME);
+      setInternalState(that, {
+        type: CONSTRUCTOR_NAME,
+        id: id++,
+        frozen: undefined
+      });
+      if (iterable != undefined) iterate(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(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;
+  }
+};
+
+},{"../internals/an-instance":6,"../internals/an-object":7,"../internals/array-iteration":16,"../internals/has":60,"../internals/internal-metadata":69,"../internals/internal-state":70,"../internals/is-object":75,"../internals/iterate":78,"../internals/redefine-all":115}],29:[function(require,module,exports){
+'use strict';
+var $ = require('../internals/export');
+var global = require('../internals/global');
+var isForced = require('../internals/is-forced');
+var redefine = require('../internals/redefine');
+var InternalMetadataModule = require('../internals/internal-metadata');
+var iterate = require('../internals/iterate');
+var anInstance = require('../internals/an-instance');
+var isObject = require('../internals/is-object');
+var fails = require('../internals/fails');
+var checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');
+var setToStringTag = require('../internals/set-to-string-tag');
+var inheritIfRequired = require('../internals/inherit-if-required');
+
+module.exports = 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[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(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);
+    InternalMetadataModule.REQUIRED = true;
+  } else if (isForced(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
+    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);
+    });
+
+    if (!ACCEPT_ITERABLES) {
+      Constructor = wrapper(function (dummy, iterable) {
+        anInstance(dummy, Constructor, CONSTRUCTOR_NAME);
+        var that = inheritIfRequired(new NativeConstructor(), dummy, Constructor);
+        if (iterable != undefined) iterate(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;
+  $({ global: true, forced: Constructor != NativeConstructor }, exported);
+
+  setToStringTag(Constructor, CONSTRUCTOR_NAME);
+
+  if (!IS_WEAK) common.setStrong(Constructor, CONSTRUCTOR_NAME, IS_MAP);
+
+  return Constructor;
+};
+
+},{"../internals/an-instance":6,"../internals/check-correctness-of-iteration":24,"../internals/export":49,"../internals/fails":50,"../internals/global":59,"../internals/inherit-if-required":67,"../internals/internal-metadata":69,"../internals/is-forced":73,"../internals/is-object":75,"../internals/iterate":78,"../internals/redefine":116,"../internals/set-to-string-tag":125}],30:[function(require,module,exports){
+var has = require('../internals/has');
+var ownKeys = require('../internals/own-keys');
+var getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');
+var definePropertyModule = require('../internals/object-define-property');
+
+module.exports = function (target, source) {
+  var keys = ownKeys(source);
+  var defineProperty = definePropertyModule.f;
+  var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;
+  for (var i = 0; i < keys.length; i++) {
+    var key = keys[i];
+    if (!has(target, key)) defineProperty(target, key, getOwnPropertyDescriptor(source, key));
+  }
+};
+
+},{"../internals/has":60,"../internals/object-define-property":98,"../internals/object-get-own-property-descriptor":99,"../internals/own-keys":111}],31:[function(require,module,exports){
+var wellKnownSymbol = require('../internals/well-known-symbol');
+
+var MATCH = wellKnownSymbol('match');
+
+module.exports = function (METHOD_NAME) {
+  var regexp = /./;
+  try {
+    '/./'[METHOD_NAME](regexp);
+  } catch (e) {
+    try {
+      regexp[MATCH] = false;
+      return '/./'[METHOD_NAME](regexp);
+    } catch (f) { /* empty */ }
+  } return false;
+};
+
+},{"../internals/well-known-symbol":156}],32:[function(require,module,exports){
+var fails = require('../internals/fails');
+
+module.exports = !fails(function () {
+  function F() { /* empty */ }
+  F.prototype.constructor = null;
+  return Object.getPrototypeOf(new F()) !== F.prototype;
+});
+
+},{"../internals/fails":50}],33:[function(require,module,exports){
+var requireObjectCoercible = require('../internals/require-object-coercible');
+
+var quot = /"/g;
+
+// B.2.3.2.1 CreateHTML(string, tag, attribute, value)
+// https://tc39.github.io/ecma262/#sec-createhtml
+module.exports = function (string, tag, attribute, value) {
+  var S = String(requireObjectCoercible(string));
+  var p1 = '<' + tag;
+  if (attribute !== '') p1 += ' ' + attribute + '="' + String(value).replace(quot, '&quot;') + '"';
+  return p1 + '>' + S + '</' + tag + '>';
+};
+
+},{"../internals/require-object-coercible":121}],34:[function(require,module,exports){
+'use strict';
+var IteratorPrototype = require('../internals/iterators-core').IteratorPrototype;
+var create = require('../internals/object-create');
+var createPropertyDescriptor = require('../internals/create-property-descriptor');
+var setToStringTag = require('../internals/set-to-string-tag');
+var Iterators = require('../internals/iterators');
+
+var returnThis = function () { return this; };
+
+module.exports = function (IteratorConstructor, NAME, next) {
+  var TO_STRING_TAG = NAME + ' Iterator';
+  IteratorConstructor.prototype = create(IteratorPrototype, { next: createPropertyDescriptor(1, next) });
+  setToStringTag(IteratorConstructor, TO_STRING_TAG, false, true);
+  Iterators[TO_STRING_TAG] = returnThis;
+  return IteratorConstructor;
+};
+
+},{"../internals/create-property-descriptor":36,"../internals/iterators":80,"../internals/iterators-core":79,"../internals/object-create":96,"../internals/set-to-string-tag":125}],35:[function(require,module,exports){
+var DESCRIPTORS = require('../internals/descriptors');
+var definePropertyModule = require('../internals/object-define-property');
+var createPropertyDescriptor = require('../internals/create-property-descriptor');
+
+module.exports = DESCRIPTORS ? function (object, key, value) {
+  return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));
+} : function (object, key, value) {
+  object[key] = value;
+  return object;
+};
+
+},{"../internals/create-property-descriptor":36,"../internals/descriptors":42,"../internals/object-define-property":98}],36:[function(require,module,exports){
+module.exports = function (bitmap, value) {
+  return {
+    enumerable: !(bitmap & 1),
+    configurable: !(bitmap & 2),
+    writable: !(bitmap & 4),
+    value: value
+  };
+};
+
+},{}],37:[function(require,module,exports){
+'use strict';
+var toPrimitive = require('../internals/to-primitive');
+var definePropertyModule = require('../internals/object-define-property');
+var createPropertyDescriptor = require('../internals/create-property-descriptor');
+
+module.exports = function (object, key, value) {
+  var propertyKey = toPrimitive(key);
+  if (propertyKey in object) definePropertyModule.f(object, propertyKey, createPropertyDescriptor(0, value));
+  else object[propertyKey] = value;
+};
+
+},{"../internals/create-property-descriptor":36,"../internals/object-define-property":98,"../internals/to-primitive":148}],38:[function(require,module,exports){
+'use strict';
+var fails = require('../internals/fails');
+var padStart = require('../internals/string-pad').start;
+
+var abs = Math.abs;
+var DatePrototype = Date.prototype;
+var getTime = DatePrototype.getTime;
+var nativeDateToISOString = DatePrototype.toISOString;
+
+// `Date.prototype.toISOString` method implementation
+// https://tc39.github.io/ecma262/#sec-date.prototype.toisostring
+// PhantomJS / old WebKit fails here:
+module.exports = (fails(function () {
+  return nativeDateToISOString.call(new Date(-5e13 - 1)) != '0385-07-25T07:06:39.999Z';
+}) || !fails(function () {
+  nativeDateToISOString.call(new Date(NaN));
+})) ? function toISOString() {
+  if (!isFinite(getTime.call(this))) throw RangeError('Invalid time value');
+  var date = this;
+  var year = date.getUTCFullYear();
+  var milliseconds = date.getUTCMilliseconds();
+  var sign = year < 0 ? '-' : year > 9999 ? '+' : '';
+  return sign + padStart(abs(year), sign ? 6 : 4, 0) +
+    '-' + padStart(date.getUTCMonth() + 1, 2, 0) +
+    '-' + padStart(date.getUTCDate(), 2, 0) +
+    'T' + padStart(date.getUTCHours(), 2, 0) +
+    ':' + padStart(date.getUTCMinutes(), 2, 0) +
+    ':' + padStart(date.getUTCSeconds(), 2, 0) +
+    '.' + padStart(milliseconds, 3, 0) +
+    'Z';
+} : nativeDateToISOString;
+
+},{"../internals/fails":50,"../internals/string-pad":133}],39:[function(require,module,exports){
+'use strict';
+var anObject = require('../internals/an-object');
+var toPrimitive = require('../internals/to-primitive');
+
+module.exports = function (hint) {
+  if (hint !== 'string' && hint !== 'number' && hint !== 'default') {
+    throw TypeError('Incorrect hint');
+  } return toPrimitive(anObject(this), hint !== 'number');
+};
+
+},{"../internals/an-object":7,"../internals/to-primitive":148}],40:[function(require,module,exports){
+'use strict';
+var $ = require('../internals/export');
+var createIteratorConstructor = require('../internals/create-iterator-constructor');
+var getPrototypeOf = require('../internals/object-get-prototype-of');
+var setPrototypeOf = require('../internals/object-set-prototype-of');
+var setToStringTag = require('../internals/set-to-string-tag');
+var createNonEnumerableProperty = require('../internals/create-non-enumerable-property');
+var redefine = require('../internals/redefine');
+var wellKnownSymbol = require('../internals/well-known-symbol');
+var IS_PURE = require('../internals/is-pure');
+var Iterators = require('../internals/iterators');
+var IteratorsCore = require('../internals/iterators-core');
+
+var IteratorPrototype = IteratorsCore.IteratorPrototype;
+var BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS;
+var ITERATOR = wellKnownSymbol('iterator');
+var KEYS = 'keys';
+var VALUES = 'values';
+var ENTRIES = 'entries';
+
+var returnThis = function () { return this; };
+
+module.exports = function (Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) {
+  createIteratorConstructor(IteratorConstructor, NAME, next);
+
+  var getIterationMethod = function (KIND) {
+    if (KIND === DEFAULT && defaultIterator) return defaultIterator;
+    if (!BUGGY_SAFARI_ITERATORS && KIND in IterablePrototype) return IterablePrototype[KIND];
+    switch (KIND) {
+      case KEYS: return function keys() { return new IteratorConstructor(this, KIND); };
+      case VALUES: return function values() { return new IteratorConstructor(this, KIND); };
+      case ENTRIES: return function entries() { return new IteratorConstructor(this, KIND); };
+    } return function () { return new IteratorConstructor(this); };
+  };
+
+  var TO_STRING_TAG = NAME + ' Iterator';
+  var INCORRECT_VALUES_NAME = false;
+  var IterablePrototype = Iterable.prototype;
+  var nativeIterator = IterablePrototype[ITERATOR]
+    || IterablePrototype['@@iterator']
+    || DEFAULT && IterablePrototype[DEFAULT];
+  var defaultIterator = !BUGGY_SAFARI_ITERATORS && nativeIterator || getIterationMethod(DEFAULT);
+  var anyNativeIterator = NAME == 'Array' ? IterablePrototype.entries || nativeIterator : nativeIterator;
+  var CurrentIteratorPrototype, methods, KEY;
+
+  // fix native
+  if (anyNativeIterator) {
+    CurrentIteratorPrototype = getPrototypeOf(anyNativeIterator.call(new Iterable()));
+    if (IteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) {
+      if (!IS_PURE && getPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype) {
+        if (setPrototypeOf) {
+          setPrototypeOf(CurrentIteratorPrototype, IteratorPrototype);
+        } else if (typeof CurrentIteratorPrototype[ITERATOR] != 'function') {
+          createNonEnumerableProperty(CurrentIteratorPrototype, ITERATOR, returnThis);
+        }
+      }
+      // Set @@toStringTag to native iterators
+      setToStringTag(CurrentIteratorPrototype, TO_STRING_TAG, true, true);
+      if (IS_PURE) Iterators[TO_STRING_TAG] = returnThis;
+    }
+  }
+
+  // fix Array#{values, @@iterator}.name in V8 / FF
+  if (DEFAULT == VALUES && nativeIterator && nativeIterator.name !== VALUES) {
+    INCORRECT_VALUES_NAME = true;
+    defaultIterator = function values() { return nativeIterator.call(this); };
+  }
+
+  // define iterator
+  if ((!IS_PURE || FORCED) && IterablePrototype[ITERATOR] !== defaultIterator) {
+    createNonEnumerableProperty(IterablePrototype, ITERATOR, defaultIterator);
+  }
+  Iterators[NAME] = defaultIterator;
+
+  // export additional methods
+  if (DEFAULT) {
+    methods = {
+      values: getIterationMethod(VALUES),
+      keys: IS_SET ? defaultIterator : getIterationMethod(KEYS),
+      entries: getIterationMethod(ENTRIES)
+    };
+    if (FORCED) for (KEY in methods) {
+      if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) {
+        redefine(IterablePrototype, KEY, methods[KEY]);
+      }
+    } else $({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods);
+  }
+
+  return methods;
+};
+
+},{"../internals/create-iterator-constructor":34,"../internals/create-non-enumerable-property":35,"../internals/export":49,"../internals/is-pure":76,"../internals/iterators":80,"../internals/iterators-core":79,"../internals/object-get-prototype-of":103,"../internals/object-set-prototype-of":108,"../internals/redefine":116,"../internals/set-to-string-tag":125,"../internals/well-known-symbol":156}],41:[function(require,module,exports){
+var path = require('../internals/path');
+var has = require('../internals/has');
+var wrappedWellKnownSymbolModule = require('../internals/well-known-symbol-wrapped');
+var defineProperty = require('../internals/object-define-property').f;
+
+module.exports = function (NAME) {
+  var Symbol = path.Symbol || (path.Symbol = {});
+  if (!has(Symbol, NAME)) defineProperty(Symbol, NAME, {
+    value: wrappedWellKnownSymbolModule.f(NAME)
+  });
+};
+
+},{"../internals/has":60,"../internals/object-define-property":98,"../internals/path":112,"../internals/well-known-symbol-wrapped":155}],42:[function(require,module,exports){
+var fails = require('../internals/fails');
+
+// Thank's IE8 for his funny defineProperty
+module.exports = !fails(function () {
+  return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] != 7;
+});
+
+},{"../internals/fails":50}],43:[function(require,module,exports){
+var global = require('../internals/global');
+var isObject = require('../internals/is-object');
+
+var document = global.document;
+// typeof document.createElement is 'object' in old IE
+var EXISTS = isObject(document) && isObject(document.createElement);
+
+module.exports = function (it) {
+  return EXISTS ? document.createElement(it) : {};
+};
+
+},{"../internals/global":59,"../internals/is-object":75}],44:[function(require,module,exports){
+// iterable DOM collections
+// flag - `iterable` interface - 'entries', 'keys', 'values', 'forEach' methods
+module.exports = {
+  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
+};
+
+},{}],45:[function(require,module,exports){
+var userAgent = require('../internals/engine-user-agent');
+
+module.exports = /(iphone|ipod|ipad).*applewebkit/i.test(userAgent);
+
+},{"../internals/engine-user-agent":46}],46:[function(require,module,exports){
+var getBuiltIn = require('../internals/get-built-in');
+
+module.exports = getBuiltIn('navigator', 'userAgent') || '';
+
+},{"../internals/get-built-in":56}],47:[function(require,module,exports){
+var global = require('../internals/global');
+var userAgent = require('../internals/engine-user-agent');
+
+var process = global.process;
+var versions = process && process.versions;
+var v8 = versions && versions.v8;
+var match, version;
+
+if (v8) {
+  match = v8.split('.');
+  version = match[0] + match[1];
+} else if (userAgent) {
+  match = userAgent.match(/Edge\/(\d+)/);
+  if (!match || match[1] >= 74) {
+    match = userAgent.match(/Chrome\/(\d+)/);
+    if (match) version = match[1];
+  }
+}
+
+module.exports = version && +version;
+
+},{"../internals/engine-user-agent":46,"../internals/global":59}],48:[function(require,module,exports){
+// IE8- don't enum bug keys
+module.exports = [
+  'constructor',
+  'hasOwnProperty',
+  'isPrototypeOf',
+  'propertyIsEnumerable',
+  'toLocaleString',
+  'toString',
+  'valueOf'
+];
+
+},{}],49:[function(require,module,exports){
+var global = require('../internals/global');
+var getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;
+var createNonEnumerableProperty = require('../internals/create-non-enumerable-property');
+var redefine = require('../internals/redefine');
+var setGlobal = require('../internals/set-global');
+var copyConstructorProperties = require('../internals/copy-constructor-properties');
+var isForced = require('../internals/is-forced');
+
+/*
+  options.target      - name of the target object
+  options.global      - target is the global object
+  options.stat        - export as static methods of target
+  options.proto       - export as prototype methods of target
+  options.real        - real prototype method for the `pure` version
+  options.forced      - export even if the native feature is available
+  options.bind        - bind methods to the target, required for the `pure` version
+  options.wrap        - wrap constructors to preventing global pollution, required for the `pure` version
+  options.unsafe      - use the simple assignment of property instead of delete + defineProperty
+  options.sham        - add a flag to not completely full polyfills
+  options.enumerable  - export as enumerable property
+  options.noTargetGet - prevent calling a getter on target
+*/
+module.exports = function (options, source) {
+  var TARGET = options.target;
+  var GLOBAL = options.global;
+  var STATIC = options.stat;
+  var FORCED, target, key, targetProperty, sourceProperty, descriptor;
+  if (GLOBAL) {
+    target = global;
+  } else if (STATIC) {
+    target = global[TARGET] || setGlobal(TARGET, {});
+  } else {
+    target = (global[TARGET] || {}).prototype;
+  }
+  if (target) for (key in source) {
+    sourceProperty = source[key];
+    if (options.noTargetGet) {
+      descriptor = getOwnPropertyDescriptor(target, key);
+      targetProperty = descriptor && descriptor.value;
+    } else targetProperty = target[key];
+    FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);
+    // contained in target
+    if (!FORCED && targetProperty !== undefined) {
+      if (typeof sourceProperty === typeof targetProperty) continue;
+      copyConstructorProperties(sourceProperty, targetProperty);
+    }
+    // add a flag to not completely full polyfills
+    if (options.sham || (targetProperty && targetProperty.sham)) {
+      createNonEnumerableProperty(sourceProperty, 'sham', true);
+    }
+    // extend global
+    redefine(target, key, sourceProperty, options);
+  }
+};
+
+},{"../internals/copy-constructor-properties":30,"../internals/create-non-enumerable-property":35,"../internals/global":59,"../internals/is-forced":73,"../internals/object-get-own-property-descriptor":99,"../internals/redefine":116,"../internals/set-global":123}],50:[function(require,module,exports){
+module.exports = function (exec) {
+  try {
+    return !!exec();
+  } catch (error) {
+    return true;
+  }
+};
+
+},{}],51:[function(require,module,exports){
+'use strict';
+// TODO: Remove from `core-js@4` since it's moved to entry points
+require('../modules/es.regexp.exec');
+var redefine = require('../internals/redefine');
+var fails = require('../internals/fails');
+var wellKnownSymbol = require('../internals/well-known-symbol');
+var regexpExec = require('../internals/regexp-exec');
+var createNonEnumerableProperty = require('../internals/create-non-enumerable-property');
+
+var SPECIES = wellKnownSymbol('species');
+
+var REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () {
+  // #replace needs built-in support for named groups.
+  // #match works fine because it just return the exec results, even if it has
+  // a "grops" property.
+  var re = /./;
+  re.exec = function () {
+    var result = [];
+    result.groups = { a: '7' };
+    return result;
+  };
+  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 () {
+  var re = /(?:)/;
+  var originalExec = re.exec;
+  re.exec = function () { return originalExec.apply(this, arguments); };
+  var result = 'ab'.split(re);
+  return result.length !== 2 || result[0] !== 'a' || result[1] !== 'b';
+});
+
+module.exports = function (KEY, length, exec, sham) {
+  var SYMBOL = wellKnownSymbol(KEY);
+
+  var DELEGATES_TO_SYMBOL = !fails(function () {
+    // String methods call symbol-named RegEp methods
+    var O = {};
+    O[SYMBOL] = function () { return 7; };
+    return ''[KEY](O) != 7;
+  });
+
+  var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL && !fails(function () {
+    // Symbol-named RegExp methods call .exec
+    var execCalled = false;
+    var re = /a/;
+
+    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] = function () { return re; };
+      re.flags = '';
+      re[SYMBOL] = /./[SYMBOL];
+    }
+
+    re.exec = function () { execCalled = true; return null; };
+
+    re[SYMBOL]('');
+    return !execCalled;
+  });
+
+  if (
+    !DELEGATES_TO_SYMBOL ||
+    !DELEGATES_TO_EXEC ||
+    (KEY === 'replace' && !(
+      REPLACE_SUPPORTS_NAMED_GROUPS &&
+      REPLACE_KEEPS_$0 &&
+      !REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE
+    )) ||
+    (KEY === 'split' && !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC)
+  ) {
+    var nativeRegExpMethod = /./[SYMBOL];
+    var methods = exec(SYMBOL, ''[KEY], function (nativeMethod, regexp, str, arg2, forceStringMethod) {
+      if (regexp.exec === regexpExec) {
+        if (DELEGATES_TO_SYMBOL && !forceStringMethod) {
+          // The native String method already delegates to @@method (this
+          // polyfilled function), leasing to infinite recursion.
+          // We avoid it by directly calling the native @@method method.
+          return { done: true, value: nativeRegExpMethod.call(regexp, str, arg2) };
+        }
+        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];
+
+    redefine(String.prototype, KEY, stringMethod);
+    redefine(RegExp.prototype, SYMBOL, length == 2
+      // 21.2.5.8 RegExp.prototype[@@replace](string, replaceValue)
+      // 21.2.5.11 RegExp.prototype[@@split](string, limit)
+      ? function (string, arg) { return regexMethod.call(string, this, arg); }
+      // 21.2.5.6 RegExp.prototype[@@match](string)
+      // 21.2.5.9 RegExp.prototype[@@search](string)
+      : function (string) { return regexMethod.call(string, this); }
+    );
+  }
+
+  if (sham) createNonEnumerableProperty(RegExp.prototype[SYMBOL], 'sham', true);
+};
+
+},{"../internals/create-non-enumerable-property":35,"../internals/fails":50,"../internals/redefine":116,"../internals/regexp-exec":118,"../internals/well-known-symbol":156,"../modules/es.regexp.exec":277}],52:[function(require,module,exports){
+'use strict';
+var isArray = require('../internals/is-array');
+var toLength = require('../internals/to-length');
+var bind = require('../internals/function-bind-context');
+
+// `FlattenIntoArray` abstract operation
+// https://tc39.github.io/proposal-flatMap/#sec-FlattenIntoArray
+var flattenIntoArray = function (target, original, source, sourceLen, start, depth, mapper, thisArg) {
+  var targetIndex = start;
+  var sourceIndex = 0;
+  var mapFn = mapper ? bind(mapper, thisArg, 3) : false;
+  var element;
+
+  while (sourceIndex < sourceLen) {
+    if (sourceIndex in source) {
+      element = mapFn ? mapFn(source[sourceIndex], sourceIndex, original) : source[sourceIndex];
+
+      if (depth > 0 && isArray(element)) {
+        targetIndex = flattenIntoArray(target, original, element, toLength(element.length), targetIndex, depth - 1) - 1;
+      } else {
+        if (targetIndex >= 0x1FFFFFFFFFFFFF) throw TypeError('Exceed the acceptable array length');
+        target[targetIndex] = element;
+      }
+
+      targetIndex++;
+    }
+    sourceIndex++;
+  }
+  return targetIndex;
+};
+
+module.exports = flattenIntoArray;
+
+},{"../internals/function-bind-context":54,"../internals/is-array":72,"../internals/to-length":144}],53:[function(require,module,exports){
+var fails = require('../internals/fails');
+
+module.exports = !fails(function () {
+  return Object.isExtensible(Object.preventExtensions({}));
+});
+
+},{"../internals/fails":50}],54:[function(require,module,exports){
+var aFunction = require('../internals/a-function');
+
+// optional / simple context binding
+module.exports = function (fn, that, length) {
+  aFunction(fn);
+  if (that === undefined) return fn;
+  switch (length) {
+    case 0: return function () {
+      return fn.call(that);
+    };
+    case 1: return function (a) {
+      return fn.call(that, a);
+    };
+    case 2: return function (a, b) {
+      return fn.call(that, a, b);
+    };
+    case 3: return function (a, b, c) {
+      return fn.call(that, a, b, c);
+    };
+  }
+  return function (/* ...args */) {
+    return fn.apply(that, arguments);
+  };
+};
+
+},{"../internals/a-function":2}],55:[function(require,module,exports){
+'use strict';
+var aFunction = require('../internals/a-function');
+var isObject = require('../internals/is-object');
+
+var slice = [].slice;
+var factories = {};
+
+var construct = function (C, argsLength, args) {
+  if (!(argsLength in factories)) {
+    for (var list = [], i = 0; i < argsLength; i++) list[i] = 'a[' + i + ']';
+    // eslint-disable-next-line no-new-func
+    factories[argsLength] = Function('C,a', 'return new C(' + list.join(',') + ')');
+  } return factories[argsLength](C, args);
+};
+
+// `Function.prototype.bind` method implementation
+// https://tc39.github.io/ecma262/#sec-function.prototype.bind
+module.exports = Function.bind || function bind(that /* , ...args */) {
+  var fn = aFunction(this);
+  var partArgs = slice.call(arguments, 1);
+  var boundFunction = function bound(/* args... */) {
+    var args = partArgs.concat(slice.call(arguments));
+    return this instanceof boundFunction ? construct(fn, args.length, args) : fn.apply(that, args);
+  };
+  if (isObject(fn.prototype)) boundFunction.prototype = fn.prototype;
+  return boundFunction;
+};
+
+},{"../internals/a-function":2,"../internals/is-object":75}],56:[function(require,module,exports){
+var path = require('../internals/path');
+var global = require('../internals/global');
+
+var aFunction = function (variable) {
+  return typeof variable == 'function' ? variable : undefined;
+};
+
+module.exports = function (namespace, method) {
+  return arguments.length < 2 ? aFunction(path[namespace]) || aFunction(global[namespace])
+    : path[namespace] && path[namespace][method] || global[namespace] && global[namespace][method];
+};
+
+},{"../internals/global":59,"../internals/path":112}],57:[function(require,module,exports){
+var classof = require('../internals/classof');
+var Iterators = require('../internals/iterators');
+var wellKnownSymbol = require('../internals/well-known-symbol');
+
+var ITERATOR = wellKnownSymbol('iterator');
+
+module.exports = function (it) {
+  if (it != undefined) return it[ITERATOR]
+    || it['@@iterator']
+    || Iterators[classof(it)];
+};
+
+},{"../internals/classof":26,"../internals/iterators":80,"../internals/well-known-symbol":156}],58:[function(require,module,exports){
+var anObject = require('../internals/an-object');
+var getIteratorMethod = require('../internals/get-iterator-method');
+
+module.exports = function (it) {
+  var iteratorMethod = getIteratorMethod(it);
+  if (typeof iteratorMethod != 'function') {
+    throw TypeError(String(it) + ' is not iterable');
+  } return anObject(iteratorMethod.call(it));
+};
+
+},{"../internals/an-object":7,"../internals/get-iterator-method":57}],59:[function(require,module,exports){
+(function (global){(function (){
+var check = function (it) {
+  return it && it.Math == Math && it;
+};
+
+// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028
+module.exports =
+  // eslint-disable-next-line no-undef
+  check(typeof globalThis == 'object' && globalThis) ||
+  check(typeof window == 'object' && window) ||
+  check(typeof self == 'object' && self) ||
+  check(typeof global == 'object' && global) ||
+  // eslint-disable-next-line no-new-func
+  Function('return this')();
+
+}).call(this)}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
+},{}],60:[function(require,module,exports){
+var hasOwnProperty = {}.hasOwnProperty;
+
+module.exports = function (it, key) {
+  return hasOwnProperty.call(it, key);
+};
+
+},{}],61:[function(require,module,exports){
+module.exports = {};
+
+},{}],62:[function(require,module,exports){
+var global = require('../internals/global');
+
+module.exports = function (a, b) {
+  var console = global.console;
+  if (console && console.error) {
+    arguments.length === 1 ? console.error(a) : console.error(a, b);
+  }
+};
+
+},{"../internals/global":59}],63:[function(require,module,exports){
+var getBuiltIn = require('../internals/get-built-in');
+
+module.exports = getBuiltIn('document', 'documentElement');
+
+},{"../internals/get-built-in":56}],64:[function(require,module,exports){
+var DESCRIPTORS = require('../internals/descriptors');
+var fails = require('../internals/fails');
+var createElement = require('../internals/document-create-element');
+
+// Thank's IE8 for his funny defineProperty
+module.exports = !DESCRIPTORS && !fails(function () {
+  return Object.defineProperty(createElement('div'), 'a', {
+    get: function () { return 7; }
+  }).a != 7;
+});
+
+},{"../internals/descriptors":42,"../internals/document-create-element":43,"../internals/fails":50}],65:[function(require,module,exports){
+// IEEE754 conversions based on https://github.com/feross/ieee754
+// eslint-disable-next-line no-shadow-restricted-names
+var Infinity = 1 / 0;
+var abs = Math.abs;
+var pow = Math.pow;
+var floor = Math.floor;
+var log = Math.log;
+var LN2 = Math.LN2;
+
+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 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) {
+    // 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--;
+      c *= 2;
+    }
+    if (exponent + eBias >= 1) {
+      number += rt / c;
+    } else {
+      number += rt * pow(2, 1 - eBias);
+    }
+    if (number * c >= 2) {
+      exponent++;
+      c /= 2;
+    }
+    if (exponent + eBias >= eMax) {
+      mantissa = 0;
+      exponent = eMax;
+    } else if (exponent + eBias >= 1) {
+      mantissa = (number * c - 1) * pow(2, mantissaLength);
+      exponent = exponent + eBias;
+    } else {
+      mantissa = number * pow(2, eBias - 1) * pow(2, mantissaLength);
+      exponent = 0;
+    }
+  }
+  for (; mantissaLength >= 8; buffer[index++] = mantissa & 255, mantissa /= 256, mantissaLength -= 8);
+  exponent = exponent << mantissaLength | mantissa;
+  exponentLength += mantissaLength;
+  for (; exponentLength > 0; buffer[index++] = exponent & 255, exponent /= 256, exponentLength -= 8);
+  buffer[--index] |= sign * 128;
+  return buffer;
+};
+
+var unpack = function (buffer, mantissaLength) {
+  var bytes = buffer.length;
+  var exponentLength = bytes * 8 - mantissaLength - 1;
+  var eMax = (1 << exponentLength) - 1;
+  var eBias = eMax >> 1;
+  var nBits = exponentLength - 7;
+  var index = bytes - 1;
+  var sign = buffer[index--];
+  var exponent = sign & 127;
+  var mantissa;
+  sign >>= 7;
+  for (; nBits > 0; exponent = exponent * 256 + buffer[index], index--, nBits -= 8);
+  mantissa = exponent & (1 << -nBits) - 1;
+  exponent >>= -nBits;
+  nBits += mantissaLength;
+  for (; nBits > 0; mantissa = mantissa * 256 + buffer[index], index--, nBits -= 8);
+  if (exponent === 0) {
+    exponent = 1 - eBias;
+  } else if (exponent === eMax) {
+    return mantissa ? NaN : sign ? -Infinity : Infinity;
+  } else {
+    mantissa = mantissa + pow(2, mantissaLength);
+    exponent = exponent - eBias;
+  } return (sign ? -1 : 1) * mantissa * pow(2, exponent - mantissaLength);
+};
+
+module.exports = {
+  pack: pack,
+  unpack: unpack
+};
+
+},{}],66:[function(require,module,exports){
+var fails = require('../internals/fails');
+var classof = require('../internals/classof-raw');
+
+var split = ''.split;
+
+// fallback for non-array-like ES3 and non-enumerable old V8 strings
+module.exports = fails(function () {
+  // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346
+  // eslint-disable-next-line no-prototype-builtins
+  return !Object('z').propertyIsEnumerable(0);
+}) ? function (it) {
+  return classof(it) == 'String' ? split.call(it, '') : Object(it);
+} : Object;
+
+},{"../internals/classof-raw":25,"../internals/fails":50}],67:[function(require,module,exports){
+var isObject = require('../internals/is-object');
+var setPrototypeOf = require('../internals/object-set-prototype-of');
+
+// makes subclassing work correct for wrapped built-ins
+module.exports = function ($this, dummy, Wrapper) {
+  var NewTarget, NewTargetPrototype;
+  if (
+    // it can work only with native `setPrototypeOf`
+    setPrototypeOf &&
+    // 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
+  ) setPrototypeOf($this, NewTargetPrototype);
+  return $this;
+};
+
+},{"../internals/is-object":75,"../internals/object-set-prototype-of":108}],68:[function(require,module,exports){
+var store = require('../internals/shared-store');
+
+var functionToString = Function.toString;
+
+// this helper broken in `3.4.1-3.4.4`, so we can't use `shared` helper
+if (typeof store.inspectSource != 'function') {
+  store.inspectSource = function (it) {
+    return functionToString.call(it);
+  };
+}
+
+module.exports = store.inspectSource;
+
+},{"../internals/shared-store":127}],69:[function(require,module,exports){
+var hiddenKeys = require('../internals/hidden-keys');
+var isObject = require('../internals/is-object');
+var has = require('../internals/has');
+var defineProperty = require('../internals/object-define-property').f;
+var uid = require('../internals/uid');
+var FREEZING = require('../internals/freezing');
+
+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;
+
+},{"../internals/freezing":53,"../internals/has":60,"../internals/hidden-keys":61,"../internals/is-object":75,"../internals/object-define-property":98,"../internals/uid":153}],70:[function(require,module,exports){
+var NATIVE_WEAK_MAP = require('../internals/native-weak-map');
+var global = require('../internals/global');
+var isObject = require('../internals/is-object');
+var createNonEnumerableProperty = require('../internals/create-non-enumerable-property');
+var objectHas = require('../internals/has');
+var sharedKey = require('../internals/shared-key');
+var hiddenKeys = require('../internals/hidden-keys');
+
+var WeakMap = global.WeakMap;
+var set, get, has;
+
+var enforce = function (it) {
+  return has(it) ? get(it) : set(it, {});
+};
+
+var getterFor = function (TYPE) {
+  return function (it) {
+    var state;
+    if (!isObject(it) || (state = get(it)).type !== TYPE) {
+      throw TypeError('Incompatible receiver, ' + TYPE + ' required');
+    } return state;
+  };
+};
+
+if (NATIVE_WEAK_MAP) {
+  var store = new WeakMap();
+  var wmget = store.get;
+  var wmhas = store.has;
+  var wmset = store.set;
+  set = function (it, metadata) {
+    wmset.call(store, it, metadata);
+    return metadata;
+  };
+  get = function (it) {
+    return wmget.call(store, it) || {};
+  };
+  has = function (it) {
+    return wmhas.call(store, it);
+  };
+} else {
+  var STATE = sharedKey('state');
+  hiddenKeys[STATE] = true;
+  set = function (it, metadata) {
+    createNonEnumerableProperty(it, STATE, metadata);
+    return metadata;
+  };
+  get = function (it) {
+    return objectHas(it, STATE) ? it[STATE] : {};
+  };
+  has = function (it) {
+    return objectHas(it, STATE);
+  };
+}
+
+module.exports = {
+  set: set,
+  get: get,
+  has: has,
+  enforce: enforce,
+  getterFor: getterFor
+};
+
+},{"../internals/create-non-enumerable-property":35,"../internals/global":59,"../internals/has":60,"../internals/hidden-keys":61,"../internals/is-object":75,"../internals/native-weak-map":89,"../internals/shared-key":126}],71:[function(require,module,exports){
+var wellKnownSymbol = require('../internals/well-known-symbol');
+var Iterators = require('../internals/iterators');
+
+var ITERATOR = wellKnownSymbol('iterator');
+var ArrayPrototype = Array.prototype;
+
+// check on default Array iterator
+module.exports = function (it) {
+  return it !== undefined && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it);
+};
+
+},{"../internals/iterators":80,"../internals/well-known-symbol":156}],72:[function(require,module,exports){
+var classof = require('../internals/classof-raw');
+
+// `IsArray` abstract operation
+// https://tc39.github.io/ecma262/#sec-isarray
+module.exports = Array.isArray || function isArray(arg) {
+  return classof(arg) == 'Array';
+};
+
+},{"../internals/classof-raw":25}],73:[function(require,module,exports){
+var fails = require('../internals/fails');
+
+var replacement = /#|\.prototype\./;
+
+var isForced = function (feature, detection) {
+  var value = data[normalize(feature)];
+  return value == POLYFILL ? true
+    : value == NATIVE ? false
+    : typeof detection == 'function' ? fails(detection)
+    : !!detection;
+};
+
+var normalize = isForced.normalize = function (string) {
+  return String(string).replace(replacement, '.').toLowerCase();
+};
+
+var data = isForced.data = {};
+var NATIVE = isForced.NATIVE = 'N';
+var POLYFILL = isForced.POLYFILL = 'P';
+
+module.exports = isForced;
+
+},{"../internals/fails":50}],74:[function(require,module,exports){
+var isObject = require('../internals/is-object');
+
+var floor = Math.floor;
+
+// `Number.isInteger` method implementation
+// https://tc39.github.io/ecma262/#sec-number.isinteger
+module.exports = function isInteger(it) {
+  return !isObject(it) && isFinite(it) && floor(it) === it;
+};
+
+},{"../internals/is-object":75}],75:[function(require,module,exports){
+module.exports = function (it) {
+  return typeof it === 'object' ? it !== null : typeof it === 'function';
+};
+
+},{}],76:[function(require,module,exports){
+module.exports = false;
+
+},{}],77:[function(require,module,exports){
+var isObject = require('../internals/is-object');
+var classof = require('../internals/classof-raw');
+var wellKnownSymbol = require('../internals/well-known-symbol');
+
+var MATCH = wellKnownSymbol('match');
+
+// `IsRegExp` abstract operation
+// https://tc39.github.io/ecma262/#sec-isregexp
+module.exports = function (it) {
+  var isRegExp;
+  return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : classof(it) == 'RegExp');
+};
+
+},{"../internals/classof-raw":25,"../internals/is-object":75,"../internals/well-known-symbol":156}],78:[function(require,module,exports){
+var anObject = require('../internals/an-object');
+var isArrayIteratorMethod = require('../internals/is-array-iterator-method');
+var toLength = require('../internals/to-length');
+var bind = require('../internals/function-bind-context');
+var getIteratorMethod = require('../internals/get-iterator-method');
+var callWithSafeIterationClosing = require('../internals/call-with-safe-iteration-closing');
+
+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 = bind(fn, that, AS_ENTRIES ? 2 : 1);
+  var iterator, iterFn, index, length, result, next, step;
+
+  if (IS_ITERATOR) {
+    iterator = iterable;
+  } else {
+    iterFn = getIteratorMethod(iterable);
+    if (typeof iterFn != 'function') throw TypeError('Target is not iterable');
+    // optimisation for array iterators
+    if (isArrayIteratorMethod(iterFn)) {
+      for (index = 0, length = toLength(iterable.length); length > index; index++) {
+        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);
+  }
+
+  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);
+};
+
+iterate.stop = function (result) {
+  return new Result(true, result);
+};
+
+},{"../internals/an-object":7,"../internals/call-with-safe-iteration-closing":23,"../internals/function-bind-context":54,"../internals/get-iterator-method":57,"../internals/is-array-iterator-method":71,"../internals/to-length":144}],79:[function(require,module,exports){
+'use strict';
+var getPrototypeOf = require('../internals/object-get-prototype-of');
+var createNonEnumerableProperty = require('../internals/create-non-enumerable-property');
+var has = require('../internals/has');
+var wellKnownSymbol = require('../internals/well-known-symbol');
+var IS_PURE = require('../internals/is-pure');
+
+var ITERATOR = wellKnownSymbol('iterator');
+var BUGGY_SAFARI_ITERATORS = false;
+
+var returnThis = function () { return this; };
+
+// `%IteratorPrototype%` object
+// https://tc39.github.io/ecma262/#sec-%iteratorprototype%-object
+var IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator;
+
+if ([].keys) {
+  arrayIterator = [].keys();
+  // Safari 8 has buggy iterators w/o `next`
+  if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS = true;
+  else {
+    PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator));
+    if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype;
+  }
+}
+
+if (IteratorPrototype == undefined) IteratorPrototype = {};
+
+// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()
+if (!IS_PURE && !has(IteratorPrototype, ITERATOR)) {
+  createNonEnumerableProperty(IteratorPrototype, ITERATOR, returnThis);
+}
+
+module.exports = {
+  IteratorPrototype: IteratorPrototype,
+  BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS
+};
+
+},{"../internals/create-non-enumerable-property":35,"../internals/has":60,"../internals/is-pure":76,"../internals/object-get-prototype-of":103,"../internals/well-known-symbol":156}],80:[function(require,module,exports){
+arguments[4][61][0].apply(exports,arguments)
+},{"dup":61}],81:[function(require,module,exports){
+var nativeExpm1 = Math.expm1;
+var exp = Math.exp;
+
+// `Math.expm1` method implementation
+// https://tc39.github.io/ecma262/#sec-math.expm1
+module.exports = (!nativeExpm1
+  // Old FF bug
+  || nativeExpm1(10) > 22025.465794806719 || nativeExpm1(10) < 22025.4657948067165168
+  // Tor Browser bug
+  || nativeExpm1(-2e-17) != -2e-17
+) ? function expm1(x) {
+  return (x = +x) == 0 ? x : x > -1e-6 && x < 1e-6 ? x + x * x / 2 : exp(x) - 1;
+} : nativeExpm1;
+
+},{}],82:[function(require,module,exports){
+var sign = require('../internals/math-sign');
+
+var abs = Math.abs;
+var pow = Math.pow;
+var EPSILON = pow(2, -52);
+var EPSILON32 = pow(2, -23);
+var MAX32 = pow(2, 127) * (2 - EPSILON32);
+var MIN32 = pow(2, -126);
+
+var roundTiesToEven = function (n) {
+  return n + 1 / EPSILON - 1 / EPSILON;
+};
+
+// `Math.fround` method implementation
+// https://tc39.github.io/ecma262/#sec-math.fround
+module.exports = Math.fround || function fround(x) {
+  var $abs = abs(x);
+  var $sign = sign(x);
+  var a, result;
+  if ($abs < MIN32) return $sign * roundTiesToEven($abs / MIN32 / EPSILON32) * MIN32 * EPSILON32;
+  a = (1 + EPSILON32 / EPSILON) * $abs;
+  result = a - (a - $abs);
+  // eslint-disable-next-line no-self-compare
+  if (result > MAX32 || result != result) return $sign * Infinity;
+  return $sign * result;
+};
+
+},{"../internals/math-sign":84}],83:[function(require,module,exports){
+var log = Math.log;
+
+// `Math.log1p` method implementation
+// https://tc39.github.io/ecma262/#sec-math.log1p
+module.exports = Math.log1p || function log1p(x) {
+  return (x = +x) > -1e-8 && x < 1e-8 ? x - x * x / 2 : log(1 + x);
+};
+
+},{}],84:[function(require,module,exports){
+// `Math.sign` method implementation
+// https://tc39.github.io/ecma262/#sec-math.sign
+module.exports = Math.sign || function sign(x) {
+  // eslint-disable-next-line no-self-compare
+  return (x = +x) == 0 || x != x ? x : x < 0 ? -1 : 1;
+};
+
+},{}],85:[function(require,module,exports){
+var global = require('../internals/global');
+var getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;
+var classof = require('../internals/classof-raw');
+var macrotask = require('../internals/task').set;
+var IS_IOS = require('../internals/engine-is-ios');
+
+var MutationObserver = global.MutationObserver || global.WebKitMutationObserver;
+var process = global.process;
+var Promise = global.Promise;
+var IS_NODE = classof(process) == 'process';
+// Node.js 11 shows ExperimentalWarning on getting `queueMicrotask`
+var queueMicrotaskDescriptor = getOwnPropertyDescriptor(global, 'queueMicrotask');
+var queueMicrotask = queueMicrotaskDescriptor && queueMicrotaskDescriptor.value;
+
+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.domain)) parent.exit();
+    while (head) {
+      fn = head.fn;
+      head = head.next;
+      try {
+        fn();
+      } catch (error) {
+        if (head) notify();
+        else last = undefined;
+        throw error;
+      }
+    } last = undefined;
+    if (parent) parent.enter();
+  };
+
+  // Node.js
+  if (IS_NODE) {
+    notify = function () {
+      process.nextTick(flush);
+    };
+  // browsers with MutationObserver, except iOS - https://github.com/zloirock/core-js/issues/339
+  } else if (MutationObserver && !IS_IOS) {
+    toggle = true;
+    node = document.createTextNode('');
+    new MutationObserver(flush).observe(node, { characterData: true });
+    notify = function () {
+      node.data = toggle = !toggle;
+    };
+  // environments with maybe non-completely correct, but existent Promise
+  } else if (Promise && Promise.resolve) {
+    // Promise.resolve without an argument throws an error in LG WebOS 2
+    promise = Promise.resolve(undefined);
+    then = promise.then;
+    notify = function () {
+      then.call(promise, flush);
+    };
+  // for other environments - macrotask based on:
+  // - setImmediate
+  // - MessageChannel
+  // - window.postMessag
+  // - onreadystatechange
+  // - setTimeout
+  } else {
+    notify = function () {
+      // strange IE + webpack dev server bug - use .call(global)
+      macrotask.call(global, flush);
+    };
+  }
+}
+
+module.exports = queueMicrotask || function (fn) {
+  var task = { fn: fn, next: undefined };
+  if (last) last.next = task;
+  if (!head) {
+    head = task;
+    notify();
+  } last = task;
+};
+
+},{"../internals/classof-raw":25,"../internals/engine-is-ios":45,"../internals/global":59,"../internals/object-get-own-property-descriptor":99,"../internals/task":138}],86:[function(require,module,exports){
+var global = require('../internals/global');
+
+module.exports = global.Promise;
+
+},{"../internals/global":59}],87:[function(require,module,exports){
+var fails = require('../internals/fails');
+
+module.exports = !!Object.getOwnPropertySymbols && !fails(function () {
+  // Chrome 38 Symbol has incorrect toString conversion
+  // eslint-disable-next-line no-undef
+  return !String(Symbol());
+});
+
+},{"../internals/fails":50}],88:[function(require,module,exports){
+var fails = require('../internals/fails');
+var wellKnownSymbol = require('../internals/well-known-symbol');
+var IS_PURE = require('../internals/is-pure');
+
+var ITERATOR = wellKnownSymbol('iterator');
+
+module.exports = !fails(function () {
+  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 (IS_PURE && !url.toJSON)
+    || !searchParams.sort
+    || url.href !== 'http://a/c%20d?a=1&c=3'
+    || searchParams.get('c') !== '3'
+    || String(new URLSearchParams('?a=1')) !== 'a=1'
+    || !searchParams[ITERATOR]
+    // throws in Edge
+    || new URL('https://a@b').username !== 'a'
+    || new URLSearchParams(new URLSearchParams('a=b')).get('a') !== 'b'
+    // not punycoded in Edge
+    || new URL('http://тест').host !== 'xn--e1aybc'
+    // not escaped in Chrome 62-
+    || new URL('http://a#б').hash !== '#%D0%B1'
+    // fails in Chrome 66-
+    || result !== 'a1c3'
+    // throws in Safari
+    || new URL('http://x', undefined).host !== 'x';
+});
+
+},{"../internals/fails":50,"../internals/is-pure":76,"../internals/well-known-symbol":156}],89:[function(require,module,exports){
+var global = require('../internals/global');
+var inspectSource = require('../internals/inspect-source');
+
+var WeakMap = global.WeakMap;
+
+module.exports = typeof WeakMap === 'function' && /native code/.test(inspectSource(WeakMap));
+
+},{"../internals/global":59,"../internals/inspect-source":68}],90:[function(require,module,exports){
+'use strict';
+var aFunction = require('../internals/a-function');
+
+var PromiseCapability = function (C) {
+  var resolve, reject;
+  this.promise = new C(function ($$resolve, $$reject) {
+    if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor');
+    resolve = $$resolve;
+    reject = $$reject;
+  });
+  this.resolve = aFunction(resolve);
+  this.reject = aFunction(reject);
+};
+
+// 25.4.1.5 NewPromiseCapability(C)
+module.exports.f = function (C) {
+  return new PromiseCapability(C);
+};
+
+},{"../internals/a-function":2}],91:[function(require,module,exports){
+var isRegExp = require('../internals/is-regexp');
+
+module.exports = function (it) {
+  if (isRegExp(it)) {
+    throw TypeError("The method doesn't accept regular expressions");
+  } return it;
+};
+
+},{"../internals/is-regexp":77}],92:[function(require,module,exports){
+var global = require('../internals/global');
+
+var globalIsFinite = global.isFinite;
+
+// `Number.isFinite` method
+// https://tc39.github.io/ecma262/#sec-number.isfinite
+module.exports = Number.isFinite || function isFinite(it) {
+  return typeof it == 'number' && globalIsFinite(it);
+};
+
+},{"../internals/global":59}],93:[function(require,module,exports){
+var global = require('../internals/global');
+var trim = require('../internals/string-trim').trim;
+var whitespaces = require('../internals/whitespaces');
+
+var $parseFloat = global.parseFloat;
+var FORCED = 1 / $parseFloat(whitespaces + '-0') !== -Infinity;
+
+// `parseFloat` method
+// https://tc39.github.io/ecma262/#sec-parsefloat-string
+module.exports = FORCED ? function parseFloat(string) {
+  var trimmedString = trim(String(string));
+  var result = $parseFloat(trimmedString);
+  return result === 0 && trimmedString.charAt(0) == '-' ? -0 : result;
+} : $parseFloat;
+
+},{"../internals/global":59,"../internals/string-trim":137,"../internals/whitespaces":157}],94:[function(require,module,exports){
+var global = require('../internals/global');
+var trim = require('../internals/string-trim').trim;
+var whitespaces = require('../internals/whitespaces');
+
+var $parseInt = global.parseInt;
+var hex = /^[+-]?0[Xx]/;
+var FORCED = $parseInt(whitespaces + '08') !== 8 || $parseInt(whitespaces + '0x16') !== 22;
+
+// `parseInt` method
+// https://tc39.github.io/ecma262/#sec-parseint-string-radix
+module.exports = FORCED ? function parseInt(string, radix) {
+  var S = trim(String(string));
+  return $parseInt(S, (radix >>> 0) || (hex.test(S) ? 16 : 10));
+} : $parseInt;
+
+},{"../internals/global":59,"../internals/string-trim":137,"../internals/whitespaces":157}],95:[function(require,module,exports){
+'use strict';
+var DESCRIPTORS = require('../internals/descriptors');
+var fails = require('../internals/fails');
+var objectKeys = require('../internals/object-keys');
+var getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');
+var propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');
+var toObject = require('../internals/to-object');
+var IndexedObject = require('../internals/indexed-object');
+
+var nativeAssign = Object.assign;
+var defineProperty = Object.defineProperty;
+
+// `Object.assign` method
+// https://tc39.github.io/ecma262/#sec-object.assign
+module.exports = !nativeAssign || fails(function () {
+  // should have correct order of operations (Edge bug)
+  if (DESCRIPTORS && nativeAssign({ b: 1 }, nativeAssign(defineProperty({}, 'a', {
+    enumerable: true,
+    get: function () {
+      defineProperty(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
+  var symbol = Symbol();
+  var alphabet = 'abcdefghijklmnopqrst';
+  A[symbol] = 7;
+  alphabet.split('').forEach(function (chr) { B[chr] = chr; });
+  return nativeAssign({}, A)[symbol] != 7 || objectKeys(nativeAssign({}, B)).join('') != alphabet;
+}) ? function assign(target, source) { // eslint-disable-line no-unused-vars
+  var T = toObject(target);
+  var argumentsLength = arguments.length;
+  var index = 1;
+  var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;
+  var propertyIsEnumerable = propertyIsEnumerableModule.f;
+  while (argumentsLength > index) {
+    var S = IndexedObject(arguments[index++]);
+    var keys = getOwnPropertySymbols ? objectKeys(S).concat(getOwnPropertySymbols(S)) : objectKeys(S);
+    var length = keys.length;
+    var j = 0;
+    var key;
+    while (length > j) {
+      key = keys[j++];
+      if (!DESCRIPTORS || propertyIsEnumerable.call(S, key)) T[key] = S[key];
+    }
+  } return T;
+} : nativeAssign;
+
+},{"../internals/descriptors":42,"../internals/fails":50,"../internals/indexed-object":66,"../internals/object-get-own-property-symbols":102,"../internals/object-keys":105,"../internals/object-property-is-enumerable":106,"../internals/to-object":145}],96:[function(require,module,exports){
+var anObject = require('../internals/an-object');
+var defineProperties = require('../internals/object-define-properties');
+var enumBugKeys = require('../internals/enum-bug-keys');
+var hiddenKeys = require('../internals/hidden-keys');
+var html = require('../internals/html');
+var documentCreateElement = require('../internals/document-create-element');
+var sharedKey = require('../internals/shared-key');
+
+var GT = '>';
+var LT = '<';
+var PROTOTYPE = 'prototype';
+var SCRIPT = 'script';
+var IE_PROTO = sharedKey('IE_PROTO');
+
+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 NullProtoObjectViaIFrame = function () {
+  // Thrash, waste and sodomy: IE GC bug
+  var iframe = documentCreateElement('iframe');
+  var JS = 'java' + SCRIPT + ':';
+  var iframeDocument;
+  iframe.style.display = 'none';
+  html.appendChild(iframe);
+  // https://github.com/zloirock/core-js/issues/475
+  iframe.src = String(JS);
+  iframeDocument = iframe.contentWindow.document;
+  iframeDocument.open();
+  iframeDocument.write(scriptTag('document.F=Object'));
+  iframeDocument.close();
+  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();
+};
+
+hiddenKeys[IE_PROTO] = true;
+
+// `Object.create` method
+// https://tc39.github.io/ecma262/#sec-object.create
+module.exports = Object.create || function create(O, Properties) {
+  var result;
+  if (O !== null) {
+    EmptyConstructor[PROTOTYPE] = anObject(O);
+    result = new EmptyConstructor();
+    EmptyConstructor[PROTOTYPE] = null;
+    // add "__proto__" for Object.getPrototypeOf polyfill
+    result[IE_PROTO] = O;
+  } else result = NullProtoObject();
+  return Properties === undefined ? result : defineProperties(result, Properties);
+};
+
+},{"../internals/an-object":7,"../internals/document-create-element":43,"../internals/enum-bug-keys":48,"../internals/hidden-keys":61,"../internals/html":63,"../internals/object-define-properties":97,"../internals/shared-key":126}],97:[function(require,module,exports){
+var DESCRIPTORS = require('../internals/descriptors');
+var definePropertyModule = require('../internals/object-define-property');
+var anObject = require('../internals/an-object');
+var objectKeys = require('../internals/object-keys');
+
+// `Object.defineProperties` method
+// https://tc39.github.io/ecma262/#sec-object.defineproperties
+module.exports = DESCRIPTORS ? Object.defineProperties : function defineProperties(O, Properties) {
+  anObject(O);
+  var keys = objectKeys(Properties);
+  var length = keys.length;
+  var index = 0;
+  var key;
+  while (length > index) definePropertyModule.f(O, key = keys[index++], Properties[key]);
+  return O;
+};
+
+},{"../internals/an-object":7,"../internals/descriptors":42,"../internals/object-define-property":98,"../internals/object-keys":105}],98:[function(require,module,exports){
+var DESCRIPTORS = require('../internals/descriptors');
+var IE8_DOM_DEFINE = require('../internals/ie8-dom-define');
+var anObject = require('../internals/an-object');
+var toPrimitive = require('../internals/to-primitive');
+
+var nativeDefineProperty = Object.defineProperty;
+
+// `Object.defineProperty` method
+// https://tc39.github.io/ecma262/#sec-object.defineproperty
+exports.f = DESCRIPTORS ? nativeDefineProperty : function defineProperty(O, P, Attributes) {
+  anObject(O);
+  P = toPrimitive(P, true);
+  anObject(Attributes);
+  if (IE8_DOM_DEFINE) try {
+    return nativeDefineProperty(O, P, Attributes);
+  } catch (error) { /* empty */ }
+  if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported');
+  if ('value' in Attributes) O[P] = Attributes.value;
+  return O;
+};
+
+},{"../internals/an-object":7,"../internals/descriptors":42,"../internals/ie8-dom-define":64,"../internals/to-primitive":148}],99:[function(require,module,exports){
+var DESCRIPTORS = require('../internals/descriptors');
+var propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');
+var createPropertyDescriptor = require('../internals/create-property-descriptor');
+var toIndexedObject = require('../internals/to-indexed-object');
+var toPrimitive = require('../internals/to-primitive');
+var has = require('../internals/has');
+var IE8_DOM_DEFINE = require('../internals/ie8-dom-define');
+
+var nativeGetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;
+
+// `Object.getOwnPropertyDescriptor` method
+// https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptor
+exports.f = DESCRIPTORS ? nativeGetOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {
+  O = toIndexedObject(O);
+  P = toPrimitive(P, true);
+  if (IE8_DOM_DEFINE) try {
+    return nativeGetOwnPropertyDescriptor(O, P);
+  } catch (error) { /* empty */ }
+  if (has(O, P)) return createPropertyDescriptor(!propertyIsEnumerableModule.f.call(O, P), O[P]);
+};
+
+},{"../internals/create-property-descriptor":36,"../internals/descriptors":42,"../internals/has":60,"../internals/ie8-dom-define":64,"../internals/object-property-is-enumerable":106,"../internals/to-indexed-object":142,"../internals/to-primitive":148}],100:[function(require,module,exports){
+var toIndexedObject = require('../internals/to-indexed-object');
+var nativeGetOwnPropertyNames = require('../internals/object-get-own-property-names').f;
+
+var toString = {}.toString;
+
+var windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames
+  ? Object.getOwnPropertyNames(window) : [];
+
+var getWindowNames = function (it) {
+  try {
+    return nativeGetOwnPropertyNames(it);
+  } catch (error) {
+    return windowNames.slice();
+  }
+};
+
+// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window
+module.exports.f = function getOwnPropertyNames(it) {
+  return windowNames && toString.call(it) == '[object Window]'
+    ? getWindowNames(it)
+    : nativeGetOwnPropertyNames(toIndexedObject(it));
+};
+
+},{"../internals/object-get-own-property-names":101,"../internals/to-indexed-object":142}],101:[function(require,module,exports){
+var internalObjectKeys = require('../internals/object-keys-internal');
+var enumBugKeys = require('../internals/enum-bug-keys');
+
+var hiddenKeys = enumBugKeys.concat('length', 'prototype');
+
+// `Object.getOwnPropertyNames` method
+// https://tc39.github.io/ecma262/#sec-object.getownpropertynames
+exports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {
+  return internalObjectKeys(O, hiddenKeys);
+};
+
+},{"../internals/enum-bug-keys":48,"../internals/object-keys-internal":104}],102:[function(require,module,exports){
+exports.f = Object.getOwnPropertySymbols;
+
+},{}],103:[function(require,module,exports){
+var has = require('../internals/has');
+var toObject = require('../internals/to-object');
+var sharedKey = require('../internals/shared-key');
+var CORRECT_PROTOTYPE_GETTER = require('../internals/correct-prototype-getter');
+
+var IE_PROTO = sharedKey('IE_PROTO');
+var ObjectPrototype = Object.prototype;
+
+// `Object.getPrototypeOf` method
+// https://tc39.github.io/ecma262/#sec-object.getprototypeof
+module.exports = CORRECT_PROTOTYPE_GETTER ? Object.getPrototypeOf : function (O) {
+  O = toObject(O);
+  if (has(O, IE_PROTO)) return O[IE_PROTO];
+  if (typeof O.constructor == 'function' && O instanceof O.constructor) {
+    return O.constructor.prototype;
+  } return O instanceof Object ? ObjectPrototype : null;
+};
+
+},{"../internals/correct-prototype-getter":32,"../internals/has":60,"../internals/shared-key":126,"../internals/to-object":145}],104:[function(require,module,exports){
+var has = require('../internals/has');
+var toIndexedObject = require('../internals/to-indexed-object');
+var indexOf = require('../internals/array-includes').indexOf;
+var hiddenKeys = require('../internals/hidden-keys');
+
+module.exports = function (object, names) {
+  var O = toIndexedObject(object);
+  var i = 0;
+  var result = [];
+  var key;
+  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++])) {
+    ~indexOf(result, key) || result.push(key);
+  }
+  return result;
+};
+
+},{"../internals/array-includes":15,"../internals/has":60,"../internals/hidden-keys":61,"../internals/to-indexed-object":142}],105:[function(require,module,exports){
+var internalObjectKeys = require('../internals/object-keys-internal');
+var enumBugKeys = require('../internals/enum-bug-keys');
+
+// `Object.keys` method
+// https://tc39.github.io/ecma262/#sec-object.keys
+module.exports = Object.keys || function keys(O) {
+  return internalObjectKeys(O, enumBugKeys);
+};
+
+},{"../internals/enum-bug-keys":48,"../internals/object-keys-internal":104}],106:[function(require,module,exports){
+'use strict';
+var nativePropertyIsEnumerable = {}.propertyIsEnumerable;
+var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;
+
+// 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
+exports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {
+  var descriptor = getOwnPropertyDescriptor(this, V);
+  return !!descriptor && descriptor.enumerable;
+} : nativePropertyIsEnumerable;
+
+},{}],107:[function(require,module,exports){
+'use strict';
+var IS_PURE = require('../internals/is-pure');
+var global = require('../internals/global');
+var fails = require('../internals/fails');
+
+// Forced replacement object prototype accessors methods
+module.exports = IS_PURE || !fails(function () {
+  var key = Math.random();
+  // In FF throws only define methods
+  // eslint-disable-next-line no-undef, no-useless-call
+  __defineSetter__.call(null, key, function () { /* empty */ });
+  delete global[key];
+});
+
+},{"../internals/fails":50,"../internals/global":59,"../internals/is-pure":76}],108:[function(require,module,exports){
+var anObject = require('../internals/an-object');
+var aPossiblePrototype = require('../internals/a-possible-prototype');
+
+// `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 */
+module.exports = 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);
+
+},{"../internals/a-possible-prototype":3,"../internals/an-object":7}],109:[function(require,module,exports){
+var DESCRIPTORS = require('../internals/descriptors');
+var objectKeys = require('../internals/object-keys');
+var toIndexedObject = require('../internals/to-indexed-object');
+var propertyIsEnumerable = require('../internals/object-property-is-enumerable').f;
+
+// `Object.{ entries, values }` methods implementation
+var createMethod = 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;
+  };
+};
+
+module.exports = {
+  // `Object.entries` method
+  // https://tc39.github.io/ecma262/#sec-object.entries
+  entries: createMethod(true),
+  // `Object.values` method
+  // https://tc39.github.io/ecma262/#sec-object.values
+  values: createMethod(false)
+};
+
+},{"../internals/descriptors":42,"../internals/object-keys":105,"../internals/object-property-is-enumerable":106,"../internals/to-indexed-object":142}],110:[function(require,module,exports){
+'use strict';
+var TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');
+var classof = require('../internals/classof');
+
+// `Object.prototype.toString` method implementation
+// https://tc39.github.io/ecma262/#sec-object.prototype.tostring
+module.exports = TO_STRING_TAG_SUPPORT ? {}.toString : function toString() {
+  return '[object ' + classof(this) + ']';
+};
+
+},{"../internals/classof":26,"../internals/to-string-tag-support":149}],111:[function(require,module,exports){
+var getBuiltIn = require('../internals/get-built-in');
+var getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');
+var getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');
+var anObject = require('../internals/an-object');
+
+// all object keys, includes non-enumerable and symbols
+module.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {
+  var keys = getOwnPropertyNamesModule.f(anObject(it));
+  var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;
+  return getOwnPropertySymbols ? keys.concat(getOwnPropertySymbols(it)) : keys;
+};
+
+},{"../internals/an-object":7,"../internals/get-built-in":56,"../internals/object-get-own-property-names":101,"../internals/object-get-own-property-symbols":102}],112:[function(require,module,exports){
+var global = require('../internals/global');
+
+module.exports = global;
+
+},{"../internals/global":59}],113:[function(require,module,exports){
+module.exports = function (exec) {
+  try {
+    return { error: false, value: exec() };
+  } catch (error) {
+    return { error: true, value: error };
+  }
+};
+
+},{}],114:[function(require,module,exports){
+var anObject = require('../internals/an-object');
+var isObject = require('../internals/is-object');
+var newPromiseCapability = require('../internals/new-promise-capability');
+
+module.exports = function (C, x) {
+  anObject(C);
+  if (isObject(x) && x.constructor === C) return x;
+  var promiseCapability = newPromiseCapability.f(C);
+  var resolve = promiseCapability.resolve;
+  resolve(x);
+  return promiseCapability.promise;
+};
+
+},{"../internals/an-object":7,"../internals/is-object":75,"../internals/new-promise-capability":90}],115:[function(require,module,exports){
+var redefine = require('../internals/redefine');
+
+module.exports = function (target, src, options) {
+  for (var key in src) redefine(target, key, src[key], options);
+  return target;
+};
+
+},{"../internals/redefine":116}],116:[function(require,module,exports){
+var global = require('../internals/global');
+var createNonEnumerableProperty = require('../internals/create-non-enumerable-property');
+var has = require('../internals/has');
+var setGlobal = require('../internals/set-global');
+var inspectSource = require('../internals/inspect-source');
+var InternalStateModule = require('../internals/internal-state');
+
+var getInternalState = InternalStateModule.get;
+var enforceInternalState = InternalStateModule.enforce;
+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')) createNonEnumerableProperty(value, 'name', key);
+    enforceInternalState(value).source = TEMPLATE.join(typeof key == 'string' ? key : '');
+  }
+  if (O === global) {
+    if (simple) O[key] = value;
+    else setGlobal(key, value);
+    return;
+  } else if (!unsafe) {
+    delete O[key];
+  } else if (!noTargetGet && O[key]) {
+    simple = true;
+  }
+  if (simple) 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 || inspectSource(this);
+});
+
+},{"../internals/create-non-enumerable-property":35,"../internals/global":59,"../internals/has":60,"../internals/inspect-source":68,"../internals/internal-state":70,"../internals/set-global":123}],117:[function(require,module,exports){
+var classof = require('./classof-raw');
+var regexpExec = require('./regexp-exec');
+
+// `RegExpExec` abstract operation
+// https://tc39.github.io/ecma262/#sec-regexpexec
+module.exports = function (R, S) {
+  var exec = R.exec;
+  if (typeof exec === 'function') {
+    var result = exec.call(R, S);
+    if (typeof result !== 'object') {
+      throw TypeError('RegExp exec method returned something other than an Object or null');
+    }
+    return result;
+  }
+
+  if (classof(R) !== 'RegExp') {
+    throw TypeError('RegExp#exec called on incompatible receiver');
+  }
+
+  return regexpExec.call(R, S);
+};
+
+
+},{"./classof-raw":25,"./regexp-exec":118}],118:[function(require,module,exports){
+'use strict';
+var regexpFlags = require('./regexp-flags');
+var stickyHelpers = require('./regexp-sticky-helpers');
+
+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 = stickyHelpers.UNSUPPORTED_Y || stickyHelpers.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;
+
+if (PATCH) {
+  patchedExec = function exec(str) {
+    var re = this;
+    var lastIndex, reCopy, match, i;
+    var sticky = UNSUPPORTED_Y && 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;
+  };
+}
+
+module.exports = patchedExec;
+
+},{"./regexp-flags":119,"./regexp-sticky-helpers":120}],119:[function(require,module,exports){
+'use strict';
+var anObject = require('../internals/an-object');
+
+// `RegExp.prototype.flags` getter implementation
+// https://tc39.github.io/ecma262/#sec-get-regexp.prototype.flags
+module.exports = 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;
+};
+
+},{"../internals/an-object":7}],120:[function(require,module,exports){
+'use strict';
+
+var fails = require('./fails');
+
+// 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);
+}
+
+exports.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;
+});
+
+exports.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;
+});
+
+},{"./fails":50}],121:[function(require,module,exports){
+// `RequireObjectCoercible` abstract operation
+// https://tc39.github.io/ecma262/#sec-requireobjectcoercible
+module.exports = function (it) {
+  if (it == undefined) throw TypeError("Can't call method on " + it);
+  return it;
+};
+
+},{}],122:[function(require,module,exports){
+// `SameValue` abstract operation
+// https://tc39.github.io/ecma262/#sec-samevalue
+module.exports = Object.is || function is(x, y) {
+  // eslint-disable-next-line no-self-compare
+  return x === y ? x !== 0 || 1 / x === 1 / y : x != x && y != y;
+};
+
+},{}],123:[function(require,module,exports){
+var global = require('../internals/global');
+var createNonEnumerableProperty = require('../internals/create-non-enumerable-property');
+
+module.exports = function (key, value) {
+  try {
+    createNonEnumerableProperty(global, key, value);
+  } catch (error) {
+    global[key] = value;
+  } return value;
+};
+
+},{"../internals/create-non-enumerable-property":35,"../internals/global":59}],124:[function(require,module,exports){
+'use strict';
+var getBuiltIn = require('../internals/get-built-in');
+var definePropertyModule = require('../internals/object-define-property');
+var wellKnownSymbol = require('../internals/well-known-symbol');
+var DESCRIPTORS = require('../internals/descriptors');
+
+var SPECIES = wellKnownSymbol('species');
+
+module.exports = function (CONSTRUCTOR_NAME) {
+  var Constructor = getBuiltIn(CONSTRUCTOR_NAME);
+  var defineProperty = definePropertyModule.f;
+
+  if (DESCRIPTORS && Constructor && !Constructor[SPECIES]) {
+    defineProperty(Constructor, SPECIES, {
+      configurable: true,
+      get: function () { return this; }
+    });
+  }
+};
+
+},{"../internals/descriptors":42,"../internals/get-built-in":56,"../internals/object-define-property":98,"../internals/well-known-symbol":156}],125:[function(require,module,exports){
+var defineProperty = require('../internals/object-define-property').f;
+var has = require('../internals/has');
+var wellKnownSymbol = require('../internals/well-known-symbol');
+
+var TO_STRING_TAG = wellKnownSymbol('toStringTag');
+
+module.exports = function (it, TAG, STATIC) {
+  if (it && !has(it = STATIC ? it : it.prototype, TO_STRING_TAG)) {
+    defineProperty(it, TO_STRING_TAG, { configurable: true, value: TAG });
+  }
+};
+
+},{"../internals/has":60,"../internals/object-define-property":98,"../internals/well-known-symbol":156}],126:[function(require,module,exports){
+var shared = require('../internals/shared');
+var uid = require('../internals/uid');
+
+var keys = shared('keys');
+
+module.exports = function (key) {
+  return keys[key] || (keys[key] = uid(key));
+};
+
+},{"../internals/shared":128,"../internals/uid":153}],127:[function(require,module,exports){
+var global = require('../internals/global');
+var setGlobal = require('../internals/set-global');
+
+var SHARED = '__core-js_shared__';
+var store = global[SHARED] || setGlobal(SHARED, {});
+
+module.exports = store;
+
+},{"../internals/global":59,"../internals/set-global":123}],128:[function(require,module,exports){
+var IS_PURE = require('../internals/is-pure');
+var store = require('../internals/shared-store');
+
+(module.exports = function (key, value) {
+  return store[key] || (store[key] = value !== undefined ? value : {});
+})('versions', []).push({
+  version: '3.6.5',
+  mode: IS_PURE ? 'pure' : 'global',
+  copyright: '© 2020 Denis Pushkarev (zloirock.ru)'
+});
+
+},{"../internals/is-pure":76,"../internals/shared-store":127}],129:[function(require,module,exports){
+var anObject = require('../internals/an-object');
+var aFunction = require('../internals/a-function');
+var wellKnownSymbol = require('../internals/well-known-symbol');
+
+var SPECIES = wellKnownSymbol('species');
+
+// `SpeciesConstructor` abstract operation
+// https://tc39.github.io/ecma262/#sec-speciesconstructor
+module.exports = function (O, defaultConstructor) {
+  var C = anObject(O).constructor;
+  var S;
+  return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? defaultConstructor : aFunction(S);
+};
+
+},{"../internals/a-function":2,"../internals/an-object":7,"../internals/well-known-symbol":156}],130:[function(require,module,exports){
+var fails = require('../internals/fails');
+
+// check the existence of a method, lowercase
+// of a tag and escaping quotes in arguments
+module.exports = function (METHOD_NAME) {
+  return fails(function () {
+    var test = ''[METHOD_NAME]('"');
+    return test !== test.toLowerCase() || test.split('"').length > 3;
+  });
+};
+
+},{"../internals/fails":50}],131:[function(require,module,exports){
+var toInteger = require('../internals/to-integer');
+var requireObjectCoercible = require('../internals/require-object-coercible');
+
+// `String.prototype.{ codePointAt, at }` methods implementation
+var createMethod = 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;
+  };
+};
+
+module.exports = {
+  // `String.prototype.codePointAt` method
+  // https://tc39.github.io/ecma262/#sec-string.prototype.codepointat
+  codeAt: createMethod(false),
+  // `String.prototype.at` method
+  // https://github.com/mathiasbynens/String.prototype.at
+  charAt: createMethod(true)
+};
+
+},{"../internals/require-object-coercible":121,"../internals/to-integer":143}],132:[function(require,module,exports){
+// https://github.com/zloirock/core-js/issues/280
+var userAgent = require('../internals/engine-user-agent');
+
+// eslint-disable-next-line unicorn/no-unsafe-regex
+module.exports = /Version\/10\.\d+(\.\d+)?( Mobile\/\w+)? Safari\//.test(userAgent);
+
+},{"../internals/engine-user-agent":46}],133:[function(require,module,exports){
+// https://github.com/tc39/proposal-string-pad-start-end
+var toLength = require('../internals/to-length');
+var repeat = require('../internals/string-repeat');
+var requireObjectCoercible = require('../internals/require-object-coercible');
+
+var ceil = Math.ceil;
+
+// `String.prototype.{ padStart, padEnd }` methods implementation
+var createMethod = function (IS_END) {
+  return function ($this, maxLength, fillString) {
+    var S = String(requireObjectCoercible($this));
+    var stringLength = S.length;
+    var fillStr = fillString === undefined ? ' ' : String(fillString);
+    var intMaxLength = toLength(maxLength);
+    var fillLen, stringFiller;
+    if (intMaxLength <= stringLength || fillStr == '') return S;
+    fillLen = intMaxLength - stringLength;
+    stringFiller = repeat.call(fillStr, ceil(fillLen / fillStr.length));
+    if (stringFiller.length > fillLen) stringFiller = stringFiller.slice(0, fillLen);
+    return IS_END ? S + stringFiller : stringFiller + S;
+  };
+};
+
+module.exports = {
+  // `String.prototype.padStart` method
+  // https://tc39.github.io/ecma262/#sec-string.prototype.padstart
+  start: createMethod(false),
+  // `String.prototype.padEnd` method
+  // https://tc39.github.io/ecma262/#sec-string.prototype.padend
+  end: createMethod(true)
+};
+
+},{"../internals/require-object-coercible":121,"../internals/string-repeat":135,"../internals/to-length":144}],134:[function(require,module,exports){
+'use strict';
+// based on https://github.com/bestiejs/punycode.js/blob/master/punycode.js
+var maxInt = 2147483647; // aka. 0x7FFFFFFF or 2^31-1
+var base = 36;
+var tMin = 1;
+var tMax = 26;
+var skew = 38;
+var damp = 700;
+var initialBias = 72;
+var initialN = 128; // 0x80
+var delimiter = '-'; // '\x2D'
+var regexNonASCII = /[^\0-\u007E]/; // non-ASCII chars
+var regexSeparators = /[.\u3002\uFF0E\uFF61]/g; // RFC 3490 separators
+var OVERFLOW_ERROR = 'Overflow: input needs wider integers to process';
+var baseMinusTMin = base - tMin;
+var floor = Math.floor;
+var stringFromCharCode = String.fromCharCode;
+
+/**
+ * Creates an array containing the numeric code points of each Unicode
+ * character in the string. While JavaScript uses UCS-2 internally,
+ * this function will convert a pair of surrogate halves (each of which
+ * UCS-2 exposes as separate characters) into a single code point,
+ * matching UTF-16.
+ */
+var ucs2decode = function (string) {
+  var output = [];
+  var counter = 0;
+  var length = string.length;
+  while (counter < length) {
+    var value = string.charCodeAt(counter++);
+    if (value >= 0xD800 && value <= 0xDBFF && counter < length) {
+      // It's a high surrogate, and there is a next character.
+      var extra = string.charCodeAt(counter++);
+      if ((extra & 0xFC00) == 0xDC00) { // Low surrogate.
+        output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);
+      } else {
+        // It's an unmatched surrogate; only append this code unit, in case the
+        // next code unit is the high surrogate of a surrogate pair.
+        output.push(value);
+        counter--;
+      }
+    } else {
+      output.push(value);
+    }
+  }
+  return output;
+};
+
+/**
+ * Converts a digit/integer into a basic code point.
+ */
+var digitToBasic = function (digit) {
+  //  0..25 map to ASCII a..z or A..Z
+  // 26..35 map to ASCII 0..9
+  return digit + 22 + 75 * (digit < 26);
+};
+
+/**
+ * Bias adaptation function as per section 3.4 of RFC 3492.
+ * https://tools.ietf.org/html/rfc3492#section-3.4
+ */
+var adapt = function (delta, numPoints, firstTime) {
+  var k = 0;
+  delta = firstTime ? floor(delta / damp) : delta >> 1;
+  delta += floor(delta / numPoints);
+  for (; delta > baseMinusTMin * tMax >> 1; k += base) {
+    delta = floor(delta / baseMinusTMin);
+  }
+  return floor(k + (baseMinusTMin + 1) * delta / (delta + skew));
+};
+
+/**
+ * Converts a string of Unicode symbols (e.g. a domain name label) to a
+ * Punycode string of ASCII-only symbols.
+ */
+// eslint-disable-next-line  max-statements
+var encode = function (input) {
+  var output = [];
+
+  // Convert the input in UCS-2 to an array of Unicode code points.
+  input = ucs2decode(input);
+
+  // Cache the length.
+  var inputLength = input.length;
+
+  // Initialize the state.
+  var n = initialN;
+  var delta = 0;
+  var bias = initialBias;
+  var i, currentValue;
+
+  // Handle the basic code points.
+  for (i = 0; i < input.length; i++) {
+    currentValue = input[i];
+    if (currentValue < 0x80) {
+      output.push(stringFromCharCode(currentValue));
+    }
+  }
+
+  var basicLength = output.length; // number of basic code points.
+  var handledCPCount = basicLength; // number of code points that have been handled;
+
+  // Finish the basic string with a delimiter unless it's empty.
+  if (basicLength) {
+    output.push(delimiter);
+  }
+
+  // Main encoding loop:
+  while (handledCPCount < inputLength) {
+    // All non-basic code points < n have been handled already. Find the next larger one:
+    var m = maxInt;
+    for (i = 0; i < input.length; i++) {
+      currentValue = input[i];
+      if (currentValue >= n && currentValue < m) {
+        m = currentValue;
+      }
+    }
+
+    // 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((maxInt - delta) / handledCPCountPlusOne)) {
+      throw RangeError(OVERFLOW_ERROR);
+    }
+
+    delta += (m - n) * handledCPCountPlusOne;
+    n = m;
+
+    for (i = 0; i < input.length; i++) {
+      currentValue = input[i];
+      if (currentValue < n && ++delta > maxInt) {
+        throw RangeError(OVERFLOW_ERROR);
+      }
+      if (currentValue == n) {
+        // Represent delta as a generalized variable-length integer.
+        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;
+          var qMinusT = q - t;
+          var baseMinusT = base - t;
+          output.push(stringFromCharCode(digitToBasic(t + qMinusT % baseMinusT)));
+          q = floor(qMinusT / baseMinusT);
+        }
+
+        output.push(stringFromCharCode(digitToBasic(q)));
+        bias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);
+        delta = 0;
+        ++handledCPCount;
+      }
+    }
+
+    ++delta;
+    ++n;
+  }
+  return output.join('');
+};
+
+module.exports = function (input) {
+  var encoded = [];
+  var labels = input.toLowerCase().replace(regexSeparators, '\u002E').split('.');
+  var i, label;
+  for (i = 0; i < labels.length; i++) {
+    label = labels[i];
+    encoded.push(regexNonASCII.test(label) ? 'xn--' + encode(label) : label);
+  }
+  return encoded.join('.');
+};
+
+},{}],135:[function(require,module,exports){
+'use strict';
+var toInteger = require('../internals/to-integer');
+var requireObjectCoercible = require('../internals/require-object-coercible');
+
+// `String.prototype.repeat` method implementation
+// https://tc39.github.io/ecma262/#sec-string.prototype.repeat
+module.exports = ''.repeat || function repeat(count) {
+  var str = String(requireObjectCoercible(this));
+  var result = '';
+  var n = toInteger(count);
+  if (n < 0 || n == Infinity) throw RangeError('Wrong number of repetitions');
+  for (;n > 0; (n >>>= 1) && (str += str)) if (n & 1) result += str;
+  return result;
+};
+
+},{"../internals/require-object-coercible":121,"../internals/to-integer":143}],136:[function(require,module,exports){
+var fails = require('../internals/fails');
+var whitespaces = require('../internals/whitespaces');
+
+var non = '\u200B\u0085\u180E';
+
+// check that a method works with the correct list
+// of whitespaces and has a correct name
+module.exports = function (METHOD_NAME) {
+  return fails(function () {
+    return !!whitespaces[METHOD_NAME]() || non[METHOD_NAME]() != non || whitespaces[METHOD_NAME].name !== METHOD_NAME;
+  });
+};
+
+},{"../internals/fails":50,"../internals/whitespaces":157}],137:[function(require,module,exports){
+var requireObjectCoercible = require('../internals/require-object-coercible');
+var whitespaces = require('../internals/whitespaces');
+
+var whitespace = '[' + whitespaces + ']';
+var ltrim = RegExp('^' + whitespace + whitespace + '*');
+var rtrim = RegExp(whitespace + whitespace + '*$');
+
+// `String.prototype.{ trim, trimStart, trimEnd, trimLeft, trimRight }` methods implementation
+var createMethod = 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;
+  };
+};
+
+module.exports = {
+  // `String.prototype.{ trimLeft, trimStart }` methods
+  // https://tc39.github.io/ecma262/#sec-string.prototype.trimstart
+  start: createMethod(1),
+  // `String.prototype.{ trimRight, trimEnd }` methods
+  // https://tc39.github.io/ecma262/#sec-string.prototype.trimend
+  end: createMethod(2),
+  // `String.prototype.trim` method
+  // https://tc39.github.io/ecma262/#sec-string.prototype.trim
+  trim: createMethod(3)
+};
+
+},{"../internals/require-object-coercible":121,"../internals/whitespaces":157}],138:[function(require,module,exports){
+var global = require('../internals/global');
+var fails = require('../internals/fails');
+var classof = require('../internals/classof-raw');
+var bind = require('../internals/function-bind-context');
+var html = require('../internals/html');
+var createElement = require('../internals/document-create-element');
+var IS_IOS = require('../internals/engine-is-ios');
+
+var location = global.location;
+var set = global.setImmediate;
+var clear = global.clearImmediate;
+var process = global.process;
+var MessageChannel = global.MessageChannel;
+var Dispatch = global.Dispatch;
+var counter = 0;
+var queue = {};
+var ONREADYSTATECHANGE = 'onreadystatechange';
+var defer, channel, port;
+
+var run = function (id) {
+  // eslint-disable-next-line no-prototype-builtins
+  if (queue.hasOwnProperty(id)) {
+    var fn = queue[id];
+    delete queue[id];
+    fn();
+  }
+};
+
+var runner = function (id) {
+  return function () {
+    run(id);
+  };
+};
+
+var listener = function (event) {
+  run(event.data);
+};
+
+var post = function (id) {
+  // old engines have not location.origin
+  global.postMessage(id + '', location.protocol + '//' + location.host);
+};
+
+// Node.js 0.9+ & IE10+ has setImmediate, otherwise:
+if (!set || !clear) {
+  set = function setImmediate(fn) {
+    var args = [];
+    var i = 1;
+    while (arguments.length > i) args.push(arguments[i++]);
+    queue[++counter] = function () {
+      // eslint-disable-next-line no-new-func
+      (typeof fn == 'function' ? fn : Function(fn)).apply(undefined, args);
+    };
+    defer(counter);
+    return counter;
+  };
+  clear = function clearImmediate(id) {
+    delete queue[id];
+  };
+  // Node.js 0.8-
+  if (classof(process) == 'process') {
+    defer = function (id) {
+      process.nextTick(runner(id));
+    };
+  // Sphere (JS game engine) Dispatch API
+  } else if (Dispatch && Dispatch.now) {
+    defer = function (id) {
+      Dispatch.now(runner(id));
+    };
+  // Browsers with MessageChannel, includes WebWorkers
+  // except iOS - https://github.com/zloirock/core-js/issues/624
+  } else if (MessageChannel && !IS_IOS) {
+    channel = new MessageChannel();
+    port = channel.port2;
+    channel.port1.onmessage = listener;
+    defer = bind(port.postMessage, port, 1);
+  // Browsers with postMessage, skip WebWorkers
+  // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'
+  } else if (
+    global.addEventListener &&
+    typeof postMessage == 'function' &&
+    !global.importScripts &&
+    !fails(post) &&
+    location.protocol !== 'file:'
+  ) {
+    defer = post;
+    global.addEventListener('message', listener, false);
+  // IE8-
+  } else if (ONREADYSTATECHANGE in createElement('script')) {
+    defer = function (id) {
+      html.appendChild(createElement('script'))[ONREADYSTATECHANGE] = function () {
+        html.removeChild(this);
+        run(id);
+      };
+    };
+  // Rest old browsers
+  } else {
+    defer = function (id) {
+      setTimeout(runner(id), 0);
+    };
+  }
+}
+
+module.exports = {
+  set: set,
+  clear: clear
+};
+
+},{"../internals/classof-raw":25,"../internals/document-create-element":43,"../internals/engine-is-ios":45,"../internals/fails":50,"../internals/function-bind-context":54,"../internals/global":59,"../internals/html":63}],139:[function(require,module,exports){
+var classof = require('../internals/classof-raw');
+
+// `thisNumberValue` abstract operation
+// https://tc39.github.io/ecma262/#sec-thisnumbervalue
+module.exports = function (value) {
+  if (typeof value != 'number' && classof(value) != 'Number') {
+    throw TypeError('Incorrect invocation');
+  }
+  return +value;
+};
+
+},{"../internals/classof-raw":25}],140:[function(require,module,exports){
+var toInteger = require('../internals/to-integer');
+
+var max = Math.max;
+var min = 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).
+module.exports = function (index, length) {
+  var integer = toInteger(index);
+  return integer < 0 ? max(integer + length, 0) : min(integer, length);
+};
+
+},{"../internals/to-integer":143}],141:[function(require,module,exports){
+var toInteger = require('../internals/to-integer');
+var toLength = require('../internals/to-length');
+
+// `ToIndex` abstract operation
+// https://tc39.github.io/ecma262/#sec-toindex
+module.exports = function (it) {
+  if (it === undefined) return 0;
+  var number = toInteger(it);
+  var length = toLength(number);
+  if (number !== length) throw RangeError('Wrong length or index');
+  return length;
+};
+
+},{"../internals/to-integer":143,"../internals/to-length":144}],142:[function(require,module,exports){
+// toObject with fallback for non-array-like ES3 strings
+var IndexedObject = require('../internals/indexed-object');
+var requireObjectCoercible = require('../internals/require-object-coercible');
+
+module.exports = function (it) {
+  return IndexedObject(requireObjectCoercible(it));
+};
+
+},{"../internals/indexed-object":66,"../internals/require-object-coercible":121}],143:[function(require,module,exports){
+var ceil = Math.ceil;
+var floor = Math.floor;
+
+// `ToInteger` abstract operation
+// https://tc39.github.io/ecma262/#sec-tointeger
+module.exports = function (argument) {
+  return isNaN(argument = +argument) ? 0 : (argument > 0 ? floor : ceil)(argument);
+};
+
+},{}],144:[function(require,module,exports){
+var toInteger = require('../internals/to-integer');
+
+var min = Math.min;
+
+// `ToLength` abstract operation
+// https://tc39.github.io/ecma262/#sec-tolength
+module.exports = function (argument) {
+  return argument > 0 ? min(toInteger(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991
+};
+
+},{"../internals/to-integer":143}],145:[function(require,module,exports){
+var requireObjectCoercible = require('../internals/require-object-coercible');
+
+// `ToObject` abstract operation
+// https://tc39.github.io/ecma262/#sec-toobject
+module.exports = function (argument) {
+  return Object(requireObjectCoercible(argument));
+};
+
+},{"../internals/require-object-coercible":121}],146:[function(require,module,exports){
+var toPositiveInteger = require('../internals/to-positive-integer');
+
+module.exports = function (it, BYTES) {
+  var offset = toPositiveInteger(it);
+  if (offset % BYTES) throw RangeError('Wrong offset');
+  return offset;
+};
+
+},{"../internals/to-positive-integer":147}],147:[function(require,module,exports){
+var toInteger = require('../internals/to-integer');
+
+module.exports = function (it) {
+  var result = toInteger(it);
+  if (result < 0) throw RangeError("The argument can't be less than 0");
+  return result;
+};
+
+},{"../internals/to-integer":143}],148:[function(require,module,exports){
+var isObject = require('../internals/is-object');
+
+// `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
+module.exports = function (input, PREFERRED_STRING) {
+  if (!isObject(input)) return input;
+  var fn, 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");
+};
+
+},{"../internals/is-object":75}],149:[function(require,module,exports){
+var wellKnownSymbol = require('../internals/well-known-symbol');
+
+var TO_STRING_TAG = wellKnownSymbol('toStringTag');
+var test = {};
+
+test[TO_STRING_TAG] = 'z';
+
+module.exports = String(test) === '[object z]';
+
+},{"../internals/well-known-symbol":156}],150:[function(require,module,exports){
+'use strict';
+var $ = require('../internals/export');
+var global = require('../internals/global');
+var DESCRIPTORS = require('../internals/descriptors');
+var TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS = require('../internals/typed-array-constructors-require-wrappers');
+var ArrayBufferViewCore = require('../internals/array-buffer-view-core');
+var ArrayBufferModule = require('../internals/array-buffer');
+var anInstance = require('../internals/an-instance');
+var createPropertyDescriptor = require('../internals/create-property-descriptor');
+var createNonEnumerableProperty = require('../internals/create-non-enumerable-property');
+var toLength = require('../internals/to-length');
+var toIndex = require('../internals/to-index');
+var toOffset = require('../internals/to-offset');
+var toPrimitive = require('../internals/to-primitive');
+var has = require('../internals/has');
+var classof = require('../internals/classof');
+var isObject = require('../internals/is-object');
+var create = require('../internals/object-create');
+var setPrototypeOf = require('../internals/object-set-prototype-of');
+var getOwnPropertyNames = require('../internals/object-get-own-property-names').f;
+var typedArrayFrom = require('../internals/typed-array-from');
+var forEach = require('../internals/array-iteration').forEach;
+var setSpecies = require('../internals/set-species');
+var definePropertyModule = require('../internals/object-define-property');
+var getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');
+var InternalStateModule = require('../internals/internal-state');
+var inheritIfRequired = require('../internals/inherit-if-required');
+
+var getInternalState = InternalStateModule.get;
+var setInternalState = InternalStateModule.set;
+var nativeDefineProperty = definePropertyModule.f;
+var nativeGetOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;
+var round = Math.round;
+var RangeError = global.RangeError;
+var ArrayBuffer = ArrayBufferModule.ArrayBuffer;
+var DataView = ArrayBufferModule.DataView;
+var NATIVE_ARRAY_BUFFER_VIEWS = ArrayBufferViewCore.NATIVE_ARRAY_BUFFER_VIEWS;
+var TYPED_ARRAY_TAG = ArrayBufferViewCore.TYPED_ARRAY_TAG;
+var TypedArray = ArrayBufferViewCore.TypedArray;
+var TypedArrayPrototype = ArrayBufferViewCore.TypedArrayPrototype;
+var aTypedArrayConstructor = ArrayBufferViewCore.aTypedArrayConstructor;
+var isTypedArray = ArrayBufferViewCore.isTypedArray;
+var BYTES_PER_ELEMENT = 'BYTES_PER_ELEMENT';
+var WRONG_LENGTH = 'Wrong length';
+
+var fromList = function (C, list) {
+  var index = 0;
+  var length = list.length;
+  var result = new (aTypedArrayConstructor(C))(length);
+  while (length > index) result[index] = list[index++];
+  return result;
+};
+
+var addGetter = function (it, key) {
+  nativeDefineProperty(it, key, { get: function () {
+    return getInternalState(this)[key];
+  } });
+};
+
+var isArrayBuffer = function (it) {
+  var klass;
+  return it instanceof ArrayBuffer || (klass = classof(it)) == 'ArrayBuffer' || klass == 'SharedArrayBuffer';
+};
+
+var isTypedArrayIndex = function (target, key) {
+  return isTypedArray(target)
+    && typeof key != 'symbol'
+    && key in target
+    && String(+key) == String(key);
+};
+
+var wrappedGetOwnPropertyDescriptor = function getOwnPropertyDescriptor(target, key) {
+  return isTypedArrayIndex(target, key = toPrimitive(key, true))
+    ? createPropertyDescriptor(2, target[key])
+    : nativeGetOwnPropertyDescriptor(target, key);
+};
+
+var wrappedDefineProperty = function defineProperty(target, key, descriptor) {
+  if (isTypedArrayIndex(target, key = toPrimitive(key, true))
+    && isObject(descriptor)
+    && has(descriptor, 'value')
+    && !has(descriptor, 'get')
+    && !has(descriptor, 'set')
+    // TODO: add validation descriptor w/o calling accessors
+    && !descriptor.configurable
+    && (!has(descriptor, 'writable') || descriptor.writable)
+    && (!has(descriptor, 'enumerable') || descriptor.enumerable)
+  ) {
+    target[key] = descriptor.value;
+    return target;
+  } return nativeDefineProperty(target, key, descriptor);
+};
+
+if (DESCRIPTORS) {
+  if (!NATIVE_ARRAY_BUFFER_VIEWS) {
+    getOwnPropertyDescriptorModule.f = wrappedGetOwnPropertyDescriptor;
+    definePropertyModule.f = wrappedDefineProperty;
+    addGetter(TypedArrayPrototype, 'buffer');
+    addGetter(TypedArrayPrototype, 'byteOffset');
+    addGetter(TypedArrayPrototype, 'byteLength');
+    addGetter(TypedArrayPrototype, 'length');
+  }
+
+  $({ target: 'Object', stat: true, forced: !NATIVE_ARRAY_BUFFER_VIEWS }, {
+    getOwnPropertyDescriptor: wrappedGetOwnPropertyDescriptor,
+    defineProperty: wrappedDefineProperty
+  });
+
+  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;
+    var NativeTypedArrayConstructor = global[CONSTRUCTOR_NAME];
+    var TypedArrayConstructor = NativeTypedArrayConstructor;
+    var TypedArrayConstructorPrototype = TypedArrayConstructor && TypedArrayConstructor.prototype;
+    var exported = {};
+
+    var getter = function (that, index) {
+      var data = getInternalState(that);
+      return data.view[GETTER](index * BYTES + data.byteOffset, true);
+    };
+
+    var setter = function (that, index, value) {
+      var data = getInternalState(that);
+      if (CLAMPED) value = (value = round(value)) < 0 ? 0 : value > 0xFF ? 0xFF : value & 0xFF;
+      data.view[SETTER](index * BYTES + data.byteOffset, value, true);
+    };
+
+    var addElement = function (that, index) {
+      nativeDefineProperty(that, index, {
+        get: function () {
+          return getter(this, index);
+        },
+        set: function (value) {
+          return setter(this, index, value);
+        },
+        enumerable: true
+      });
+    };
+
+    if (!NATIVE_ARRAY_BUFFER_VIEWS) {
+      TypedArrayConstructor = wrapper(function (that, data, offset, $length) {
+        anInstance(that, TypedArrayConstructor, CONSTRUCTOR_NAME);
+        var index = 0;
+        var byteOffset = 0;
+        var buffer, byteLength, length;
+        if (!isObject(data)) {
+          length = toIndex(data);
+          byteLength = length * BYTES;
+          buffer = new ArrayBuffer(byteLength);
+        } else if (isArrayBuffer(data)) {
+          buffer = data;
+          byteOffset = toOffset(offset, BYTES);
+          var $len = data.byteLength;
+          if ($length === undefined) {
+            if ($len % BYTES) throw RangeError(WRONG_LENGTH);
+            byteLength = $len - byteOffset;
+            if (byteLength < 0) throw RangeError(WRONG_LENGTH);
+          } else {
+            byteLength = toLength($length) * BYTES;
+            if (byteLength + byteOffset > $len) throw RangeError(WRONG_LENGTH);
+          }
+          length = byteLength / BYTES;
+        } else if (isTypedArray(data)) {
+          return fromList(TypedArrayConstructor, data);
+        } else {
+          return typedArrayFrom.call(TypedArrayConstructor, data);
+        }
+        setInternalState(that, {
+          buffer: buffer,
+          byteOffset: byteOffset,
+          byteLength: byteLength,
+          length: length,
+          view: new DataView(buffer)
+        });
+        while (index < length) addElement(that, index++);
+      });
+
+      if (setPrototypeOf) setPrototypeOf(TypedArrayConstructor, TypedArray);
+      TypedArrayConstructorPrototype = TypedArrayConstructor.prototype = create(TypedArrayPrototype);
+    } else if (TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS) {
+      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 (setPrototypeOf) setPrototypeOf(TypedArrayConstructor, TypedArray);
+      forEach(getOwnPropertyNames(NativeTypedArrayConstructor), function (key) {
+        if (!(key in TypedArrayConstructor)) {
+          createNonEnumerableProperty(TypedArrayConstructor, key, NativeTypedArrayConstructor[key]);
+        }
+      });
+      TypedArrayConstructor.prototype = TypedArrayConstructorPrototype;
+    }
+
+    if (TypedArrayConstructorPrototype.constructor !== TypedArrayConstructor) {
+      createNonEnumerableProperty(TypedArrayConstructorPrototype, 'constructor', TypedArrayConstructor);
+    }
+
+    if (TYPED_ARRAY_TAG) {
+      createNonEnumerableProperty(TypedArrayConstructorPrototype, TYPED_ARRAY_TAG, CONSTRUCTOR_NAME);
+    }
+
+    exported[CONSTRUCTOR_NAME] = TypedArrayConstructor;
+
+    $({
+      global: true, forced: TypedArrayConstructor != NativeTypedArrayConstructor, sham: !NATIVE_ARRAY_BUFFER_VIEWS
+    }, exported);
+
+    if (!(BYTES_PER_ELEMENT in TypedArrayConstructor)) {
+      createNonEnumerableProperty(TypedArrayConstructor, BYTES_PER_ELEMENT, BYTES);
+    }
+
+    if (!(BYTES_PER_ELEMENT in TypedArrayConstructorPrototype)) {
+      createNonEnumerableProperty(TypedArrayConstructorPrototype, BYTES_PER_ELEMENT, BYTES);
+    }
+
+    setSpecies(CONSTRUCTOR_NAME);
+  };
+} else module.exports = function () { /* empty */ };
+
+},{"../internals/an-instance":6,"../internals/array-buffer":10,"../internals/array-buffer-view-core":9,"../internals/array-iteration":16,"../internals/classof":26,"../internals/create-non-enumerable-property":35,"../internals/create-property-descriptor":36,"../internals/descriptors":42,"../internals/export":49,"../internals/global":59,"../internals/has":60,"../internals/inherit-if-required":67,"../internals/internal-state":70,"../internals/is-object":75,"../internals/object-create":96,"../internals/object-define-property":98,"../internals/object-get-own-property-descriptor":99,"../internals/object-get-own-property-names":101,"../internals/object-set-prototype-of":108,"../internals/set-species":124,"../internals/to-index":141,"../internals/to-length":144,"../internals/to-offset":146,"../internals/to-primitive":148,"../internals/typed-array-constructors-require-wrappers":151,"../internals/typed-array-from":152}],151:[function(require,module,exports){
+/* eslint-disable no-new */
+var global = require('../internals/global');
+var fails = require('../internals/fails');
+var checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');
+var NATIVE_ARRAY_BUFFER_VIEWS = require('../internals/array-buffer-view-core').NATIVE_ARRAY_BUFFER_VIEWS;
+
+var ArrayBuffer = global.ArrayBuffer;
+var Int8Array = global.Int8Array;
+
+module.exports = !NATIVE_ARRAY_BUFFER_VIEWS || !fails(function () {
+  Int8Array(1);
+}) || !fails(function () {
+  new Int8Array(-1);
+}) || !checkCorrectnessOfIteration(function (iterable) {
+  new Int8Array();
+  new Int8Array(null);
+  new Int8Array(1.5);
+  new Int8Array(iterable);
+}, true) || fails(function () {
+  // Safari (11+) bug - a reason why even Safari 13 should load a typed array polyfill
+  return new Int8Array(new ArrayBuffer(2), 1, undefined).length !== 1;
+});
+
+},{"../internals/array-buffer-view-core":9,"../internals/check-correctness-of-iteration":24,"../internals/fails":50,"../internals/global":59}],152:[function(require,module,exports){
+var toObject = require('../internals/to-object');
+var toLength = require('../internals/to-length');
+var getIteratorMethod = require('../internals/get-iterator-method');
+var isArrayIteratorMethod = require('../internals/is-array-iterator-method');
+var bind = require('../internals/function-bind-context');
+var aTypedArrayConstructor = require('../internals/array-buffer-view-core').aTypedArrayConstructor;
+
+module.exports = function from(source /* , mapfn, thisArg */) {
+  var O = toObject(source);
+  var argumentsLength = arguments.length;
+  var mapfn = argumentsLength > 1 ? arguments[1] : undefined;
+  var mapping = mapfn !== undefined;
+  var iteratorMethod = getIteratorMethod(O);
+  var i, length, result, step, iterator, next;
+  if (iteratorMethod != undefined && !isArrayIteratorMethod(iteratorMethod)) {
+    iterator = iteratorMethod.call(O);
+    next = iterator.next;
+    O = [];
+    while (!(step = next.call(iterator)).done) {
+      O.push(step.value);
+    }
+  }
+  if (mapping && argumentsLength > 2) {
+    mapfn = bind(mapfn, arguments[2], 2);
+  }
+  length = toLength(O.length);
+  result = new (aTypedArrayConstructor(this))(length);
+  for (i = 0; length > i; i++) {
+    result[i] = mapping ? mapfn(O[i], i) : O[i];
+  }
+  return result;
+};
+
+},{"../internals/array-buffer-view-core":9,"../internals/function-bind-context":54,"../internals/get-iterator-method":57,"../internals/is-array-iterator-method":71,"../internals/to-length":144,"../internals/to-object":145}],153:[function(require,module,exports){
+var id = 0;
+var postfix = Math.random();
+
+module.exports = function (key) {
+  return 'Symbol(' + String(key === undefined ? '' : key) + ')_' + (++id + postfix).toString(36);
+};
+
+},{}],154:[function(require,module,exports){
+var NATIVE_SYMBOL = require('../internals/native-symbol');
+
+module.exports = NATIVE_SYMBOL
+  // eslint-disable-next-line no-undef
+  && !Symbol.sham
+  // eslint-disable-next-line no-undef
+  && typeof Symbol.iterator == 'symbol';
+
+},{"../internals/native-symbol":87}],155:[function(require,module,exports){
+var wellKnownSymbol = require('../internals/well-known-symbol');
+
+exports.f = wellKnownSymbol;
+
+},{"../internals/well-known-symbol":156}],156:[function(require,module,exports){
+var global = require('../internals/global');
+var shared = require('../internals/shared');
+var has = require('../internals/has');
+var uid = require('../internals/uid');
+var NATIVE_SYMBOL = require('../internals/native-symbol');
+var USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');
+
+var WellKnownSymbolsStore = shared('wks');
+var Symbol = global.Symbol;
+var createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol : Symbol && Symbol.withoutSetter || uid;
+
+module.exports = function (name) {
+  if (!has(WellKnownSymbolsStore, name)) {
+    if (NATIVE_SYMBOL && has(Symbol, name)) WellKnownSymbolsStore[name] = Symbol[name];
+    else WellKnownSymbolsStore[name] = createWellKnownSymbol('Symbol.' + name);
+  } return WellKnownSymbolsStore[name];
+};
+
+},{"../internals/global":59,"../internals/has":60,"../internals/native-symbol":87,"../internals/shared":128,"../internals/uid":153,"../internals/use-symbol-as-uid":154}],157:[function(require,module,exports){
+// a string of all valid unicode whitespaces
+// eslint-disable-next-line max-len
+module.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';
+
+},{}],158:[function(require,module,exports){
+'use strict';
+var $ = require('../internals/export');
+var global = require('../internals/global');
+var arrayBufferModule = require('../internals/array-buffer');
+var setSpecies = require('../internals/set-species');
+
+var ARRAY_BUFFER = 'ArrayBuffer';
+var ArrayBuffer = arrayBufferModule[ARRAY_BUFFER];
+var NativeArrayBuffer = global[ARRAY_BUFFER];
+
+// `ArrayBuffer` constructor
+// https://tc39.github.io/ecma262/#sec-arraybuffer-constructor
+$({ global: true, forced: NativeArrayBuffer !== ArrayBuffer }, {
+  ArrayBuffer: ArrayBuffer
+});
+
+setSpecies(ARRAY_BUFFER);
+
+},{"../internals/array-buffer":10,"../internals/export":49,"../internals/global":59,"../internals/set-species":124}],159:[function(require,module,exports){
+var $ = require('../internals/export');
+var ArrayBufferViewCore = require('../internals/array-buffer-view-core');
+
+var NATIVE_ARRAY_BUFFER_VIEWS = ArrayBufferViewCore.NATIVE_ARRAY_BUFFER_VIEWS;
+
+// `ArrayBuffer.isView` method
+// https://tc39.github.io/ecma262/#sec-arraybuffer.isview
+$({ target: 'ArrayBuffer', stat: true, forced: !NATIVE_ARRAY_BUFFER_VIEWS }, {
+  isView: ArrayBufferViewCore.isView
+});
+
+},{"../internals/array-buffer-view-core":9,"../internals/export":49}],160:[function(require,module,exports){
+'use strict';
+var $ = require('../internals/export');
+var fails = require('../internals/fails');
+var ArrayBufferModule = require('../internals/array-buffer');
+var anObject = require('../internals/an-object');
+var toAbsoluteIndex = require('../internals/to-absolute-index');
+var toLength = require('../internals/to-length');
+var speciesConstructor = require('../internals/species-constructor');
+
+var ArrayBuffer = ArrayBufferModule.ArrayBuffer;
+var DataView = ArrayBufferModule.DataView;
+var nativeArrayBufferSlice = ArrayBuffer.prototype.slice;
+
+var INCORRECT_SLICE = fails(function () {
+  return !new ArrayBuffer(2).slice(1, undefined).byteLength;
+});
+
+// `ArrayBuffer.prototype.slice` method
+// https://tc39.github.io/ecma262/#sec-arraybuffer.prototype.slice
+$({ target: 'ArrayBuffer', proto: true, unsafe: true, forced: INCORRECT_SLICE }, {
+  slice: function slice(start, end) {
+    if (nativeArrayBufferSlice !== undefined && end === undefined) {
+      return nativeArrayBufferSlice.call(anObject(this), start); // FF fix
+    }
+    var length = anObject(this).byteLength;
+    var first = toAbsoluteIndex(start, length);
+    var fin = toAbsoluteIndex(end === undefined ? length : end, length);
+    var result = new (speciesConstructor(this, ArrayBuffer))(toLength(fin - first));
+    var viewSource = new DataView(this);
+    var viewTarget = new DataView(result);
+    var index = 0;
+    while (first < fin) {
+      viewTarget.setUint8(index++, viewSource.getUint8(first++));
+    } return result;
+  }
+});
+
+},{"../internals/an-object":7,"../internals/array-buffer":10,"../internals/export":49,"../internals/fails":50,"../internals/species-constructor":129,"../internals/to-absolute-index":140,"../internals/to-length":144}],161:[function(require,module,exports){
+'use strict';
+var $ = require('../internals/export');
+var fails = require('../internals/fails');
+var isArray = require('../internals/is-array');
+var isObject = require('../internals/is-object');
+var toObject = require('../internals/to-object');
+var toLength = require('../internals/to-length');
+var createProperty = require('../internals/create-property');
+var arraySpeciesCreate = require('../internals/array-species-create');
+var arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');
+var wellKnownSymbol = require('../internals/well-known-symbol');
+var V8_VERSION = require('../internals/engine-v8-version');
+
+var IS_CONCAT_SPREADABLE = wellKnownSymbol('isConcatSpreadable');
+var MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF;
+var MAXIMUM_ALLOWED_INDEX_EXCEEDED = 'Maximum allowed index exceeded';
+
+// 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 = V8_VERSION >= 51 || !fails(function () {
+  var array = [];
+  array[IS_CONCAT_SPREADABLE] = false;
+  return array.concat()[0] !== array;
+});
+
+var SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('concat');
+
+var isConcatSpreadable = function (O) {
+  if (!isObject(O)) return false;
+  var spreadable = O[IS_CONCAT_SPREADABLE];
+  return spreadable !== undefined ? !!spreadable : isArray(O);
+};
+
+var FORCED = !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
+$({ target: 'Array', proto: true, forced: FORCED }, {
+  concat: function concat(arg) { // eslint-disable-line no-unused-vars
+    var O = toObject(this);
+    var A = arraySpeciesCreate(O, 0);
+    var n = 0;
+    var i, k, length, len, E;
+    for (i = -1, length = arguments.length; i < length; i++) {
+      E = i === -1 ? O : arguments[i];
+      if (isConcatSpreadable(E)) {
+        len = toLength(E.length);
+        if (n + len > MAX_SAFE_INTEGER) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED);
+        for (k = 0; k < len; k++, n++) if (k in E) createProperty(A, n, E[k]);
+      } else {
+        if (n >= MAX_SAFE_INTEGER) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED);
+        createProperty(A, n++, E);
+      }
+    }
+    A.length = n;
+    return A;
+  }
+});
+
+},{"../internals/array-method-has-species-support":18,"../internals/array-species-create":22,"../internals/create-property":37,"../internals/engine-v8-version":47,"../internals/export":49,"../internals/fails":50,"../internals/is-array":72,"../internals/is-object":75,"../internals/to-length":144,"../internals/to-object":145,"../internals/well-known-symbol":156}],162:[function(require,module,exports){
+var $ = require('../internals/export');
+var copyWithin = require('../internals/array-copy-within');
+var addToUnscopables = require('../internals/add-to-unscopables');
+
+// `Array.prototype.copyWithin` method
+// https://tc39.github.io/ecma262/#sec-array.prototype.copywithin
+$({ target: 'Array', proto: true }, {
+  copyWithin: copyWithin
+});
+
+// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables
+addToUnscopables('copyWithin');
+
+},{"../internals/add-to-unscopables":4,"../internals/array-copy-within":11,"../internals/export":49}],163:[function(require,module,exports){
+'use strict';
+var $ = require('../internals/export');
+var $every = require('../internals/array-iteration').every;
+var arrayMethodIsStrict = require('../internals/array-method-is-strict');
+var arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');
+
+var STRICT_METHOD = arrayMethodIsStrict('every');
+var USES_TO_LENGTH = arrayMethodUsesToLength('every');
+
+// `Array.prototype.every` method
+// https://tc39.github.io/ecma262/#sec-array.prototype.every
+$({ target: 'Array', proto: true, forced: !STRICT_METHOD || !USES_TO_LENGTH }, {
+  every: function every(callbackfn /* , thisArg */) {
+    return $every(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);
+  }
+});
+
+},{"../internals/array-iteration":16,"../internals/array-method-is-strict":19,"../internals/array-method-uses-to-length":20,"../internals/export":49}],164:[function(require,module,exports){
+var $ = require('../internals/export');
+var fill = require('../internals/array-fill');
+var addToUnscopables = require('../internals/add-to-unscopables');
+
+// `Array.prototype.fill` method
+// https://tc39.github.io/ecma262/#sec-array.prototype.fill
+$({ target: 'Array', proto: true }, {
+  fill: fill
+});
+
+// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables
+addToUnscopables('fill');
+
+},{"../internals/add-to-unscopables":4,"../internals/array-fill":12,"../internals/export":49}],165:[function(require,module,exports){
+'use strict';
+var $ = require('../internals/export');
+var $filter = require('../internals/array-iteration').filter;
+var arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');
+var arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');
+
+var HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('filter');
+// Edge 14- issue
+var USES_TO_LENGTH = arrayMethodUsesToLength('filter');
+
+// `Array.prototype.filter` method
+// https://tc39.github.io/ecma262/#sec-array.prototype.filter
+// with adding support of @@species
+$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT || !USES_TO_LENGTH }, {
+  filter: function filter(callbackfn /* , thisArg */) {
+    return $filter(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);
+  }
+});
+
+},{"../internals/array-iteration":16,"../internals/array-method-has-species-support":18,"../internals/array-method-uses-to-length":20,"../internals/export":49}],166:[function(require,module,exports){
+'use strict';
+var $ = require('../internals/export');
+var $findIndex = require('../internals/array-iteration').findIndex;
+var addToUnscopables = require('../internals/add-to-unscopables');
+var arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');
+
+var FIND_INDEX = 'findIndex';
+var SKIPS_HOLES = true;
+
+var USES_TO_LENGTH = arrayMethodUsesToLength(FIND_INDEX);
+
+// Shouldn't skip holes
+if (FIND_INDEX in []) Array(1)[FIND_INDEX](function () { SKIPS_HOLES = false; });
+
+// `Array.prototype.findIndex` method
+// https://tc39.github.io/ecma262/#sec-array.prototype.findindex
+$({ target: 'Array', proto: true, forced: SKIPS_HOLES || !USES_TO_LENGTH }, {
+  findIndex: function findIndex(callbackfn /* , that = undefined */) {
+    return $findIndex(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);
+  }
+});
+
+// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables
+addToUnscopables(FIND_INDEX);
+
+},{"../internals/add-to-unscopables":4,"../internals/array-iteration":16,"../internals/array-method-uses-to-length":20,"../internals/export":49}],167:[function(require,module,exports){
+'use strict';
+var $ = require('../internals/export');
+var $find = require('../internals/array-iteration').find;
+var addToUnscopables = require('../internals/add-to-unscopables');
+var arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');
+
+var FIND = 'find';
+var SKIPS_HOLES = true;
+
+var USES_TO_LENGTH = 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
+$({ target: 'Array', proto: true, forced: SKIPS_HOLES || !USES_TO_LENGTH }, {
+  find: function find(callbackfn /* , that = undefined */) {
+    return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);
+  }
+});
+
+// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables
+addToUnscopables(FIND);
+
+},{"../internals/add-to-unscopables":4,"../internals/array-iteration":16,"../internals/array-method-uses-to-length":20,"../internals/export":49}],168:[function(require,module,exports){
+'use strict';
+var $ = require('../internals/export');
+var flattenIntoArray = require('../internals/flatten-into-array');
+var toObject = require('../internals/to-object');
+var toLength = require('../internals/to-length');
+var aFunction = require('../internals/a-function');
+var arraySpeciesCreate = require('../internals/array-species-create');
+
+// `Array.prototype.flatMap` method
+// https://github.com/tc39/proposal-flatMap
+$({ target: 'Array', proto: true }, {
+  flatMap: function flatMap(callbackfn /* , thisArg */) {
+    var O = toObject(this);
+    var sourceLen = toLength(O.length);
+    var A;
+    aFunction(callbackfn);
+    A = arraySpeciesCreate(O, 0);
+    A.length = flattenIntoArray(A, O, O, sourceLen, 0, 1, callbackfn, arguments.length > 1 ? arguments[1] : undefined);
+    return A;
+  }
+});
+
+},{"../internals/a-function":2,"../internals/array-species-create":22,"../internals/export":49,"../internals/flatten-into-array":52,"../internals/to-length":144,"../internals/to-object":145}],169:[function(require,module,exports){
+'use strict';
+var $ = require('../internals/export');
+var flattenIntoArray = require('../internals/flatten-into-array');
+var toObject = require('../internals/to-object');
+var toLength = require('../internals/to-length');
+var toInteger = require('../internals/to-integer');
+var arraySpeciesCreate = require('../internals/array-species-create');
+
+// `Array.prototype.flat` method
+// https://github.com/tc39/proposal-flatMap
+$({ target: 'Array', proto: true }, {
+  flat: function flat(/* depthArg = 1 */) {
+    var depthArg = arguments.length ? arguments[0] : undefined;
+    var O = toObject(this);
+    var sourceLen = toLength(O.length);
+    var A = arraySpeciesCreate(O, 0);
+    A.length = flattenIntoArray(A, O, O, sourceLen, 0, depthArg === undefined ? 1 : toInteger(depthArg));
+    return A;
+  }
+});
+
+},{"../internals/array-species-create":22,"../internals/export":49,"../internals/flatten-into-array":52,"../internals/to-integer":143,"../internals/to-length":144,"../internals/to-object":145}],170:[function(require,module,exports){
+'use strict';
+var $ = require('../internals/export');
+var forEach = require('../internals/array-for-each');
+
+// `Array.prototype.forEach` method
+// https://tc39.github.io/ecma262/#sec-array.prototype.foreach
+$({ target: 'Array', proto: true, forced: [].forEach != forEach }, {
+  forEach: forEach
+});
+
+},{"../internals/array-for-each":13,"../internals/export":49}],171:[function(require,module,exports){
+var $ = require('../internals/export');
+var from = require('../internals/array-from');
+var checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');
+
+var INCORRECT_ITERATION = !checkCorrectnessOfIteration(function (iterable) {
+  Array.from(iterable);
+});
+
+// `Array.from` method
+// https://tc39.github.io/ecma262/#sec-array.from
+$({ target: 'Array', stat: true, forced: INCORRECT_ITERATION }, {
+  from: from
+});
+
+},{"../internals/array-from":14,"../internals/check-correctness-of-iteration":24,"../internals/export":49}],172:[function(require,module,exports){
+'use strict';
+var $ = require('../internals/export');
+var $includes = require('../internals/array-includes').includes;
+var addToUnscopables = require('../internals/add-to-unscopables');
+var arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');
+
+var USES_TO_LENGTH = arrayMethodUsesToLength('indexOf', { ACCESSORS: true, 1: 0 });
+
+// `Array.prototype.includes` method
+// https://tc39.github.io/ecma262/#sec-array.prototype.includes
+$({ target: 'Array', proto: true, forced: !USES_TO_LENGTH }, {
+  includes: function includes(el /* , fromIndex = 0 */) {
+    return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);
+  }
+});
+
+// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables
+addToUnscopables('includes');
+
+},{"../internals/add-to-unscopables":4,"../internals/array-includes":15,"../internals/array-method-uses-to-length":20,"../internals/export":49}],173:[function(require,module,exports){
+'use strict';
+var $ = require('../internals/export');
+var $indexOf = require('../internals/array-includes').indexOf;
+var arrayMethodIsStrict = require('../internals/array-method-is-strict');
+var arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');
+
+var nativeIndexOf = [].indexOf;
+
+var NEGATIVE_ZERO = !!nativeIndexOf && 1 / [1].indexOf(1, -0) < 0;
+var STRICT_METHOD = arrayMethodIsStrict('indexOf');
+var USES_TO_LENGTH = arrayMethodUsesToLength('indexOf', { ACCESSORS: true, 1: 0 });
+
+// `Array.prototype.indexOf` method
+// https://tc39.github.io/ecma262/#sec-array.prototype.indexof
+$({ target: 'Array', proto: true, forced: NEGATIVE_ZERO || !STRICT_METHOD || !USES_TO_LENGTH }, {
+  indexOf: function indexOf(searchElement /* , fromIndex = 0 */) {
+    return NEGATIVE_ZERO
+      // convert -0 to +0
+      ? nativeIndexOf.apply(this, arguments) || 0
+      : $indexOf(this, searchElement, arguments.length > 1 ? arguments[1] : undefined);
+  }
+});
+
+},{"../internals/array-includes":15,"../internals/array-method-is-strict":19,"../internals/array-method-uses-to-length":20,"../internals/export":49}],174:[function(require,module,exports){
+var $ = require('../internals/export');
+var isArray = require('../internals/is-array');
+
+// `Array.isArray` method
+// https://tc39.github.io/ecma262/#sec-array.isarray
+$({ target: 'Array', stat: true }, {
+  isArray: isArray
+});
+
+},{"../internals/export":49,"../internals/is-array":72}],175:[function(require,module,exports){
+'use strict';
+var toIndexedObject = require('../internals/to-indexed-object');
+var addToUnscopables = require('../internals/add-to-unscopables');
+var Iterators = require('../internals/iterators');
+var InternalStateModule = require('../internals/internal-state');
+var defineIterator = require('../internals/define-iterator');
+
+var ARRAY_ITERATOR = 'Array Iterator';
+var setInternalState = InternalStateModule.set;
+var getInternalState = InternalStateModule.getterFor(ARRAY_ITERATOR);
+
+// `Array.prototype.entries` method
+// https://tc39.github.io/ecma262/#sec-array.prototype.entries
+// `Array.prototype.keys` method
+// https://tc39.github.io/ecma262/#sec-array.prototype.keys
+// `Array.prototype.values` method
+// https://tc39.github.io/ecma262/#sec-array.prototype.values
+// `Array.prototype[@@iterator]` method
+// https://tc39.github.io/ecma262/#sec-array.prototype-@@iterator
+// `CreateArrayIterator` internal method
+// https://tc39.github.io/ecma262/#sec-createarrayiterator
+module.exports = defineIterator(Array, 'Array', function (iterated, kind) {
+  setInternalState(this, {
+    type: ARRAY_ITERATOR,
+    target: toIndexedObject(iterated), // target
+    index: 0,                          // next index
+    kind: kind                         // kind
+  });
+// `%ArrayIteratorPrototype%.next` method
+// https://tc39.github.io/ecma262/#sec-%arrayiteratorprototype%.next
+}, function () {
+  var state = getInternalState(this);
+  var target = state.target;
+  var kind = state.kind;
+  var index = state.index++;
+  if (!target || index >= target.length) {
+    state.target = undefined;
+    return { value: undefined, done: true };
+  }
+  if (kind == 'keys') return { value: index, done: false };
+  if (kind == 'values') return { value: target[index], done: false };
+  return { value: [index, target[index]], done: false };
+}, 'values');
+
+// argumentsList[@@iterator] is %ArrayProto_values%
+// https://tc39.github.io/ecma262/#sec-createunmappedargumentsobject
+// https://tc39.github.io/ecma262/#sec-createmappedargumentsobject
+Iterators.Arguments = Iterators.Array;
+
+// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables
+addToUnscopables('keys');
+addToUnscopables('values');
+addToUnscopables('entries');
+
+},{"../internals/add-to-unscopables":4,"../internals/define-iterator":40,"../internals/internal-state":70,"../internals/iterators":80,"../internals/to-indexed-object":142}],176:[function(require,module,exports){
+'use strict';
+var $ = require('../internals/export');
+var IndexedObject = require('../internals/indexed-object');
+var toIndexedObject = require('../internals/to-indexed-object');
+var arrayMethodIsStrict = require('../internals/array-method-is-strict');
+
+var nativeJoin = [].join;
+
+var ES3_STRINGS = IndexedObject != Object;
+var STRICT_METHOD = arrayMethodIsStrict('join', ',');
+
+// `Array.prototype.join` method
+// https://tc39.github.io/ecma262/#sec-array.prototype.join
+$({ target: 'Array', proto: true, forced: ES3_STRINGS || !STRICT_METHOD }, {
+  join: function join(separator) {
+    return nativeJoin.call(toIndexedObject(this), separator === undefined ? ',' : separator);
+  }
+});
+
+},{"../internals/array-method-is-strict":19,"../internals/export":49,"../internals/indexed-object":66,"../internals/to-indexed-object":142}],177:[function(require,module,exports){
+var $ = require('../internals/export');
+var lastIndexOf = require('../internals/array-last-index-of');
+
+// `Array.prototype.lastIndexOf` method
+// https://tc39.github.io/ecma262/#sec-array.prototype.lastindexof
+$({ target: 'Array', proto: true, forced: lastIndexOf !== [].lastIndexOf }, {
+  lastIndexOf: lastIndexOf
+});
+
+},{"../internals/array-last-index-of":17,"../internals/export":49}],178:[function(require,module,exports){
+'use strict';
+var $ = require('../internals/export');
+var $map = require('../internals/array-iteration').map;
+var arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');
+var arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');
+
+var HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('map');
+// FF49- issue
+var USES_TO_LENGTH = arrayMethodUsesToLength('map');
+
+// `Array.prototype.map` method
+// https://tc39.github.io/ecma262/#sec-array.prototype.map
+// with adding support of @@species
+$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT || !USES_TO_LENGTH }, {
+  map: function map(callbackfn /* , thisArg */) {
+    return $map(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);
+  }
+});
+
+},{"../internals/array-iteration":16,"../internals/array-method-has-species-support":18,"../internals/array-method-uses-to-length":20,"../internals/export":49}],179:[function(require,module,exports){
+'use strict';
+var $ = require('../internals/export');
+var fails = require('../internals/fails');
+var createProperty = require('../internals/create-property');
+
+var ISNT_GENERIC = fails(function () {
+  function F() { /* empty */ }
+  return !(Array.of.call(F) instanceof F);
+});
+
+// `Array.of` method
+// https://tc39.github.io/ecma262/#sec-array.of
+// WebKit Array.of isn't generic
+$({ target: 'Array', stat: true, forced: ISNT_GENERIC }, {
+  of: function of(/* ...args */) {
+    var index = 0;
+    var argumentsLength = arguments.length;
+    var result = new (typeof this == 'function' ? this : Array)(argumentsLength);
+    while (argumentsLength > index) createProperty(result, index, arguments[index++]);
+    result.length = argumentsLength;
+    return result;
+  }
+});
+
+},{"../internals/create-property":37,"../internals/export":49,"../internals/fails":50}],180:[function(require,module,exports){
+'use strict';
+var $ = require('../internals/export');
+var $reduceRight = require('../internals/array-reduce').right;
+var arrayMethodIsStrict = require('../internals/array-method-is-strict');
+var arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');
+
+var STRICT_METHOD = arrayMethodIsStrict('reduceRight');
+// For preventing possible almost infinite loop in non-standard implementations, test the forward version of the method
+var USES_TO_LENGTH = arrayMethodUsesToLength('reduce', { 1: 0 });
+
+// `Array.prototype.reduceRight` method
+// https://tc39.github.io/ecma262/#sec-array.prototype.reduceright
+$({ target: 'Array', proto: true, forced: !STRICT_METHOD || !USES_TO_LENGTH }, {
+  reduceRight: function reduceRight(callbackfn /* , initialValue */) {
+    return $reduceRight(this, callbackfn, arguments.length, arguments.length > 1 ? arguments[1] : undefined);
+  }
+});
+
+},{"../internals/array-method-is-strict":19,"../internals/array-method-uses-to-length":20,"../internals/array-reduce":21,"../internals/export":49}],181:[function(require,module,exports){
+'use strict';
+var $ = require('../internals/export');
+var $reduce = require('../internals/array-reduce').left;
+var arrayMethodIsStrict = require('../internals/array-method-is-strict');
+var arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');
+
+var STRICT_METHOD = arrayMethodIsStrict('reduce');
+var USES_TO_LENGTH = arrayMethodUsesToLength('reduce', { 1: 0 });
+
+// `Array.prototype.reduce` method
+// https://tc39.github.io/ecma262/#sec-array.prototype.reduce
+$({ target: 'Array', proto: true, forced: !STRICT_METHOD || !USES_TO_LENGTH }, {
+  reduce: function reduce(callbackfn /* , initialValue */) {
+    return $reduce(this, callbackfn, arguments.length, arguments.length > 1 ? arguments[1] : undefined);
+  }
+});
+
+},{"../internals/array-method-is-strict":19,"../internals/array-method-uses-to-length":20,"../internals/array-reduce":21,"../internals/export":49}],182:[function(require,module,exports){
+'use strict';
+var $ = require('../internals/export');
+var isArray = require('../internals/is-array');
+
+var nativeReverse = [].reverse;
+var test = [1, 2];
+
+// `Array.prototype.reverse` method
+// https://tc39.github.io/ecma262/#sec-array.prototype.reverse
+// fix for Safari 12.0 bug
+// https://bugs.webkit.org/show_bug.cgi?id=188794
+$({ target: 'Array', proto: true, forced: String(test) === String(test.reverse()) }, {
+  reverse: function reverse() {
+    // eslint-disable-next-line no-self-assign
+    if (isArray(this)) this.length = this.length;
+    return nativeReverse.call(this);
+  }
+});
+
+},{"../internals/export":49,"../internals/is-array":72}],183:[function(require,module,exports){
+'use strict';
+var $ = require('../internals/export');
+var isObject = require('../internals/is-object');
+var isArray = require('../internals/is-array');
+var toAbsoluteIndex = require('../internals/to-absolute-index');
+var toLength = require('../internals/to-length');
+var toIndexedObject = require('../internals/to-indexed-object');
+var createProperty = require('../internals/create-property');
+var wellKnownSymbol = require('../internals/well-known-symbol');
+var arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');
+var arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');
+
+var HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('slice');
+var USES_TO_LENGTH = arrayMethodUsesToLength('slice', { ACCESSORS: true, 0: 0, 1: 2 });
+
+var SPECIES = wellKnownSymbol('species');
+var nativeSlice = [].slice;
+var max = Math.max;
+
+// `Array.prototype.slice` method
+// https://tc39.github.io/ecma262/#sec-array.prototype.slice
+// fallback for not array-like ES3 strings and DOM objects
+$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT || !USES_TO_LENGTH }, {
+  slice: function slice(start, end) {
+    var O = toIndexedObject(this);
+    var length = toLength(O.length);
+    var k = toAbsoluteIndex(start, length);
+    var fin = toAbsoluteIndex(end === undefined ? length : end, length);
+    // inline `ArraySpeciesCreate` for usage native `Array#slice` where it's possible
+    var Constructor, result, n;
+    if (isArray(O)) {
+      Constructor = O.constructor;
+      // cross-realm fallback
+      if (typeof Constructor == 'function' && (Constructor === Array || isArray(Constructor.prototype))) {
+        Constructor = undefined;
+      } else if (isObject(Constructor)) {
+        Constructor = Constructor[SPECIES];
+        if (Constructor === null) Constructor = undefined;
+      }
+      if (Constructor === Array || Constructor === undefined) {
+        return nativeSlice.call(O, k, fin);
+      }
+    }
+    result = new (Constructor === undefined ? Array : Constructor)(max(fin - k, 0));
+    for (n = 0; k < fin; k++, n++) if (k in O) createProperty(result, n, O[k]);
+    result.length = n;
+    return result;
+  }
+});
+
+},{"../internals/array-method-has-species-support":18,"../internals/array-method-uses-to-length":20,"../internals/create-property":37,"../internals/export":49,"../internals/is-array":72,"../internals/is-object":75,"../internals/to-absolute-index":140,"../internals/to-indexed-object":142,"../internals/to-length":144,"../internals/well-known-symbol":156}],184:[function(require,module,exports){
+'use strict';
+var $ = require('../internals/export');
+var $some = require('../internals/array-iteration').some;
+var arrayMethodIsStrict = require('../internals/array-method-is-strict');
+var arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');
+
+var STRICT_METHOD = arrayMethodIsStrict('some');
+var USES_TO_LENGTH = arrayMethodUsesToLength('some');
+
+// `Array.prototype.some` method
+// https://tc39.github.io/ecma262/#sec-array.prototype.some
+$({ target: 'Array', proto: true, forced: !STRICT_METHOD || !USES_TO_LENGTH }, {
+  some: function some(callbackfn /* , thisArg */) {
+    return $some(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);
+  }
+});
+
+},{"../internals/array-iteration":16,"../internals/array-method-is-strict":19,"../internals/array-method-uses-to-length":20,"../internals/export":49}],185:[function(require,module,exports){
+'use strict';
+var $ = require('../internals/export');
+var aFunction = require('../internals/a-function');
+var toObject = require('../internals/to-object');
+var fails = require('../internals/fails');
+var arrayMethodIsStrict = require('../internals/array-method-is-strict');
+
+var test = [];
+var nativeSort = test.sort;
+
+// IE8-
+var FAILS_ON_UNDEFINED = fails(function () {
+  test.sort(undefined);
+});
+// V8 bug
+var FAILS_ON_NULL = fails(function () {
+  test.sort(null);
+});
+// Old WebKit
+var STRICT_METHOD = arrayMethodIsStrict('sort');
+
+var FORCED = FAILS_ON_UNDEFINED || !FAILS_ON_NULL || !STRICT_METHOD;
+
+// `Array.prototype.sort` method
+// https://tc39.github.io/ecma262/#sec-array.prototype.sort
+$({ target: 'Array', proto: true, forced: FORCED }, {
+  sort: function sort(comparefn) {
+    return comparefn === undefined
+      ? nativeSort.call(toObject(this))
+      : nativeSort.call(toObject(this), aFunction(comparefn));
+  }
+});
+
+},{"../internals/a-function":2,"../internals/array-method-is-strict":19,"../internals/export":49,"../internals/fails":50,"../internals/to-object":145}],186:[function(require,module,exports){
+var setSpecies = require('../internals/set-species');
+
+// `Array[@@species]` getter
+// https://tc39.github.io/ecma262/#sec-get-array-@@species
+setSpecies('Array');
+
+},{"../internals/set-species":124}],187:[function(require,module,exports){
+'use strict';
+var $ = require('../internals/export');
+var toAbsoluteIndex = require('../internals/to-absolute-index');
+var toInteger = require('../internals/to-integer');
+var toLength = require('../internals/to-length');
+var toObject = require('../internals/to-object');
+var arraySpeciesCreate = require('../internals/array-species-create');
+var createProperty = require('../internals/create-property');
+var arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');
+var arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');
+
+var HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('splice');
+var USES_TO_LENGTH = arrayMethodUsesToLength('splice', { ACCESSORS: true, 0: 0, 1: 2 });
+
+var max = Math.max;
+var min = Math.min;
+var MAX_SAFE_INTEGER = 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
+$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT || !USES_TO_LENGTH }, {
+  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(max(toInteger(deleteCount), 0), len - actualStart);
+    }
+    if (len + insertCount - actualDeleteCount > MAX_SAFE_INTEGER) {
+      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;
+  }
+});
+
+},{"../internals/array-method-has-species-support":18,"../internals/array-method-uses-to-length":20,"../internals/array-species-create":22,"../internals/create-property":37,"../internals/export":49,"../internals/to-absolute-index":140,"../internals/to-integer":143,"../internals/to-length":144,"../internals/to-object":145}],188:[function(require,module,exports){
+// this method was added to unscopables after implementation
+// in popular engines, so it's moved to a separate module
+var addToUnscopables = require('../internals/add-to-unscopables');
+
+addToUnscopables('flatMap');
+
+},{"../internals/add-to-unscopables":4}],189:[function(require,module,exports){
+// this method was added to unscopables after implementation
+// in popular engines, so it's moved to a separate module
+var addToUnscopables = require('../internals/add-to-unscopables');
+
+addToUnscopables('flat');
+
+},{"../internals/add-to-unscopables":4}],190:[function(require,module,exports){
+var $ = require('../internals/export');
+var ArrayBufferModule = require('../internals/array-buffer');
+var NATIVE_ARRAY_BUFFER = require('../internals/array-buffer-native');
+
+// `DataView` constructor
+// https://tc39.github.io/ecma262/#sec-dataview-constructor
+$({ global: true, forced: !NATIVE_ARRAY_BUFFER }, {
+  DataView: ArrayBufferModule.DataView
+});
+
+},{"../internals/array-buffer":10,"../internals/array-buffer-native":8,"../internals/export":49}],191:[function(require,module,exports){
+var $ = require('../internals/export');
+
+// `Date.now` method
+// https://tc39.github.io/ecma262/#sec-date.now
+$({ target: 'Date', stat: true }, {
+  now: function now() {
+    return new Date().getTime();
+  }
+});
+
+},{"../internals/export":49}],192:[function(require,module,exports){
+var $ = require('../internals/export');
+var toISOString = require('../internals/date-to-iso-string');
+
+// `Date.prototype.toISOString` method
+// https://tc39.github.io/ecma262/#sec-date.prototype.toisostring
+// PhantomJS / old WebKit has a broken implementations
+$({ target: 'Date', proto: true, forced: Date.prototype.toISOString !== toISOString }, {
+  toISOString: toISOString
+});
+
+},{"../internals/date-to-iso-string":38,"../internals/export":49}],193:[function(require,module,exports){
+'use strict';
+var $ = require('../internals/export');
+var fails = require('../internals/fails');
+var toObject = require('../internals/to-object');
+var toPrimitive = require('../internals/to-primitive');
+
+var FORCED = fails(function () {
+  return new Date(NaN).toJSON() !== null
+    || Date.prototype.toJSON.call({ toISOString: function () { return 1; } }) !== 1;
+});
+
+// `Date.prototype.toJSON` method
+// https://tc39.github.io/ecma262/#sec-date.prototype.tojson
+$({ target: 'Date', proto: true, forced: FORCED }, {
+  // eslint-disable-next-line no-unused-vars
+  toJSON: function toJSON(key) {
+    var O = toObject(this);
+    var pv = toPrimitive(O);
+    return typeof pv == 'number' && !isFinite(pv) ? null : O.toISOString();
+  }
+});
+
+},{"../internals/export":49,"../internals/fails":50,"../internals/to-object":145,"../internals/to-primitive":148}],194:[function(require,module,exports){
+var createNonEnumerableProperty = require('../internals/create-non-enumerable-property');
+var dateToPrimitive = require('../internals/date-to-primitive');
+var wellKnownSymbol = require('../internals/well-known-symbol');
+
+var TO_PRIMITIVE = wellKnownSymbol('toPrimitive');
+var DatePrototype = Date.prototype;
+
+// `Date.prototype[@@toPrimitive]` method
+// https://tc39.github.io/ecma262/#sec-date.prototype-@@toprimitive
+if (!(TO_PRIMITIVE in DatePrototype)) {
+  createNonEnumerableProperty(DatePrototype, TO_PRIMITIVE, dateToPrimitive);
+}
+
+},{"../internals/create-non-enumerable-property":35,"../internals/date-to-primitive":39,"../internals/well-known-symbol":156}],195:[function(require,module,exports){
+var redefine = require('../internals/redefine');
+
+var DatePrototype = Date.prototype;
+var INVALID_DATE = 'Invalid Date';
+var TO_STRING = 'toString';
+var nativeDateToString = DatePrototype[TO_STRING];
+var getTime = DatePrototype.getTime;
+
+// `Date.prototype.toString` method
+// https://tc39.github.io/ecma262/#sec-date.prototype.tostring
+if (new Date(NaN) + '' != INVALID_DATE) {
+  redefine(DatePrototype, TO_STRING, function toString() {
+    var value = getTime.call(this);
+    // eslint-disable-next-line no-self-compare
+    return value === value ? nativeDateToString.call(this) : INVALID_DATE;
+  });
+}
+
+},{"../internals/redefine":116}],196:[function(require,module,exports){
+var $ = require('../internals/export');
+var bind = require('../internals/function-bind');
+
+// `Function.prototype.bind` method
+// https://tc39.github.io/ecma262/#sec-function.prototype.bind
+$({ target: 'Function', proto: true }, {
+  bind: bind
+});
+
+},{"../internals/export":49,"../internals/function-bind":55}],197:[function(require,module,exports){
+'use strict';
+var isObject = require('../internals/is-object');
+var definePropertyModule = require('../internals/object-define-property');
+var getPrototypeOf = require('../internals/object-get-prototype-of');
+var wellKnownSymbol = require('../internals/well-known-symbol');
+
+var HAS_INSTANCE = wellKnownSymbol('hasInstance');
+var FunctionPrototype = Function.prototype;
+
+// `Function.prototype[@@hasInstance]` method
+// https://tc39.github.io/ecma262/#sec-function.prototype-@@hasinstance
+if (!(HAS_INSTANCE in FunctionPrototype)) {
+  definePropertyModule.f(FunctionPrototype, HAS_INSTANCE, { value: function (O) {
+    if (typeof this != 'function' || !isObject(O)) return false;
+    if (!isObject(this.prototype)) return O instanceof this;
+    // for environment w/o native `@@hasInstance` logic enough `instanceof`, but add this:
+    while (O = getPrototypeOf(O)) if (this.prototype === O) return true;
+    return false;
+  } });
+}
+
+},{"../internals/is-object":75,"../internals/object-define-property":98,"../internals/object-get-prototype-of":103,"../internals/well-known-symbol":156}],198:[function(require,module,exports){
+var DESCRIPTORS = require('../internals/descriptors');
+var defineProperty = require('../internals/object-define-property').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(FunctionPrototype, NAME, {
+    configurable: true,
+    get: function () {
+      try {
+        return FunctionPrototypeToString.call(this).match(nameRE)[1];
+      } catch (error) {
+        return '';
+      }
+    }
+  });
+}
+
+},{"../internals/descriptors":42,"../internals/object-define-property":98}],199:[function(require,module,exports){
+var $ = require('../internals/export');
+var global = require('../internals/global');
+
+// `globalThis` object
+// https://github.com/tc39/proposal-global
+$({ global: true }, {
+  globalThis: global
+});
+
+},{"../internals/export":49,"../internals/global":59}],200:[function(require,module,exports){
+var $ = require('../internals/export');
+var getBuiltIn = require('../internals/get-built-in');
+var fails = require('../internals/fails');
+
+var $stringify = getBuiltIn('JSON', 'stringify');
+var re = /[\uD800-\uDFFF]/g;
+var low = /^[\uD800-\uDBFF]$/;
+var hi = /^[\uDC00-\uDFFF]$/;
+
+var fix = function (match, offset, string) {
+  var prev = string.charAt(offset - 1);
+  var next = string.charAt(offset + 1);
+  if ((low.test(match) && !hi.test(next)) || (hi.test(match) && !low.test(prev))) {
+    return '\\u' + match.charCodeAt(0).toString(16);
+  } return match;
+};
+
+var FORCED = fails(function () {
+  return $stringify('\uDF06\uD834') !== '"\\udf06\\ud834"'
+    || $stringify('\uDEAD') !== '"\\udead"';
+});
+
+if ($stringify) {
+  // https://github.com/tc39/proposal-well-formed-stringify
+  $({ target: 'JSON', stat: true, forced: FORCED }, {
+    // eslint-disable-next-line no-unused-vars
+    stringify: function stringify(it, replacer, space) {
+      var result = $stringify.apply(null, arguments);
+      return typeof result == 'string' ? result.replace(re, fix) : result;
+    }
+  });
+}
+
+},{"../internals/export":49,"../internals/fails":50,"../internals/get-built-in":56}],201:[function(require,module,exports){
+var global = require('../internals/global');
+var setToStringTag = require('../internals/set-to-string-tag');
+
+// JSON[@@toStringTag] property
+// https://tc39.github.io/ecma262/#sec-json-@@tostringtag
+setToStringTag(global.JSON, 'JSON', true);
+
+},{"../internals/global":59,"../internals/set-to-string-tag":125}],202:[function(require,module,exports){
+'use strict';
+var collection = require('../internals/collection');
+var collectionStrong = require('../internals/collection-strong');
+
+// `Map` constructor
+// https://tc39.github.io/ecma262/#sec-map-objects
+module.exports = collection('Map', function (init) {
+  return function Map() { return init(this, arguments.length ? arguments[0] : undefined); };
+}, collectionStrong);
+
+},{"../internals/collection":29,"../internals/collection-strong":27}],203:[function(require,module,exports){
+var $ = require('../internals/export');
+var log1p = require('../internals/math-log1p');
+
+var nativeAcosh = Math.acosh;
+var log = Math.log;
+var sqrt = Math.sqrt;
+var LN2 = Math.LN2;
+
+var FORCED = !nativeAcosh
+  // V8 bug: https://code.google.com/p/v8/issues/detail?id=3509
+  || Math.floor(nativeAcosh(Number.MAX_VALUE)) != 710
+  // Tor Browser bug: Math.acosh(Infinity) -> NaN
+  || nativeAcosh(Infinity) != Infinity;
+
+// `Math.acosh` method
+// https://tc39.github.io/ecma262/#sec-math.acosh
+$({ target: 'Math', stat: true, forced: FORCED }, {
+  acosh: function acosh(x) {
+    return (x = +x) < 1 ? NaN : x > 94906265.62425156
+      ? log(x) + LN2
+      : log1p(x - 1 + sqrt(x - 1) * sqrt(x + 1));
+  }
+});
+
+},{"../internals/export":49,"../internals/math-log1p":83}],204:[function(require,module,exports){
+var $ = require('../internals/export');
+
+var nativeAsinh = Math.asinh;
+var log = Math.log;
+var sqrt = Math.sqrt;
+
+function asinh(x) {
+  return !isFinite(x = +x) || x == 0 ? x : x < 0 ? -asinh(-x) : log(x + sqrt(x * x + 1));
+}
+
+// `Math.asinh` method
+// https://tc39.github.io/ecma262/#sec-math.asinh
+// Tor Browser bug: Math.asinh(0) -> -0
+$({ target: 'Math', stat: true, forced: !(nativeAsinh && 1 / nativeAsinh(0) > 0) }, {
+  asinh: asinh
+});
+
+},{"../internals/export":49}],205:[function(require,module,exports){
+var $ = require('../internals/export');
+
+var nativeAtanh = Math.atanh;
+var log = Math.log;
+
+// `Math.atanh` method
+// https://tc39.github.io/ecma262/#sec-math.atanh
+// Tor Browser bug: Math.atanh(-0) -> 0
+$({ target: 'Math', stat: true, forced: !(nativeAtanh && 1 / nativeAtanh(-0) < 0) }, {
+  atanh: function atanh(x) {
+    return (x = +x) == 0 ? x : log((1 + x) / (1 - x)) / 2;
+  }
+});
+
+},{"../internals/export":49}],206:[function(require,module,exports){
+var $ = require('../internals/export');
+var sign = require('../internals/math-sign');
+
+var abs = Math.abs;
+var pow = Math.pow;
+
+// `Math.cbrt` method
+// https://tc39.github.io/ecma262/#sec-math.cbrt
+$({ target: 'Math', stat: true }, {
+  cbrt: function cbrt(x) {
+    return sign(x = +x) * pow(abs(x), 1 / 3);
+  }
+});
+
+},{"../internals/export":49,"../internals/math-sign":84}],207:[function(require,module,exports){
+var $ = require('../internals/export');
+
+var floor = Math.floor;
+var log = Math.log;
+var LOG2E = Math.LOG2E;
+
+// `Math.clz32` method
+// https://tc39.github.io/ecma262/#sec-math.clz32
+$({ target: 'Math', stat: true }, {
+  clz32: function clz32(x) {
+    return (x >>>= 0) ? 31 - floor(log(x + 0.5) * LOG2E) : 32;
+  }
+});
+
+},{"../internals/export":49}],208:[function(require,module,exports){
+var $ = require('../internals/export');
+var expm1 = require('../internals/math-expm1');
+
+var nativeCosh = Math.cosh;
+var abs = Math.abs;
+var E = Math.E;
+
+// `Math.cosh` method
+// https://tc39.github.io/ecma262/#sec-math.cosh
+$({ target: 'Math', stat: true, forced: !nativeCosh || nativeCosh(710) === Infinity }, {
+  cosh: function cosh(x) {
+    var t = expm1(abs(x) - 1) + 1;
+    return (t + 1 / (t * E * E)) * (E / 2);
+  }
+});
+
+},{"../internals/export":49,"../internals/math-expm1":81}],209:[function(require,module,exports){
+var $ = require('../internals/export');
+var expm1 = require('../internals/math-expm1');
+
+// `Math.expm1` method
+// https://tc39.github.io/ecma262/#sec-math.expm1
+$({ target: 'Math', stat: true, forced: expm1 != Math.expm1 }, { expm1: expm1 });
+
+},{"../internals/export":49,"../internals/math-expm1":81}],210:[function(require,module,exports){
+var $ = require('../internals/export');
+var fround = require('../internals/math-fround');
+
+// `Math.fround` method
+// https://tc39.github.io/ecma262/#sec-math.fround
+$({ target: 'Math', stat: true }, { fround: fround });
+
+},{"../internals/export":49,"../internals/math-fround":82}],211:[function(require,module,exports){
+var $ = require('../internals/export');
+
+var $hypot = Math.hypot;
+var abs = Math.abs;
+var sqrt = Math.sqrt;
+
+// Chrome 77 bug
+// https://bugs.chromium.org/p/v8/issues/detail?id=9546
+var BUGGY = !!$hypot && $hypot(Infinity, NaN) !== Infinity;
+
+// `Math.hypot` method
+// https://tc39.github.io/ecma262/#sec-math.hypot
+$({ target: 'Math', stat: true, forced: BUGGY }, {
+  hypot: function hypot(value1, value2) { // eslint-disable-line no-unused-vars
+    var sum = 0;
+    var i = 0;
+    var aLen = arguments.length;
+    var larg = 0;
+    var arg, div;
+    while (i < aLen) {
+      arg = abs(arguments[i++]);
+      if (larg < arg) {
+        div = larg / arg;
+        sum = sum * div * div + 1;
+        larg = arg;
+      } else if (arg > 0) {
+        div = arg / larg;
+        sum += div * div;
+      } else sum += arg;
+    }
+    return larg === Infinity ? Infinity : larg * sqrt(sum);
+  }
+});
+
+},{"../internals/export":49}],212:[function(require,module,exports){
+var $ = require('../internals/export');
+var fails = require('../internals/fails');
+
+var nativeImul = Math.imul;
+
+var FORCED = fails(function () {
+  return nativeImul(0xFFFFFFFF, 5) != -5 || nativeImul.length != 2;
+});
+
+// `Math.imul` method
+// https://tc39.github.io/ecma262/#sec-math.imul
+// some WebKit versions fails with big numbers, some has wrong arity
+$({ target: 'Math', stat: true, forced: FORCED }, {
+  imul: function imul(x, y) {
+    var UINT16 = 0xFFFF;
+    var xn = +x;
+    var yn = +y;
+    var xl = UINT16 & xn;
+    var yl = UINT16 & yn;
+    return 0 | xl * yl + ((UINT16 & xn >>> 16) * yl + xl * (UINT16 & yn >>> 16) << 16 >>> 0);
+  }
+});
+
+},{"../internals/export":49,"../internals/fails":50}],213:[function(require,module,exports){
+var $ = require('../internals/export');
+
+var log = Math.log;
+var LOG10E = Math.LOG10E;
+
+// `Math.log10` method
+// https://tc39.github.io/ecma262/#sec-math.log10
+$({ target: 'Math', stat: true }, {
+  log10: function log10(x) {
+    return log(x) * LOG10E;
+  }
+});
+
+},{"../internals/export":49}],214:[function(require,module,exports){
+var $ = require('../internals/export');
+var log1p = require('../internals/math-log1p');
+
+// `Math.log1p` method
+// https://tc39.github.io/ecma262/#sec-math.log1p
+$({ target: 'Math', stat: true }, { log1p: log1p });
+
+},{"../internals/export":49,"../internals/math-log1p":83}],215:[function(require,module,exports){
+var $ = require('../internals/export');
+
+var log = Math.log;
+var LN2 = Math.LN2;
+
+// `Math.log2` method
+// https://tc39.github.io/ecma262/#sec-math.log2
+$({ target: 'Math', stat: true }, {
+  log2: function log2(x) {
+    return log(x) / LN2;
+  }
+});
+
+},{"../internals/export":49}],216:[function(require,module,exports){
+var $ = require('../internals/export');
+var sign = require('../internals/math-sign');
+
+// `Math.sign` method
+// https://tc39.github.io/ecma262/#sec-math.sign
+$({ target: 'Math', stat: true }, {
+  sign: sign
+});
+
+},{"../internals/export":49,"../internals/math-sign":84}],217:[function(require,module,exports){
+var $ = require('../internals/export');
+var fails = require('../internals/fails');
+var expm1 = require('../internals/math-expm1');
+
+var abs = Math.abs;
+var exp = Math.exp;
+var E = Math.E;
+
+var FORCED = fails(function () {
+  return Math.sinh(-2e-17) != -2e-17;
+});
+
+// `Math.sinh` method
+// https://tc39.github.io/ecma262/#sec-math.sinh
+// V8 near Chromium 38 has a problem with very small numbers
+$({ target: 'Math', stat: true, forced: FORCED }, {
+  sinh: function sinh(x) {
+    return abs(x = +x) < 1 ? (expm1(x) - expm1(-x)) / 2 : (exp(x - 1) - exp(-x - 1)) * (E / 2);
+  }
+});
+
+},{"../internals/export":49,"../internals/fails":50,"../internals/math-expm1":81}],218:[function(require,module,exports){
+var $ = require('../internals/export');
+var expm1 = require('../internals/math-expm1');
+
+var exp = Math.exp;
+
+// `Math.tanh` method
+// https://tc39.github.io/ecma262/#sec-math.tanh
+$({ target: 'Math', stat: true }, {
+  tanh: function tanh(x) {
+    var a = expm1(x = +x);
+    var b = expm1(-x);
+    return a == Infinity ? 1 : b == Infinity ? -1 : (a - b) / (exp(x) + exp(-x));
+  }
+});
+
+},{"../internals/export":49,"../internals/math-expm1":81}],219:[function(require,module,exports){
+var setToStringTag = require('../internals/set-to-string-tag');
+
+// Math[@@toStringTag] property
+// https://tc39.github.io/ecma262/#sec-math-@@tostringtag
+setToStringTag(Math, 'Math', true);
+
+},{"../internals/set-to-string-tag":125}],220:[function(require,module,exports){
+var $ = require('../internals/export');
+
+var ceil = Math.ceil;
+var floor = Math.floor;
+
+// `Math.trunc` method
+// https://tc39.github.io/ecma262/#sec-math.trunc
+$({ target: 'Math', stat: true }, {
+  trunc: function trunc(it) {
+    return (it > 0 ? floor : ceil)(it);
+  }
+});
+
+},{"../internals/export":49}],221:[function(require,module,exports){
+'use strict';
+var DESCRIPTORS = require('../internals/descriptors');
+var global = require('../internals/global');
+var isForced = require('../internals/is-forced');
+var redefine = require('../internals/redefine');
+var has = require('../internals/has');
+var classof = require('../internals/classof-raw');
+var inheritIfRequired = require('../internals/inherit-if-required');
+var toPrimitive = require('../internals/to-primitive');
+var fails = require('../internals/fails');
+var create = require('../internals/object-create');
+var getOwnPropertyNames = require('../internals/object-get-own-property-names').f;
+var getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;
+var defineProperty = require('../internals/object-define-property').f;
+var trim = require('../internals/string-trim').trim;
+
+var NUMBER = 'Number';
+var NativeNumber = global[NUMBER];
+var NumberPrototype = NativeNumber.prototype;
+
+// Opera ~12 has broken Object#toString
+var BROKEN_CLASSOF = classof(create(NumberPrototype)) == NUMBER;
+
+// `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, index, code;
+  if (typeof it == 'string' && it.length > 2) {
+    it = trim(it);
+    first = it.charCodeAt(0);
+    if (first === 43 || first === 45) {
+      third = it.charCodeAt(2);
+      if (third === 88 || third === 120) return NaN; // Number('+0x1') should be NaN, old V8 fix
+    } else if (first === 48) {
+      switch (it.charCodeAt(1)) {
+        case 66: case 98: radix = 2; maxCode = 49; break; // fast equal of /^0b[01]+$/i
+        case 79: case 111: radix = 8; maxCode = 55; break; // fast equal of /^0o[0-7]+$/i
+        default: return +it;
+      }
+      digits = it.slice(2);
+      length = digits.length;
+      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;
+      } return parseInt(digits, radix);
+    }
+  } return +it;
+};
+
+// `Number` constructor
+// https://tc39.github.io/ecma262/#sec-number-constructor
+if (isForced(NUMBER, !NativeNumber(' 0o1') || !NativeNumber('0b1') || NativeNumber('+0x1'))) {
+  var NumberWrapper = function Number(value) {
+    var it = arguments.length < 1 ? 0 : value;
+    var dummy = this;
+    return dummy instanceof NumberWrapper
+      // check on 1..constructor(foo) case
+      && (BROKEN_CLASSOF ? fails(function () { NumberPrototype.valueOf.call(dummy); }) : classof(dummy) != NUMBER)
+        ? inheritIfRequired(new NativeNumber(toNumber(it)), dummy, NumberWrapper) : toNumber(it);
+  };
+  for (var keys = DESCRIPTORS ? getOwnPropertyNames(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.length > j; j++) {
+    if (has(NativeNumber, key = keys[j]) && !has(NumberWrapper, key)) {
+      defineProperty(NumberWrapper, key, getOwnPropertyDescriptor(NativeNumber, key));
+    }
+  }
+  NumberWrapper.prototype = NumberPrototype;
+  NumberPrototype.constructor = NumberWrapper;
+  redefine(global, NUMBER, NumberWrapper);
+}
+
+},{"../internals/classof-raw":25,"../internals/descriptors":42,"../internals/fails":50,"../internals/global":59,"../internals/has":60,"../internals/inherit-if-required":67,"../internals/is-forced":73,"../internals/object-create":96,"../internals/object-define-property":98,"../internals/object-get-own-property-descriptor":99,"../internals/object-get-own-property-names":101,"../internals/redefine":116,"../internals/string-trim":137,"../internals/to-primitive":148}],222:[function(require,module,exports){
+var $ = require('../internals/export');
+
+// `Number.EPSILON` constant
+// https://tc39.github.io/ecma262/#sec-number.epsilon
+$({ target: 'Number', stat: true }, {
+  EPSILON: Math.pow(2, -52)
+});
+
+},{"../internals/export":49}],223:[function(require,module,exports){
+var $ = require('../internals/export');
+var numberIsFinite = require('../internals/number-is-finite');
+
+// `Number.isFinite` method
+// https://tc39.github.io/ecma262/#sec-number.isfinite
+$({ target: 'Number', stat: true }, { isFinite: numberIsFinite });
+
+},{"../internals/export":49,"../internals/number-is-finite":92}],224:[function(require,module,exports){
+var $ = require('../internals/export');
+var isInteger = require('../internals/is-integer');
+
+// `Number.isInteger` method
+// https://tc39.github.io/ecma262/#sec-number.isinteger
+$({ target: 'Number', stat: true }, {
+  isInteger: isInteger
+});
+
+},{"../internals/export":49,"../internals/is-integer":74}],225:[function(require,module,exports){
+var $ = require('../internals/export');
+
+// `Number.isNaN` method
+// https://tc39.github.io/ecma262/#sec-number.isnan
+$({ target: 'Number', stat: true }, {
+  isNaN: function isNaN(number) {
+    // eslint-disable-next-line no-self-compare
+    return number != number;
+  }
+});
+
+},{"../internals/export":49}],226:[function(require,module,exports){
+var $ = require('../internals/export');
+var isInteger = require('../internals/is-integer');
+
+var abs = Math.abs;
+
+// `Number.isSafeInteger` method
+// https://tc39.github.io/ecma262/#sec-number.issafeinteger
+$({ target: 'Number', stat: true }, {
+  isSafeInteger: function isSafeInteger(number) {
+    return isInteger(number) && abs(number) <= 0x1FFFFFFFFFFFFF;
+  }
+});
+
+},{"../internals/export":49,"../internals/is-integer":74}],227:[function(require,module,exports){
+var $ = require('../internals/export');
+
+// `Number.MAX_SAFE_INTEGER` constant
+// https://tc39.github.io/ecma262/#sec-number.max_safe_integer
+$({ target: 'Number', stat: true }, {
+  MAX_SAFE_INTEGER: 0x1FFFFFFFFFFFFF
+});
+
+},{"../internals/export":49}],228:[function(require,module,exports){
+var $ = require('../internals/export');
+
+// `Number.MIN_SAFE_INTEGER` constant
+// https://tc39.github.io/ecma262/#sec-number.min_safe_integer
+$({ target: 'Number', stat: true }, {
+  MIN_SAFE_INTEGER: -0x1FFFFFFFFFFFFF
+});
+
+},{"../internals/export":49}],229:[function(require,module,exports){
+var $ = require('../internals/export');
+var parseFloat = require('../internals/number-parse-float');
+
+// `Number.parseFloat` method
+// https://tc39.github.io/ecma262/#sec-number.parseFloat
+$({ target: 'Number', stat: true, forced: Number.parseFloat != parseFloat }, {
+  parseFloat: parseFloat
+});
+
+},{"../internals/export":49,"../internals/number-parse-float":93}],230:[function(require,module,exports){
+var $ = require('../internals/export');
+var parseInt = require('../internals/number-parse-int');
+
+// `Number.parseInt` method
+// https://tc39.github.io/ecma262/#sec-number.parseint
+$({ target: 'Number', stat: true, forced: Number.parseInt != parseInt }, {
+  parseInt: parseInt
+});
+
+},{"../internals/export":49,"../internals/number-parse-int":94}],231:[function(require,module,exports){
+'use strict';
+var $ = require('../internals/export');
+var toInteger = require('../internals/to-integer');
+var thisNumberValue = require('../internals/this-number-value');
+var repeat = require('../internals/string-repeat');
+var fails = require('../internals/fails');
+
+var nativeToFixed = 1.0.toFixed;
+var floor = Math.floor;
+
+var pow = function (x, n, acc) {
+  return n === 0 ? acc : n % 2 === 1 ? pow(x, n - 1, acc * x) : pow(x * x, n / 2, acc);
+};
+
+var log = function (x) {
+  var n = 0;
+  var x2 = x;
+  while (x2 >= 4096) {
+    n += 12;
+    x2 /= 4096;
+  }
+  while (x2 >= 2) {
+    n += 1;
+    x2 /= 2;
+  } return n;
+};
+
+var FORCED = nativeToFixed && (
+  0.00008.toFixed(3) !== '0.000' ||
+  0.9.toFixed(0) !== '1' ||
+  1.255.toFixed(2) !== '1.25' ||
+  1000000000000000128.0.toFixed(0) !== '1000000000000000128'
+) || !fails(function () {
+  // V8 ~ Android 4.3-
+  nativeToFixed.call({});
+});
+
+// `Number.prototype.toFixed` method
+// https://tc39.github.io/ecma262/#sec-number.prototype.tofixed
+$({ target: 'Number', proto: true, forced: FORCED }, {
+  // eslint-disable-next-line max-statements
+  toFixed: function toFixed(fractionDigits) {
+    var number = thisNumberValue(this);
+    var fractDigits = toInteger(fractionDigits);
+    var data = [0, 0, 0, 0, 0, 0];
+    var sign = '';
+    var result = '0';
+    var e, z, j, k;
+
+    var multiply = function (n, c) {
+      var index = -1;
+      var c2 = c;
+      while (++index < 6) {
+        c2 += n * data[index];
+        data[index] = c2 % 1e7;
+        c2 = floor(c2 / 1e7);
+      }
+    };
+
+    var divide = function (n) {
+      var index = 6;
+      var c = 0;
+      while (--index >= 0) {
+        c += data[index];
+        data[index] = floor(c / n);
+        c = (c % n) * 1e7;
+      }
+    };
+
+    var dataToString = function () {
+      var index = 6;
+      var s = '';
+      while (--index >= 0) {
+        if (s !== '' || index === 0 || data[index] !== 0) {
+          var t = String(data[index]);
+          s = s === '' ? t : s + repeat.call('0', 7 - t.length) + t;
+        }
+      } return s;
+    };
+
+    if (fractDigits < 0 || fractDigits > 20) throw RangeError('Incorrect fraction digits');
+    // eslint-disable-next-line no-self-compare
+    if (number != number) return 'NaN';
+    if (number <= -1e21 || number >= 1e21) return String(number);
+    if (number < 0) {
+      sign = '-';
+      number = -number;
+    }
+    if (number > 1e-21) {
+      e = log(number * pow(2, 69, 1)) - 69;
+      z = e < 0 ? number * pow(2, -e, 1) : number / pow(2, e, 1);
+      z *= 0x10000000000000;
+      e = 52 - e;
+      if (e > 0) {
+        multiply(0, z);
+        j = fractDigits;
+        while (j >= 7) {
+          multiply(1e7, 0);
+          j -= 7;
+        }
+        multiply(pow(10, j, 1), 0);
+        j = e - 1;
+        while (j >= 23) {
+          divide(1 << 23);
+          j -= 23;
+        }
+        divide(1 << j);
+        multiply(1, 1);
+        divide(2);
+        result = dataToString();
+      } else {
+        multiply(0, z);
+        multiply(1 << -e, 0);
+        result = dataToString() + repeat.call('0', fractDigits);
+      }
+    }
+    if (fractDigits > 0) {
+      k = result.length;
+      result = sign + (k <= fractDigits
+        ? '0.' + repeat.call('0', fractDigits - k) + result
+        : result.slice(0, k - fractDigits) + '.' + result.slice(k - fractDigits));
+    } else {
+      result = sign + result;
+    } return result;
+  }
+});
+
+},{"../internals/export":49,"../internals/fails":50,"../internals/string-repeat":135,"../internals/this-number-value":139,"../internals/to-integer":143}],232:[function(require,module,exports){
+'use strict';
+var $ = require('../internals/export');
+var fails = require('../internals/fails');
+var thisNumberValue = require('../internals/this-number-value');
+
+var nativeToPrecision = 1.0.toPrecision;
+
+var FORCED = fails(function () {
+  // IE7-
+  return nativeToPrecision.call(1, undefined) !== '1';
+}) || !fails(function () {
+  // V8 ~ Android 4.3-
+  nativeToPrecision.call({});
+});
+
+// `Number.prototype.toPrecision` method
+// https://tc39.github.io/ecma262/#sec-number.prototype.toprecision
+$({ target: 'Number', proto: true, forced: FORCED }, {
+  toPrecision: function toPrecision(precision) {
+    return precision === undefined
+      ? nativeToPrecision.call(thisNumberValue(this))
+      : nativeToPrecision.call(thisNumberValue(this), precision);
+  }
+});
+
+},{"../internals/export":49,"../internals/fails":50,"../internals/this-number-value":139}],233:[function(require,module,exports){
+var $ = require('../internals/export');
+var assign = require('../internals/object-assign');
+
+// `Object.assign` method
+// https://tc39.github.io/ecma262/#sec-object.assign
+$({ target: 'Object', stat: true, forced: Object.assign !== assign }, {
+  assign: assign
+});
+
+},{"../internals/export":49,"../internals/object-assign":95}],234:[function(require,module,exports){
+var $ = require('../internals/export');
+var DESCRIPTORS = require('../internals/descriptors');
+var create = require('../internals/object-create');
+
+// `Object.create` method
+// https://tc39.github.io/ecma262/#sec-object.create
+$({ target: 'Object', stat: true, sham: !DESCRIPTORS }, {
+  create: create
+});
+
+},{"../internals/descriptors":42,"../internals/export":49,"../internals/object-create":96}],235:[function(require,module,exports){
+'use strict';
+var $ = require('../internals/export');
+var DESCRIPTORS = require('../internals/descriptors');
+var FORCED = require('../internals/object-prototype-accessors-forced');
+var toObject = require('../internals/to-object');
+var aFunction = require('../internals/a-function');
+var definePropertyModule = require('../internals/object-define-property');
+
+// `Object.prototype.__defineGetter__` method
+// https://tc39.github.io/ecma262/#sec-object.prototype.__defineGetter__
+if (DESCRIPTORS) {
+  $({ target: 'Object', proto: true, forced: FORCED }, {
+    __defineGetter__: function __defineGetter__(P, getter) {
+      definePropertyModule.f(toObject(this), P, { get: aFunction(getter), enumerable: true, configurable: true });
+    }
+  });
+}
+
+},{"../internals/a-function":2,"../internals/descriptors":42,"../internals/export":49,"../internals/object-define-property":98,"../internals/object-prototype-accessors-forced":107,"../internals/to-object":145}],236:[function(require,module,exports){
+var $ = require('../internals/export');
+var DESCRIPTORS = require('../internals/descriptors');
+var defineProperties = require('../internals/object-define-properties');
+
+// `Object.defineProperties` method
+// https://tc39.github.io/ecma262/#sec-object.defineproperties
+$({ target: 'Object', stat: true, forced: !DESCRIPTORS, sham: !DESCRIPTORS }, {
+  defineProperties: defineProperties
+});
+
+},{"../internals/descriptors":42,"../internals/export":49,"../internals/object-define-properties":97}],237:[function(require,module,exports){
+var $ = require('../internals/export');
+var DESCRIPTORS = require('../internals/descriptors');
+var objectDefinePropertyModile = require('../internals/object-define-property');
+
+// `Object.defineProperty` method
+// https://tc39.github.io/ecma262/#sec-object.defineproperty
+$({ target: 'Object', stat: true, forced: !DESCRIPTORS, sham: !DESCRIPTORS }, {
+  defineProperty: objectDefinePropertyModile.f
+});
+
+},{"../internals/descriptors":42,"../internals/export":49,"../internals/object-define-property":98}],238:[function(require,module,exports){
+'use strict';
+var $ = require('../internals/export');
+var DESCRIPTORS = require('../internals/descriptors');
+var FORCED = require('../internals/object-prototype-accessors-forced');
+var toObject = require('../internals/to-object');
+var aFunction = require('../internals/a-function');
+var definePropertyModule = require('../internals/object-define-property');
+
+// `Object.prototype.__defineSetter__` method
+// https://tc39.github.io/ecma262/#sec-object.prototype.__defineSetter__
+if (DESCRIPTORS) {
+  $({ target: 'Object', proto: true, forced: FORCED }, {
+    __defineSetter__: function __defineSetter__(P, setter) {
+      definePropertyModule.f(toObject(this), P, { set: aFunction(setter), enumerable: true, configurable: true });
+    }
+  });
+}
+
+},{"../internals/a-function":2,"../internals/descriptors":42,"../internals/export":49,"../internals/object-define-property":98,"../internals/object-prototype-accessors-forced":107,"../internals/to-object":145}],239:[function(require,module,exports){
+var $ = require('../internals/export');
+var $entries = require('../internals/object-to-array').entries;
+
+// `Object.entries` method
+// https://tc39.github.io/ecma262/#sec-object.entries
+$({ target: 'Object', stat: true }, {
+  entries: function entries(O) {
+    return $entries(O);
+  }
+});
+
+},{"../internals/export":49,"../internals/object-to-array":109}],240:[function(require,module,exports){
+var $ = require('../internals/export');
+var FREEZING = require('../internals/freezing');
+var fails = require('../internals/fails');
+var isObject = require('../internals/is-object');
+var onFreeze = require('../internals/internal-metadata').onFreeze;
+
+var nativeFreeze = Object.freeze;
+var FAILS_ON_PRIMITIVES = fails(function () { nativeFreeze(1); });
+
+// `Object.freeze` method
+// https://tc39.github.io/ecma262/#sec-object.freeze
+$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES, sham: !FREEZING }, {
+  freeze: function freeze(it) {
+    return nativeFreeze && isObject(it) ? nativeFreeze(onFreeze(it)) : it;
+  }
+});
+
+},{"../internals/export":49,"../internals/fails":50,"../internals/freezing":53,"../internals/internal-metadata":69,"../internals/is-object":75}],241:[function(require,module,exports){
+var $ = require('../internals/export');
+var iterate = require('../internals/iterate');
+var createProperty = require('../internals/create-property');
+
+// `Object.fromEntries` method
+// https://github.com/tc39/proposal-object-from-entries
+$({ target: 'Object', stat: true }, {
+  fromEntries: function fromEntries(iterable) {
+    var obj = {};
+    iterate(iterable, function (k, v) {
+      createProperty(obj, k, v);
+    }, undefined, true);
+    return obj;
+  }
+});
+
+},{"../internals/create-property":37,"../internals/export":49,"../internals/iterate":78}],242:[function(require,module,exports){
+var $ = require('../internals/export');
+var fails = require('../internals/fails');
+var toIndexedObject = require('../internals/to-indexed-object');
+var nativeGetOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;
+var DESCRIPTORS = require('../internals/descriptors');
+
+var FAILS_ON_PRIMITIVES = fails(function () { nativeGetOwnPropertyDescriptor(1); });
+var FORCED = !DESCRIPTORS || FAILS_ON_PRIMITIVES;
+
+// `Object.getOwnPropertyDescriptor` method
+// https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptor
+$({ target: 'Object', stat: true, forced: FORCED, sham: !DESCRIPTORS }, {
+  getOwnPropertyDescriptor: function getOwnPropertyDescriptor(it, key) {
+    return nativeGetOwnPropertyDescriptor(toIndexedObject(it), key);
+  }
+});
+
+},{"../internals/descriptors":42,"../internals/export":49,"../internals/fails":50,"../internals/object-get-own-property-descriptor":99,"../internals/to-indexed-object":142}],243:[function(require,module,exports){
+var $ = require('../internals/export');
+var DESCRIPTORS = require('../internals/descriptors');
+var ownKeys = require('../internals/own-keys');
+var toIndexedObject = require('../internals/to-indexed-object');
+var getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');
+var createProperty = require('../internals/create-property');
+
+// `Object.getOwnPropertyDescriptors` method
+// https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptors
+$({ target: 'Object', stat: true, sham: !DESCRIPTORS }, {
+  getOwnPropertyDescriptors: function getOwnPropertyDescriptors(object) {
+    var O = toIndexedObject(object);
+    var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;
+    var keys = ownKeys(O);
+    var result = {};
+    var index = 0;
+    var key, descriptor;
+    while (keys.length > index) {
+      descriptor = getOwnPropertyDescriptor(O, key = keys[index++]);
+      if (descriptor !== undefined) createProperty(result, key, descriptor);
+    }
+    return result;
+  }
+});
+
+},{"../internals/create-property":37,"../internals/descriptors":42,"../internals/export":49,"../internals/object-get-own-property-descriptor":99,"../internals/own-keys":111,"../internals/to-indexed-object":142}],244:[function(require,module,exports){
+var $ = require('../internals/export');
+var fails = require('../internals/fails');
+var nativeGetOwnPropertyNames = require('../internals/object-get-own-property-names-external').f;
+
+var FAILS_ON_PRIMITIVES = fails(function () { return !Object.getOwnPropertyNames(1); });
+
+// `Object.getOwnPropertyNames` method
+// https://tc39.github.io/ecma262/#sec-object.getownpropertynames
+$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES }, {
+  getOwnPropertyNames: nativeGetOwnPropertyNames
+});
+
+},{"../internals/export":49,"../internals/fails":50,"../internals/object-get-own-property-names-external":100}],245:[function(require,module,exports){
+var $ = require('../internals/export');
+var fails = require('../internals/fails');
+var toObject = require('../internals/to-object');
+var nativeGetPrototypeOf = require('../internals/object-get-prototype-of');
+var CORRECT_PROTOTYPE_GETTER = require('../internals/correct-prototype-getter');
+
+var FAILS_ON_PRIMITIVES = fails(function () { nativeGetPrototypeOf(1); });
+
+// `Object.getPrototypeOf` method
+// https://tc39.github.io/ecma262/#sec-object.getprototypeof
+$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES, sham: !CORRECT_PROTOTYPE_GETTER }, {
+  getPrototypeOf: function getPrototypeOf(it) {
+    return nativeGetPrototypeOf(toObject(it));
+  }
+});
+
+
+},{"../internals/correct-prototype-getter":32,"../internals/export":49,"../internals/fails":50,"../internals/object-get-prototype-of":103,"../internals/to-object":145}],246:[function(require,module,exports){
+var $ = require('../internals/export');
+var fails = require('../internals/fails');
+var isObject = require('../internals/is-object');
+
+var nativeIsExtensible = Object.isExtensible;
+var FAILS_ON_PRIMITIVES = fails(function () { nativeIsExtensible(1); });
+
+// `Object.isExtensible` method
+// https://tc39.github.io/ecma262/#sec-object.isextensible
+$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES }, {
+  isExtensible: function isExtensible(it) {
+    return isObject(it) ? nativeIsExtensible ? nativeIsExtensible(it) : true : false;
+  }
+});
+
+},{"../internals/export":49,"../internals/fails":50,"../internals/is-object":75}],247:[function(require,module,exports){
+var $ = require('../internals/export');
+var fails = require('../internals/fails');
+var isObject = require('../internals/is-object');
+
+var nativeIsFrozen = Object.isFrozen;
+var FAILS_ON_PRIMITIVES = fails(function () { nativeIsFrozen(1); });
+
+// `Object.isFrozen` method
+// https://tc39.github.io/ecma262/#sec-object.isfrozen
+$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES }, {
+  isFrozen: function isFrozen(it) {
+    return isObject(it) ? nativeIsFrozen ? nativeIsFrozen(it) : false : true;
+  }
+});
+
+},{"../internals/export":49,"../internals/fails":50,"../internals/is-object":75}],248:[function(require,module,exports){
+var $ = require('../internals/export');
+var fails = require('../internals/fails');
+var isObject = require('../internals/is-object');
+
+var nativeIsSealed = Object.isSealed;
+var FAILS_ON_PRIMITIVES = fails(function () { nativeIsSealed(1); });
+
+// `Object.isSealed` method
+// https://tc39.github.io/ecma262/#sec-object.issealed
+$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES }, {
+  isSealed: function isSealed(it) {
+    return isObject(it) ? nativeIsSealed ? nativeIsSealed(it) : false : true;
+  }
+});
+
+},{"../internals/export":49,"../internals/fails":50,"../internals/is-object":75}],249:[function(require,module,exports){
+var $ = require('../internals/export');
+var is = require('../internals/same-value');
+
+// `Object.is` method
+// https://tc39.github.io/ecma262/#sec-object.is
+$({ target: 'Object', stat: true }, {
+  is: is
+});
+
+},{"../internals/export":49,"../internals/same-value":122}],250:[function(require,module,exports){
+var $ = require('../internals/export');
+var toObject = require('../internals/to-object');
+var nativeKeys = require('../internals/object-keys');
+var fails = require('../internals/fails');
+
+var FAILS_ON_PRIMITIVES = fails(function () { nativeKeys(1); });
+
+// `Object.keys` method
+// https://tc39.github.io/ecma262/#sec-object.keys
+$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES }, {
+  keys: function keys(it) {
+    return nativeKeys(toObject(it));
+  }
+});
+
+},{"../internals/export":49,"../internals/fails":50,"../internals/object-keys":105,"../internals/to-object":145}],251:[function(require,module,exports){
+'use strict';
+var $ = require('../internals/export');
+var DESCRIPTORS = require('../internals/descriptors');
+var FORCED = require('../internals/object-prototype-accessors-forced');
+var toObject = require('../internals/to-object');
+var toPrimitive = require('../internals/to-primitive');
+var getPrototypeOf = require('../internals/object-get-prototype-of');
+var getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;
+
+// `Object.prototype.__lookupGetter__` method
+// https://tc39.github.io/ecma262/#sec-object.prototype.__lookupGetter__
+if (DESCRIPTORS) {
+  $({ target: 'Object', proto: true, forced: FORCED }, {
+    __lookupGetter__: function __lookupGetter__(P) {
+      var O = toObject(this);
+      var key = toPrimitive(P, true);
+      var desc;
+      do {
+        if (desc = getOwnPropertyDescriptor(O, key)) return desc.get;
+      } while (O = getPrototypeOf(O));
+    }
+  });
+}
+
+},{"../internals/descriptors":42,"../internals/export":49,"../internals/object-get-own-property-descriptor":99,"../internals/object-get-prototype-of":103,"../internals/object-prototype-accessors-forced":107,"../internals/to-object":145,"../internals/to-primitive":148}],252:[function(require,module,exports){
+'use strict';
+var $ = require('../internals/export');
+var DESCRIPTORS = require('../internals/descriptors');
+var FORCED = require('../internals/object-prototype-accessors-forced');
+var toObject = require('../internals/to-object');
+var toPrimitive = require('../internals/to-primitive');
+var getPrototypeOf = require('../internals/object-get-prototype-of');
+var getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;
+
+// `Object.prototype.__lookupSetter__` method
+// https://tc39.github.io/ecma262/#sec-object.prototype.__lookupSetter__
+if (DESCRIPTORS) {
+  $({ target: 'Object', proto: true, forced: FORCED }, {
+    __lookupSetter__: function __lookupSetter__(P) {
+      var O = toObject(this);
+      var key = toPrimitive(P, true);
+      var desc;
+      do {
+        if (desc = getOwnPropertyDescriptor(O, key)) return desc.set;
+      } while (O = getPrototypeOf(O));
+    }
+  });
+}
+
+},{"../internals/descriptors":42,"../internals/export":49,"../internals/object-get-own-property-descriptor":99,"../internals/object-get-prototype-of":103,"../internals/object-prototype-accessors-forced":107,"../internals/to-object":145,"../internals/to-primitive":148}],253:[function(require,module,exports){
+var $ = require('../internals/export');
+var isObject = require('../internals/is-object');
+var onFreeze = require('../internals/internal-metadata').onFreeze;
+var FREEZING = require('../internals/freezing');
+var fails = require('../internals/fails');
+
+var nativePreventExtensions = Object.preventExtensions;
+var FAILS_ON_PRIMITIVES = fails(function () { nativePreventExtensions(1); });
+
+// `Object.preventExtensions` method
+// https://tc39.github.io/ecma262/#sec-object.preventextensions
+$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES, sham: !FREEZING }, {
+  preventExtensions: function preventExtensions(it) {
+    return nativePreventExtensions && isObject(it) ? nativePreventExtensions(onFreeze(it)) : it;
+  }
+});
+
+},{"../internals/export":49,"../internals/fails":50,"../internals/freezing":53,"../internals/internal-metadata":69,"../internals/is-object":75}],254:[function(require,module,exports){
+var $ = require('../internals/export');
+var isObject = require('../internals/is-object');
+var onFreeze = require('../internals/internal-metadata').onFreeze;
+var FREEZING = require('../internals/freezing');
+var fails = require('../internals/fails');
+
+var nativeSeal = Object.seal;
+var FAILS_ON_PRIMITIVES = fails(function () { nativeSeal(1); });
+
+// `Object.seal` method
+// https://tc39.github.io/ecma262/#sec-object.seal
+$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES, sham: !FREEZING }, {
+  seal: function seal(it) {
+    return nativeSeal && isObject(it) ? nativeSeal(onFreeze(it)) : it;
+  }
+});
+
+},{"../internals/export":49,"../internals/fails":50,"../internals/freezing":53,"../internals/internal-metadata":69,"../internals/is-object":75}],255:[function(require,module,exports){
+var $ = require('../internals/export');
+var setPrototypeOf = require('../internals/object-set-prototype-of');
+
+// `Object.setPrototypeOf` method
+// https://tc39.github.io/ecma262/#sec-object.setprototypeof
+$({ target: 'Object', stat: true }, {
+  setPrototypeOf: setPrototypeOf
+});
+
+},{"../internals/export":49,"../internals/object-set-prototype-of":108}],256:[function(require,module,exports){
+var TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');
+var redefine = require('../internals/redefine');
+var toString = require('../internals/object-to-string');
+
+// `Object.prototype.toString` method
+// https://tc39.github.io/ecma262/#sec-object.prototype.tostring
+if (!TO_STRING_TAG_SUPPORT) {
+  redefine(Object.prototype, 'toString', toString, { unsafe: true });
+}
+
+},{"../internals/object-to-string":110,"../internals/redefine":116,"../internals/to-string-tag-support":149}],257:[function(require,module,exports){
+var $ = require('../internals/export');
+var $values = require('../internals/object-to-array').values;
+
+// `Object.values` method
+// https://tc39.github.io/ecma262/#sec-object.values
+$({ target: 'Object', stat: true }, {
+  values: function values(O) {
+    return $values(O);
+  }
+});
+
+},{"../internals/export":49,"../internals/object-to-array":109}],258:[function(require,module,exports){
+var $ = require('../internals/export');
+var parseFloatImplementation = require('../internals/number-parse-float');
+
+// `parseFloat` method
+// https://tc39.github.io/ecma262/#sec-parsefloat-string
+$({ global: true, forced: parseFloat != parseFloatImplementation }, {
+  parseFloat: parseFloatImplementation
+});
+
+},{"../internals/export":49,"../internals/number-parse-float":93}],259:[function(require,module,exports){
+var $ = require('../internals/export');
+var parseIntImplementation = require('../internals/number-parse-int');
+
+// `parseInt` method
+// https://tc39.github.io/ecma262/#sec-parseint-string-radix
+$({ global: true, forced: parseInt != parseIntImplementation }, {
+  parseInt: parseIntImplementation
+});
+
+},{"../internals/export":49,"../internals/number-parse-int":94}],260:[function(require,module,exports){
+'use strict';
+var $ = require('../internals/export');
+var aFunction = require('../internals/a-function');
+var newPromiseCapabilityModule = require('../internals/new-promise-capability');
+var perform = require('../internals/perform');
+var iterate = require('../internals/iterate');
+
+// `Promise.allSettled` method
+// https://github.com/tc39/proposal-promise-allSettled
+$({ target: 'Promise', stat: true }, {
+  allSettled: function allSettled(iterable) {
+    var C = this;
+    var capability = newPromiseCapabilityModule.f(C);
+    var resolve = capability.resolve;
+    var reject = capability.reject;
+    var result = perform(function () {
+      var promiseResolve = aFunction(C.resolve);
+      var values = [];
+      var counter = 0;
+      var remaining = 1;
+      iterate(iterable, function (promise) {
+        var index = counter++;
+        var alreadyCalled = false;
+        values.push(undefined);
+        remaining++;
+        promiseResolve.call(C, promise).then(function (value) {
+          if (alreadyCalled) return;
+          alreadyCalled = true;
+          values[index] = { status: 'fulfilled', value: value };
+          --remaining || resolve(values);
+        }, function (e) {
+          if (alreadyCalled) return;
+          alreadyCalled = true;
+          values[index] = { status: 'rejected', reason: e };
+          --remaining || resolve(values);
+        });
+      });
+      --remaining || resolve(values);
+    });
+    if (result.error) reject(result.value);
+    return capability.promise;
+  }
+});
+
+},{"../internals/a-function":2,"../internals/export":49,"../internals/iterate":78,"../internals/new-promise-capability":90,"../internals/perform":113}],261:[function(require,module,exports){
+'use strict';
+var $ = require('../internals/export');
+var IS_PURE = require('../internals/is-pure');
+var NativePromise = require('../internals/native-promise-constructor');
+var fails = require('../internals/fails');
+var getBuiltIn = require('../internals/get-built-in');
+var speciesConstructor = require('../internals/species-constructor');
+var promiseResolve = require('../internals/promise-resolve');
+var redefine = require('../internals/redefine');
+
+// Safari bug https://bugs.webkit.org/show_bug.cgi?id=200829
+var NON_GENERIC = !!NativePromise && fails(function () {
+  NativePromise.prototype['finally'].call({ then: function () { /* empty */ } }, function () { /* empty */ });
+});
+
+// `Promise.prototype.finally` method
+// https://tc39.github.io/ecma262/#sec-promise.prototype.finally
+$({ 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
+    );
+  }
+});
+
+// patch native Promise.prototype for native async functions
+if (!IS_PURE && typeof NativePromise == 'function' && !NativePromise.prototype['finally']) {
+  redefine(NativePromise.prototype, 'finally', getBuiltIn('Promise').prototype['finally']);
+}
+
+},{"../internals/export":49,"../internals/fails":50,"../internals/get-built-in":56,"../internals/is-pure":76,"../internals/native-promise-constructor":86,"../internals/promise-resolve":114,"../internals/redefine":116,"../internals/species-constructor":129}],262:[function(require,module,exports){
+'use strict';
+var $ = require('../internals/export');
+var IS_PURE = require('../internals/is-pure');
+var global = require('../internals/global');
+var getBuiltIn = require('../internals/get-built-in');
+var NativePromise = require('../internals/native-promise-constructor');
+var redefine = require('../internals/redefine');
+var redefineAll = require('../internals/redefine-all');
+var setToStringTag = require('../internals/set-to-string-tag');
+var setSpecies = require('../internals/set-species');
+var isObject = require('../internals/is-object');
+var aFunction = require('../internals/a-function');
+var anInstance = require('../internals/an-instance');
+var classof = require('../internals/classof-raw');
+var inspectSource = require('../internals/inspect-source');
+var iterate = require('../internals/iterate');
+var checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');
+var speciesConstructor = require('../internals/species-constructor');
+var task = require('../internals/task').set;
+var microtask = require('../internals/microtask');
+var promiseResolve = require('../internals/promise-resolve');
+var hostReportErrors = require('../internals/host-report-errors');
+var newPromiseCapabilityModule = require('../internals/new-promise-capability');
+var perform = require('../internals/perform');
+var InternalStateModule = require('../internals/internal-state');
+var isForced = require('../internals/is-forced');
+var wellKnownSymbol = require('../internals/well-known-symbol');
+var V8_VERSION = require('../internals/engine-v8-version');
+
+var SPECIES = wellKnownSymbol('species');
+var PROMISE = 'Promise';
+var getInternalState = InternalStateModule.get;
+var setInternalState = InternalStateModule.set;
+var getInternalPromiseState = InternalStateModule.getterFor(PROMISE);
+var PromiseConstructor = NativePromise;
+var TypeError = global.TypeError;
+var document = global.document;
+var process = global.process;
+var $fetch = getBuiltIn('fetch');
+var newPromiseCapability = newPromiseCapabilityModule.f;
+var newGenericPromiseCapability = newPromiseCapability;
+var IS_NODE = classof(process) == 'process';
+var DISPATCH_EVENT = !!(document && document.createEvent && global.dispatchEvent);
+var UNHANDLED_REJECTION = 'unhandledrejection';
+var REJECTION_HANDLED = 'rejectionhandled';
+var PENDING = 0;
+var FULFILLED = 1;
+var REJECTED = 2;
+var HANDLED = 1;
+var UNHANDLED = 2;
+var Internal, OwnPromiseCapability, PromiseWrapper, nativeThen;
+
+var FORCED = isForced(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
+    if (V8_VERSION === 66) return true;
+    // Unhandled rejections tracking support, NodeJS Promise without it fails @@species test
+    if (!IS_NODE && typeof PromiseRejectionEvent != 'function') return true;
+  }
+  // We need Promise#finally in the pure version for preventing prototype pollution
+  if (IS_PURE && !PromiseConstructor.prototype['finally']) 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 (V8_VERSION >= 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] = FakePromise;
+  return !(promise.then(function () { /* empty */ }) instanceof FakePromise);
+});
+
+var INCORRECT_ITERATION = FORCED || !checkCorrectnessOfIteration(function (iterable) {
+  PromiseConstructor.all(iterable)['catch'](function () { /* empty */ });
+});
+
+// helpers
+var isThenable = function (it) {
+  var then;
+  return isObject(it) && typeof (then = it.then) == 'function' ? then : false;
+};
+
+var notify = function (promise, state, isReject) {
+  if (state.notified) return;
+  state.notified = true;
+  var chain = state.reactions;
+  microtask(function () {
+    var value = state.value;
+    var ok = state.state == FULFILLED;
+    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;
+      var domain = reaction.domain;
+      var result, then, exited;
+      try {
+        if (handler) {
+          if (!ok) {
+            if (state.rejection === UNHANDLED) onHandleUnhandled(promise, state);
+            state.rejection = HANDLED;
+          }
+          if (handler === true) result = value;
+          else {
+            if (domain) domain.enter();
+            result = handler(value); // can throw
+            if (domain) {
+              domain.exit();
+              exited = true;
+            }
+          }
+          if (result === reaction.promise) {
+            reject(TypeError('Promise-chain cycle'));
+          } else if (then = isThenable(result)) {
+            then.call(result, resolve, reject);
+          } else resolve(result);
+        } else reject(value);
+      } catch (error) {
+        if (domain && !exited) domain.exit();
+        reject(error);
+      }
+    }
+    state.reactions = [];
+    state.notified = false;
+    if (isReject && !state.rejection) onUnhandled(promise, state);
+  });
+};
+
+var dispatchEvent = function (name, promise, reason) {
+  var event, handler;
+  if (DISPATCH_EVENT) {
+    event = document.createEvent('Event');
+    event.promise = promise;
+    event.reason = reason;
+    event.initEvent(name, false, true);
+    global.dispatchEvent(event);
+  } else event = { promise: promise, reason: reason };
+  if (handler = global['on' + name]) handler(event);
+  else if (name === UNHANDLED_REJECTION) hostReportErrors('Unhandled promise rejection', reason);
+};
+
+var onUnhandled = function (promise, state) {
+  task.call(global, function () {
+    var value = state.value;
+    var IS_UNHANDLED = isUnhandled(state);
+    var result;
+    if (IS_UNHANDLED) {
+      result = perform(function () {
+        if (IS_NODE) {
+          process.emit('unhandledRejection', value, promise);
+        } else dispatchEvent(UNHANDLED_REJECTION, promise, value);
+      });
+      // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should
+      state.rejection = IS_NODE || isUnhandled(state) ? UNHANDLED : HANDLED;
+      if (result.error) throw result.value;
+    }
+  });
+};
+
+var isUnhandled = function (state) {
+  return state.rejection !== HANDLED && !state.parent;
+};
+
+var onHandleUnhandled = function (promise, state) {
+  task.call(global, function () {
+    if (IS_NODE) {
+      process.emit('rejectionHandled', promise);
+    } else dispatchEvent(REJECTION_HANDLED, promise, state.value);
+  });
+};
+
+var bind = function (fn, promise, state, unwrap) {
+  return function (value) {
+    fn(promise, state, value, unwrap);
+  };
+};
+
+var internalReject = function (promise, state, value, unwrap) {
+  if (state.done) return;
+  state.done = true;
+  if (unwrap) state = unwrap;
+  state.value = value;
+  state.state = REJECTED;
+  notify(promise, state, true);
+};
+
+var internalResolve = function (promise, state, value, unwrap) {
+  if (state.done) return;
+  state.done = true;
+  if (unwrap) state = unwrap;
+  try {
+    if (promise === value) throw TypeError("Promise can't be resolved itself");
+    var then = isThenable(value);
+    if (then) {
+      microtask(function () {
+        var wrapper = { done: false };
+        try {
+          then.call(value,
+            bind(internalResolve, promise, wrapper, state),
+            bind(internalReject, promise, wrapper, state)
+          );
+        } catch (error) {
+          internalReject(promise, wrapper, error, state);
+        }
+      });
+    } else {
+      state.value = value;
+      state.state = FULFILLED;
+      notify(promise, state, false);
+    }
+  } catch (error) {
+    internalReject(promise, { done: false }, error, state);
+  }
+};
+
+// constructor polyfill
+if (FORCED) {
+  // 25.4.3.1 Promise(executor)
+  PromiseConstructor = function Promise(executor) {
+    anInstance(this, PromiseConstructor, PROMISE);
+    aFunction(executor);
+    Internal.call(this);
+    var state = getInternalState(this);
+    try {
+      executor(bind(internalResolve, this, state), bind(internalReject, this, state));
+    } catch (error) {
+      internalReject(this, state, error);
+    }
+  };
+  // eslint-disable-next-line no-unused-vars
+  Internal = function Promise(executor) {
+    setInternalState(this, {
+      type: PROMISE,
+      done: false,
+      notified: false,
+      parent: false,
+      reactions: [],
+      rejection: false,
+      state: PENDING,
+      value: undefined
+    });
+  };
+  Internal.prototype = redefineAll(PromiseConstructor.prototype, {
+    // `Promise.prototype.then` method
+    // https://tc39.github.io/ecma262/#sec-promise.prototype.then
+    then: function then(onFulfilled, onRejected) {
+      var state = getInternalPromiseState(this);
+      var reaction = newPromiseCapability(speciesConstructor(this, PromiseConstructor));
+      reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true;
+      reaction.fail = typeof onRejected == 'function' && onRejected;
+      reaction.domain = IS_NODE ? process.domain : undefined;
+      state.parent = true;
+      state.reactions.push(reaction);
+      if (state.state != PENDING) notify(this, state, false);
+      return reaction.promise;
+    },
+    // `Promise.prototype.catch` method
+    // https://tc39.github.io/ecma262/#sec-promise.prototype.catch
+    'catch': function (onRejected) {
+      return this.then(undefined, onRejected);
+    }
+  });
+  OwnPromiseCapability = function () {
+    var promise = new Internal();
+    var state = getInternalState(promise);
+    this.promise = promise;
+    this.resolve = bind(internalResolve, promise, state);
+    this.reject = bind(internalReject, promise, state);
+  };
+  newPromiseCapabilityModule.f = newPromiseCapability = function (C) {
+    return C === PromiseConstructor || C === PromiseWrapper
+      ? new OwnPromiseCapability(C)
+      : newGenericPromiseCapability(C);
+  };
+
+  if (!IS_PURE && typeof NativePromise == 'function') {
+    nativeThen = NativePromise.prototype.then;
+
+    // wrap native Promise#then for native async functions
+    redefine(NativePromise.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 == 'function') $({ global: true, enumerable: true, forced: true }, {
+      // eslint-disable-next-line no-unused-vars
+      fetch: function fetch(input /* , init */) {
+        return promiseResolve(PromiseConstructor, $fetch.apply(global, arguments));
+      }
+    });
+  }
+}
+
+$({ global: true, wrap: true, forced: FORCED }, {
+  Promise: PromiseConstructor
+});
+
+setToStringTag(PromiseConstructor, PROMISE, false, true);
+setSpecies(PROMISE);
+
+PromiseWrapper = getBuiltIn(PROMISE);
+
+// statics
+$({ target: PROMISE, stat: true, forced: FORCED }, {
+  // `Promise.reject` method
+  // https://tc39.github.io/ecma262/#sec-promise.reject
+  reject: function reject(r) {
+    var capability = newPromiseCapability(this);
+    capability.reject.call(undefined, r);
+    return capability.promise;
+  }
+});
+
+$({ target: PROMISE, stat: true, forced: IS_PURE || FORCED }, {
+  // `Promise.resolve` method
+  // https://tc39.github.io/ecma262/#sec-promise.resolve
+  resolve: function resolve(x) {
+    return promiseResolve(IS_PURE && this === PromiseWrapper ? PromiseConstructor : this, x);
+  }
+});
+
+$({ target: PROMISE, stat: true, forced: INCORRECT_ITERATION }, {
+  // `Promise.all` method
+  // https://tc39.github.io/ecma262/#sec-promise.all
+  all: function all(iterable) {
+    var C = this;
+    var capability = newPromiseCapability(C);
+    var resolve = capability.resolve;
+    var reject = capability.reject;
+    var result = perform(function () {
+      var $promiseResolve = aFunction(C.resolve);
+      var values = [];
+      var counter = 0;
+      var remaining = 1;
+      iterate(iterable, function (promise) {
+        var index = counter++;
+        var alreadyCalled = false;
+        values.push(undefined);
+        remaining++;
+        $promiseResolve.call(C, promise).then(function (value) {
+          if (alreadyCalled) return;
+          alreadyCalled = true;
+          values[index] = value;
+          --remaining || resolve(values);
+        }, reject);
+      });
+      --remaining || resolve(values);
+    });
+    if (result.error) reject(result.value);
+    return capability.promise;
+  },
+  // `Promise.race` method
+  // https://tc39.github.io/ecma262/#sec-promise.race
+  race: function race(iterable) {
+    var C = this;
+    var capability = newPromiseCapability(C);
+    var reject = capability.reject;
+    var result = perform(function () {
+      var $promiseResolve = aFunction(C.resolve);
+      iterate(iterable, function (promise) {
+        $promiseResolve.call(C, promise).then(capability.resolve, reject);
+      });
+    });
+    if (result.error) reject(result.value);
+    return capability.promise;
+  }
+});
+
+},{"../internals/a-function":2,"../internals/an-instance":6,"../internals/check-correctness-of-iteration":24,"../internals/classof-raw":25,"../internals/engine-v8-version":47,"../internals/export":49,"../internals/get-built-in":56,"../internals/global":59,"../internals/host-report-errors":62,"../internals/inspect-source":68,"../internals/internal-state":70,"../internals/is-forced":73,"../internals/is-object":75,"../internals/is-pure":76,"../internals/iterate":78,"../internals/microtask":85,"../internals/native-promise-constructor":86,"../internals/new-promise-capability":90,"../internals/perform":113,"../internals/promise-resolve":114,"../internals/redefine":116,"../internals/redefine-all":115,"../internals/set-species":124,"../internals/set-to-string-tag":125,"../internals/species-constructor":129,"../internals/task":138,"../internals/well-known-symbol":156}],263:[function(require,module,exports){
+var $ = require('../internals/export');
+var getBuiltIn = require('../internals/get-built-in');
+var aFunction = require('../internals/a-function');
+var anObject = require('../internals/an-object');
+var fails = require('../internals/fails');
+
+var nativeApply = getBuiltIn('Reflect', 'apply');
+var functionApply = Function.apply;
+
+// MS Edge argumentsList argument is optional
+var OPTIONAL_ARGUMENTS_LIST = !fails(function () {
+  nativeApply(function () { /* empty */ });
+});
+
+// `Reflect.apply` method
+// https://tc39.github.io/ecma262/#sec-reflect.apply
+$({ target: 'Reflect', stat: true, forced: OPTIONAL_ARGUMENTS_LIST }, {
+  apply: function apply(target, thisArgument, argumentsList) {
+    aFunction(target);
+    anObject(argumentsList);
+    return nativeApply
+      ? nativeApply(target, thisArgument, argumentsList)
+      : functionApply.call(target, thisArgument, argumentsList);
+  }
+});
+
+},{"../internals/a-function":2,"../internals/an-object":7,"../internals/export":49,"../internals/fails":50,"../internals/get-built-in":56}],264:[function(require,module,exports){
+var $ = require('../internals/export');
+var getBuiltIn = require('../internals/get-built-in');
+var aFunction = require('../internals/a-function');
+var anObject = require('../internals/an-object');
+var isObject = require('../internals/is-object');
+var create = require('../internals/object-create');
+var bind = require('../internals/function-bind');
+var fails = require('../internals/fails');
+
+var nativeConstruct = getBuiltIn('Reflect', 'construct');
+
+// `Reflect.construct` method
+// https://tc39.github.io/ecma262/#sec-reflect.construct
+// MS Edge supports only 2 arguments and argumentsList argument is optional
+// FF Nightly sets third argument as `new.target`, but does not create `this` from it
+var NEW_TARGET_BUG = fails(function () {
+  function F() { /* empty */ }
+  return !(nativeConstruct(function () { /* empty */ }, [], F) instanceof F);
+});
+var ARGS_BUG = !fails(function () {
+  nativeConstruct(function () { /* empty */ });
+});
+var FORCED = NEW_TARGET_BUG || ARGS_BUG;
+
+$({ target: 'Reflect', stat: true, forced: FORCED, sham: FORCED }, {
+  construct: function construct(Target, args /* , newTarget */) {
+    aFunction(Target);
+    anObject(args);
+    var newTarget = arguments.length < 3 ? Target : aFunction(arguments[2]);
+    if (ARGS_BUG && !NEW_TARGET_BUG) return nativeConstruct(Target, args, newTarget);
+    if (Target == newTarget) {
+      // w/o altered newTarget, optimization for 0-4 arguments
+      switch (args.length) {
+        case 0: return new Target();
+        case 1: return new Target(args[0]);
+        case 2: return new Target(args[0], args[1]);
+        case 3: return new Target(args[0], args[1], args[2]);
+        case 4: return new Target(args[0], args[1], args[2], args[3]);
+      }
+      // w/o altered newTarget, lot of arguments case
+      var $args = [null];
+      $args.push.apply($args, args);
+      return new (bind.apply(Target, $args))();
+    }
+    // with altered newTarget, not support built-in constructors
+    var proto = newTarget.prototype;
+    var instance = create(isObject(proto) ? proto : Object.prototype);
+    var result = Function.apply.call(Target, instance, args);
+    return isObject(result) ? result : instance;
+  }
+});
+
+},{"../internals/a-function":2,"../internals/an-object":7,"../internals/export":49,"../internals/fails":50,"../internals/function-bind":55,"../internals/get-built-in":56,"../internals/is-object":75,"../internals/object-create":96}],265:[function(require,module,exports){
+var $ = require('../internals/export');
+var DESCRIPTORS = require('../internals/descriptors');
+var anObject = require('../internals/an-object');
+var toPrimitive = require('../internals/to-primitive');
+var definePropertyModule = require('../internals/object-define-property');
+var fails = require('../internals/fails');
+
+// MS Edge has broken Reflect.defineProperty - throwing instead of returning false
+var ERROR_INSTEAD_OF_FALSE = fails(function () {
+  // eslint-disable-next-line no-undef
+  Reflect.defineProperty(definePropertyModule.f({}, 1, { value: 1 }), 1, { value: 2 });
+});
+
+// `Reflect.defineProperty` method
+// https://tc39.github.io/ecma262/#sec-reflect.defineproperty
+$({ target: 'Reflect', stat: true, forced: ERROR_INSTEAD_OF_FALSE, sham: !DESCRIPTORS }, {
+  defineProperty: function defineProperty(target, propertyKey, attributes) {
+    anObject(target);
+    var key = toPrimitive(propertyKey, true);
+    anObject(attributes);
+    try {
+      definePropertyModule.f(target, key, attributes);
+      return true;
+    } catch (error) {
+      return false;
+    }
+  }
+});
+
+},{"../internals/an-object":7,"../internals/descriptors":42,"../internals/export":49,"../internals/fails":50,"../internals/object-define-property":98,"../internals/to-primitive":148}],266:[function(require,module,exports){
+var $ = require('../internals/export');
+var anObject = require('../internals/an-object');
+var getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;
+
+// `Reflect.deleteProperty` method
+// https://tc39.github.io/ecma262/#sec-reflect.deleteproperty
+$({ target: 'Reflect', stat: true }, {
+  deleteProperty: function deleteProperty(target, propertyKey) {
+    var descriptor = getOwnPropertyDescriptor(anObject(target), propertyKey);
+    return descriptor && !descriptor.configurable ? false : delete target[propertyKey];
+  }
+});
+
+},{"../internals/an-object":7,"../internals/export":49,"../internals/object-get-own-property-descriptor":99}],267:[function(require,module,exports){
+var $ = require('../internals/export');
+var DESCRIPTORS = require('../internals/descriptors');
+var anObject = require('../internals/an-object');
+var getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');
+
+// `Reflect.getOwnPropertyDescriptor` method
+// https://tc39.github.io/ecma262/#sec-reflect.getownpropertydescriptor
+$({ target: 'Reflect', stat: true, sham: !DESCRIPTORS }, {
+  getOwnPropertyDescriptor: function getOwnPropertyDescriptor(target, propertyKey) {
+    return getOwnPropertyDescriptorModule.f(anObject(target), propertyKey);
+  }
+});
+
+},{"../internals/an-object":7,"../internals/descriptors":42,"../internals/export":49,"../internals/object-get-own-property-descriptor":99}],268:[function(require,module,exports){
+var $ = require('../internals/export');
+var anObject = require('../internals/an-object');
+var objectGetPrototypeOf = require('../internals/object-get-prototype-of');
+var CORRECT_PROTOTYPE_GETTER = require('../internals/correct-prototype-getter');
+
+// `Reflect.getPrototypeOf` method
+// https://tc39.github.io/ecma262/#sec-reflect.getprototypeof
+$({ target: 'Reflect', stat: true, sham: !CORRECT_PROTOTYPE_GETTER }, {
+  getPrototypeOf: function getPrototypeOf(target) {
+    return objectGetPrototypeOf(anObject(target));
+  }
+});
+
+},{"../internals/an-object":7,"../internals/correct-prototype-getter":32,"../internals/export":49,"../internals/object-get-prototype-of":103}],269:[function(require,module,exports){
+var $ = require('../internals/export');
+var isObject = require('../internals/is-object');
+var anObject = require('../internals/an-object');
+var has = require('../internals/has');
+var getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');
+var getPrototypeOf = require('../internals/object-get-prototype-of');
+
+// `Reflect.get` method
+// https://tc39.github.io/ecma262/#sec-reflect.get
+function get(target, propertyKey /* , receiver */) {
+  var receiver = arguments.length < 3 ? target : arguments[2];
+  var descriptor, prototype;
+  if (anObject(target) === receiver) return target[propertyKey];
+  if (descriptor = getOwnPropertyDescriptorModule.f(target, propertyKey)) return has(descriptor, 'value')
+    ? descriptor.value
+    : descriptor.get === undefined
+      ? undefined
+      : descriptor.get.call(receiver);
+  if (isObject(prototype = getPrototypeOf(target))) return get(prototype, propertyKey, receiver);
+}
+
+$({ target: 'Reflect', stat: true }, {
+  get: get
+});
+
+},{"../internals/an-object":7,"../internals/export":49,"../internals/has":60,"../internals/is-object":75,"../internals/object-get-own-property-descriptor":99,"../internals/object-get-prototype-of":103}],270:[function(require,module,exports){
+var $ = require('../internals/export');
+
+// `Reflect.has` method
+// https://tc39.github.io/ecma262/#sec-reflect.has
+$({ target: 'Reflect', stat: true }, {
+  has: function has(target, propertyKey) {
+    return propertyKey in target;
+  }
+});
+
+},{"../internals/export":49}],271:[function(require,module,exports){
+var $ = require('../internals/export');
+var anObject = require('../internals/an-object');
+
+var objectIsExtensible = Object.isExtensible;
+
+// `Reflect.isExtensible` method
+// https://tc39.github.io/ecma262/#sec-reflect.isextensible
+$({ target: 'Reflect', stat: true }, {
+  isExtensible: function isExtensible(target) {
+    anObject(target);
+    return objectIsExtensible ? objectIsExtensible(target) : true;
+  }
+});
+
+},{"../internals/an-object":7,"../internals/export":49}],272:[function(require,module,exports){
+var $ = require('../internals/export');
+var ownKeys = require('../internals/own-keys');
+
+// `Reflect.ownKeys` method
+// https://tc39.github.io/ecma262/#sec-reflect.ownkeys
+$({ target: 'Reflect', stat: true }, {
+  ownKeys: ownKeys
+});
+
+},{"../internals/export":49,"../internals/own-keys":111}],273:[function(require,module,exports){
+var $ = require('../internals/export');
+var getBuiltIn = require('../internals/get-built-in');
+var anObject = require('../internals/an-object');
+var FREEZING = require('../internals/freezing');
+
+// `Reflect.preventExtensions` method
+// https://tc39.github.io/ecma262/#sec-reflect.preventextensions
+$({ target: 'Reflect', stat: true, sham: !FREEZING }, {
+  preventExtensions: function preventExtensions(target) {
+    anObject(target);
+    try {
+      var objectPreventExtensions = getBuiltIn('Object', 'preventExtensions');
+      if (objectPreventExtensions) objectPreventExtensions(target);
+      return true;
+    } catch (error) {
+      return false;
+    }
+  }
+});
+
+},{"../internals/an-object":7,"../internals/export":49,"../internals/freezing":53,"../internals/get-built-in":56}],274:[function(require,module,exports){
+var $ = require('../internals/export');
+var anObject = require('../internals/an-object');
+var aPossiblePrototype = require('../internals/a-possible-prototype');
+var objectSetPrototypeOf = require('../internals/object-set-prototype-of');
+
+// `Reflect.setPrototypeOf` method
+// https://tc39.github.io/ecma262/#sec-reflect.setprototypeof
+if (objectSetPrototypeOf) $({ target: 'Reflect', stat: true }, {
+  setPrototypeOf: function setPrototypeOf(target, proto) {
+    anObject(target);
+    aPossiblePrototype(proto);
+    try {
+      objectSetPrototypeOf(target, proto);
+      return true;
+    } catch (error) {
+      return false;
+    }
+  }
+});
+
+},{"../internals/a-possible-prototype":3,"../internals/an-object":7,"../internals/export":49,"../internals/object-set-prototype-of":108}],275:[function(require,module,exports){
+var $ = require('../internals/export');
+var anObject = require('../internals/an-object');
+var isObject = require('../internals/is-object');
+var has = require('../internals/has');
+var fails = require('../internals/fails');
+var definePropertyModule = require('../internals/object-define-property');
+var getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');
+var getPrototypeOf = require('../internals/object-get-prototype-of');
+var createPropertyDescriptor = require('../internals/create-property-descriptor');
+
+// `Reflect.set` method
+// https://tc39.github.io/ecma262/#sec-reflect.set
+function set(target, propertyKey, V /* , receiver */) {
+  var receiver = arguments.length < 4 ? target : arguments[3];
+  var ownDescriptor = getOwnPropertyDescriptorModule.f(anObject(target), propertyKey);
+  var existingDescriptor, prototype;
+  if (!ownDescriptor) {
+    if (isObject(prototype = getPrototypeOf(target))) {
+      return set(prototype, propertyKey, V, receiver);
+    }
+    ownDescriptor = createPropertyDescriptor(0);
+  }
+  if (has(ownDescriptor, 'value')) {
+    if (ownDescriptor.writable === false || !isObject(receiver)) return false;
+    if (existingDescriptor = getOwnPropertyDescriptorModule.f(receiver, propertyKey)) {
+      if (existingDescriptor.get || existingDescriptor.set || existingDescriptor.writable === false) return false;
+      existingDescriptor.value = V;
+      definePropertyModule.f(receiver, propertyKey, existingDescriptor);
+    } else definePropertyModule.f(receiver, propertyKey, createPropertyDescriptor(0, V));
+    return true;
+  }
+  return ownDescriptor.set === undefined ? false : (ownDescriptor.set.call(receiver, V), true);
+}
+
+// MS Edge 17-18 Reflect.set allows setting the property to object
+// with non-writable property on the prototype
+var MS_EDGE_BUG = fails(function () {
+  var object = definePropertyModule.f({}, 'a', { configurable: true });
+  // eslint-disable-next-line no-undef
+  return Reflect.set(getPrototypeOf(object), 'a', 1, object) !== false;
+});
+
+$({ target: 'Reflect', stat: true, forced: MS_EDGE_BUG }, {
+  set: set
+});
+
+},{"../internals/an-object":7,"../internals/create-property-descriptor":36,"../internals/export":49,"../internals/fails":50,"../internals/has":60,"../internals/is-object":75,"../internals/object-define-property":98,"../internals/object-get-own-property-descriptor":99,"../internals/object-get-prototype-of":103}],276:[function(require,module,exports){
+var DESCRIPTORS = require('../internals/descriptors');
+var global = require('../internals/global');
+var isForced = require('../internals/is-forced');
+var inheritIfRequired = require('../internals/inherit-if-required');
+var defineProperty = require('../internals/object-define-property').f;
+var getOwnPropertyNames = require('../internals/object-get-own-property-names').f;
+var isRegExp = require('../internals/is-regexp');
+var getFlags = require('../internals/regexp-flags');
+var stickyHelpers = require('../internals/regexp-sticky-helpers');
+var redefine = require('../internals/redefine');
+var fails = require('../internals/fails');
+var setInternalState = require('../internals/internal-state').set;
+var setSpecies = require('../internals/set-species');
+var wellKnownSymbol = require('../internals/well-known-symbol');
+
+var MATCH = wellKnownSymbol('match');
+var NativeRegExp = global.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 = stickyHelpers.UNSUPPORTED_Y;
+
+var FORCED = DESCRIPTORS && isForced('RegExp', (!CORRECT_NEW || UNSUPPORTED_Y || fails(function () {
+  re2[MATCH] = 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 = getFlags.call(pattern);
+      pattern = pattern.source;
+    }
+
+    if (UNSUPPORTED_Y) {
+      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 && sticky) setInternalState(result, { sticky: sticky });
+
+    return result;
+  };
+  var proxy = function (key) {
+    key in RegExpWrapper || defineProperty(RegExpWrapper, key, {
+      configurable: true,
+      get: function () { return NativeRegExp[key]; },
+      set: function (it) { NativeRegExp[key] = it; }
+    });
+  };
+  var keys = getOwnPropertyNames(NativeRegExp);
+  var index = 0;
+  while (keys.length > index) proxy(keys[index++]);
+  RegExpPrototype.constructor = RegExpWrapper;
+  RegExpWrapper.prototype = RegExpPrototype;
+  redefine(global, 'RegExp', RegExpWrapper);
+}
+
+// https://tc39.github.io/ecma262/#sec-get-regexp-@@species
+setSpecies('RegExp');
+
+},{"../internals/descriptors":42,"../internals/fails":50,"../internals/global":59,"../internals/inherit-if-required":67,"../internals/internal-state":70,"../internals/is-forced":73,"../internals/is-regexp":77,"../internals/object-define-property":98,"../internals/object-get-own-property-names":101,"../internals/redefine":116,"../internals/regexp-flags":119,"../internals/regexp-sticky-helpers":120,"../internals/set-species":124,"../internals/well-known-symbol":156}],277:[function(require,module,exports){
+'use strict';
+var $ = require('../internals/export');
+var exec = require('../internals/regexp-exec');
+
+$({ target: 'RegExp', proto: true, forced: /./.exec !== exec }, {
+  exec: exec
+});
+
+},{"../internals/export":49,"../internals/regexp-exec":118}],278:[function(require,module,exports){
+var DESCRIPTORS = require('../internals/descriptors');
+var objectDefinePropertyModule = require('../internals/object-define-property');
+var regExpFlags = require('../internals/regexp-flags');
+var UNSUPPORTED_Y = require('../internals/regexp-sticky-helpers').UNSUPPORTED_Y;
+
+// `RegExp.prototype.flags` getter
+// https://tc39.github.io/ecma262/#sec-get-regexp.prototype.flags
+if (DESCRIPTORS && (/./g.flags != 'g' || UNSUPPORTED_Y)) {
+  objectDefinePropertyModule.f(RegExp.prototype, 'flags', {
+    configurable: true,
+    get: regExpFlags
+  });
+}
+
+},{"../internals/descriptors":42,"../internals/object-define-property":98,"../internals/regexp-flags":119,"../internals/regexp-sticky-helpers":120}],279:[function(require,module,exports){
+var DESCRIPTORS = require('../internals/descriptors');
+var UNSUPPORTED_Y = require('../internals/regexp-sticky-helpers').UNSUPPORTED_Y;
+var defineProperty = require('../internals/object-define-property').f;
+var getInternalState = require('../internals/internal-state').get;
+var RegExpPrototype = RegExp.prototype;
+
+// `RegExp.prototype.sticky` getter
+if (DESCRIPTORS && UNSUPPORTED_Y) {
+  defineProperty(RegExp.prototype, 'sticky', {
+    configurable: true,
+    get: function () {
+      if (this === RegExpPrototype) return undefined;
+      // We can't use InternalStateModule.getterFor because
+      // we don't add metadata for regexps created by a literal.
+      if (this instanceof RegExp) {
+        return !!getInternalState(this).sticky;
+      }
+      throw TypeError('Incompatible receiver, RegExp required');
+    }
+  });
+}
+
+},{"../internals/descriptors":42,"../internals/internal-state":70,"../internals/object-define-property":98,"../internals/regexp-sticky-helpers":120}],280:[function(require,module,exports){
+'use strict';
+// TODO: Remove from `core-js@4` since it's moved to entry points
+require('../modules/es.regexp.exec');
+var $ = require('../internals/export');
+var isObject = require('../internals/is-object');
+
+var DELEGATES_TO_EXEC = function () {
+  var execCalled = false;
+  var re = /[ac]/;
+  re.exec = function () {
+    execCalled = true;
+    return /./.exec.apply(this, arguments);
+  };
+  return re.test('abc') === true && execCalled;
+}();
+
+var nativeTest = /./.test;
+
+$({ target: 'RegExp', proto: true, forced: !DELEGATES_TO_EXEC }, {
+  test: function (str) {
+    if (typeof this.exec !== 'function') {
+      return nativeTest.call(this, str);
+    }
+    var result = this.exec(str);
+    if (result !== null && !isObject(result)) {
+      throw new Error('RegExp exec method returned something other than an Object or null');
+    }
+    return !!result;
+  }
+});
+
+},{"../internals/export":49,"../internals/is-object":75,"../modules/es.regexp.exec":277}],281:[function(require,module,exports){
+'use strict';
+var redefine = require('../internals/redefine');
+var anObject = require('../internals/an-object');
+var fails = require('../internals/fails');
+var flags = require('../internals/regexp-flags');
+
+var TO_STRING = 'toString';
+var RegExpPrototype = RegExp.prototype;
+var nativeToString = RegExpPrototype[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) ? flags.call(R) : rf);
+    return '/' + p + '/' + f;
+  }, { unsafe: true });
+}
+
+},{"../internals/an-object":7,"../internals/fails":50,"../internals/redefine":116,"../internals/regexp-flags":119}],282:[function(require,module,exports){
+'use strict';
+var collection = require('../internals/collection');
+var collectionStrong = require('../internals/collection-strong');
+
+// `Set` constructor
+// https://tc39.github.io/ecma262/#sec-set-objects
+module.exports = collection('Set', function (init) {
+  return function Set() { return init(this, arguments.length ? arguments[0] : undefined); };
+}, collectionStrong);
+
+},{"../internals/collection":29,"../internals/collection-strong":27}],283:[function(require,module,exports){
+'use strict';
+var $ = require('../internals/export');
+var createHTML = require('../internals/create-html');
+var forcedStringHTMLMethod = require('../internals/string-html-forced');
+
+// `String.prototype.anchor` method
+// https://tc39.github.io/ecma262/#sec-string.prototype.anchor
+$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('anchor') }, {
+  anchor: function anchor(name) {
+    return createHTML(this, 'a', 'name', name);
+  }
+});
+
+},{"../internals/create-html":33,"../internals/export":49,"../internals/string-html-forced":130}],284:[function(require,module,exports){
+'use strict';
+var $ = require('../internals/export');
+var createHTML = require('../internals/create-html');
+var forcedStringHTMLMethod = require('../internals/string-html-forced');
+
+// `String.prototype.big` method
+// https://tc39.github.io/ecma262/#sec-string.prototype.big
+$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('big') }, {
+  big: function big() {
+    return createHTML(this, 'big', '', '');
+  }
+});
+
+},{"../internals/create-html":33,"../internals/export":49,"../internals/string-html-forced":130}],285:[function(require,module,exports){
+'use strict';
+var $ = require('../internals/export');
+var createHTML = require('../internals/create-html');
+var forcedStringHTMLMethod = require('../internals/string-html-forced');
+
+// `String.prototype.blink` method
+// https://tc39.github.io/ecma262/#sec-string.prototype.blink
+$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('blink') }, {
+  blink: function blink() {
+    return createHTML(this, 'blink', '', '');
+  }
+});
+
+},{"../internals/create-html":33,"../internals/export":49,"../internals/string-html-forced":130}],286:[function(require,module,exports){
+'use strict';
+var $ = require('../internals/export');
+var createHTML = require('../internals/create-html');
+var forcedStringHTMLMethod = require('../internals/string-html-forced');
+
+// `String.prototype.bold` method
+// https://tc39.github.io/ecma262/#sec-string.prototype.bold
+$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('bold') }, {
+  bold: function bold() {
+    return createHTML(this, 'b', '', '');
+  }
+});
+
+},{"../internals/create-html":33,"../internals/export":49,"../internals/string-html-forced":130}],287:[function(require,module,exports){
+'use strict';
+var $ = require('../internals/export');
+var codeAt = require('../internals/string-multibyte').codeAt;
+
+// `String.prototype.codePointAt` method
+// https://tc39.github.io/ecma262/#sec-string.prototype.codepointat
+$({ target: 'String', proto: true }, {
+  codePointAt: function codePointAt(pos) {
+    return codeAt(this, pos);
+  }
+});
+
+},{"../internals/export":49,"../internals/string-multibyte":131}],288:[function(require,module,exports){
+'use strict';
+var $ = require('../internals/export');
+var getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;
+var toLength = require('../internals/to-length');
+var notARegExp = require('../internals/not-a-regexp');
+var requireObjectCoercible = require('../internals/require-object-coercible');
+var correctIsRegExpLogic = require('../internals/correct-is-regexp-logic');
+var IS_PURE = require('../internals/is-pure');
+
+var nativeEndsWith = ''.endsWith;
+var min = Math.min;
+
+var CORRECT_IS_REGEXP_LOGIC = correctIsRegExpLogic('endsWith');
+// https://github.com/zloirock/core-js/pull/702
+var MDN_POLYFILL_BUG = !IS_PURE && !CORRECT_IS_REGEXP_LOGIC && !!function () {
+  var descriptor = getOwnPropertyDescriptor(String.prototype, 'endsWith');
+  return descriptor && !descriptor.writable;
+}();
+
+// `String.prototype.endsWith` method
+// https://tc39.github.io/ecma262/#sec-string.prototype.endswith
+$({ target: 'String', proto: true, forced: !MDN_POLYFILL_BUG && !CORRECT_IS_REGEXP_LOGIC }, {
+  endsWith: function endsWith(searchString /* , endPosition = @length */) {
+    var that = String(requireObjectCoercible(this));
+    notARegExp(searchString);
+    var endPosition = arguments.length > 1 ? arguments[1] : undefined;
+    var len = toLength(that.length);
+    var end = endPosition === undefined ? len : min(toLength(endPosition), len);
+    var search = String(searchString);
+    return nativeEndsWith
+      ? nativeEndsWith.call(that, search, end)
+      : that.slice(end - search.length, end) === search;
+  }
+});
+
+},{"../internals/correct-is-regexp-logic":31,"../internals/export":49,"../internals/is-pure":76,"../internals/not-a-regexp":91,"../internals/object-get-own-property-descriptor":99,"../internals/require-object-coercible":121,"../internals/to-length":144}],289:[function(require,module,exports){
+'use strict';
+var $ = require('../internals/export');
+var createHTML = require('../internals/create-html');
+var forcedStringHTMLMethod = require('../internals/string-html-forced');
+
+// `String.prototype.fixed` method
+// https://tc39.github.io/ecma262/#sec-string.prototype.fixed
+$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('fixed') }, {
+  fixed: function fixed() {
+    return createHTML(this, 'tt', '', '');
+  }
+});
+
+},{"../internals/create-html":33,"../internals/export":49,"../internals/string-html-forced":130}],290:[function(require,module,exports){
+'use strict';
+var $ = require('../internals/export');
+var createHTML = require('../internals/create-html');
+var forcedStringHTMLMethod = require('../internals/string-html-forced');
+
+// `String.prototype.fontcolor` method
+// https://tc39.github.io/ecma262/#sec-string.prototype.fontcolor
+$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('fontcolor') }, {
+  fontcolor: function fontcolor(color) {
+    return createHTML(this, 'font', 'color', color);
+  }
+});
+
+},{"../internals/create-html":33,"../internals/export":49,"../internals/string-html-forced":130}],291:[function(require,module,exports){
+'use strict';
+var $ = require('../internals/export');
+var createHTML = require('../internals/create-html');
+var forcedStringHTMLMethod = require('../internals/string-html-forced');
+
+// `String.prototype.fontsize` method
+// https://tc39.github.io/ecma262/#sec-string.prototype.fontsize
+$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('fontsize') }, {
+  fontsize: function fontsize(size) {
+    return createHTML(this, 'font', 'size', size);
+  }
+});
+
+},{"../internals/create-html":33,"../internals/export":49,"../internals/string-html-forced":130}],292:[function(require,module,exports){
+var $ = require('../internals/export');
+var toAbsoluteIndex = require('../internals/to-absolute-index');
+
+var fromCharCode = String.fromCharCode;
+var nativeFromCodePoint = String.fromCodePoint;
+
+// length should be 1, old FF problem
+var INCORRECT_LENGTH = !!nativeFromCodePoint && nativeFromCodePoint.length != 1;
+
+// `String.fromCodePoint` method
+// https://tc39.github.io/ecma262/#sec-string.fromcodepoint
+$({ target: 'String', stat: true, forced: INCORRECT_LENGTH }, {
+  fromCodePoint: function fromCodePoint(x) { // eslint-disable-line no-unused-vars
+    var elements = [];
+    var length = arguments.length;
+    var i = 0;
+    var code;
+    while (length > i) {
+      code = +arguments[i++];
+      if (toAbsoluteIndex(code, 0x10FFFF) !== code) throw RangeError(code + ' is not a valid code point');
+      elements.push(code < 0x10000
+        ? fromCharCode(code)
+        : fromCharCode(((code -= 0x10000) >> 10) + 0xD800, code % 0x400 + 0xDC00)
+      );
+    } return elements.join('');
+  }
+});
+
+},{"../internals/export":49,"../internals/to-absolute-index":140}],293:[function(require,module,exports){
+'use strict';
+var $ = require('../internals/export');
+var notARegExp = require('../internals/not-a-regexp');
+var requireObjectCoercible = require('../internals/require-object-coercible');
+var correctIsRegExpLogic = require('../internals/correct-is-regexp-logic');
+
+// `String.prototype.includes` method
+// https://tc39.github.io/ecma262/#sec-string.prototype.includes
+$({ target: 'String', proto: true, forced: !correctIsRegExpLogic('includes') }, {
+  includes: function includes(searchString /* , position = 0 */) {
+    return !!~String(requireObjectCoercible(this))
+      .indexOf(notARegExp(searchString), arguments.length > 1 ? arguments[1] : undefined);
+  }
+});
+
+},{"../internals/correct-is-regexp-logic":31,"../internals/export":49,"../internals/not-a-regexp":91,"../internals/require-object-coercible":121}],294:[function(require,module,exports){
+'use strict';
+var $ = require('../internals/export');
+var createHTML = require('../internals/create-html');
+var forcedStringHTMLMethod = require('../internals/string-html-forced');
+
+// `String.prototype.italics` method
+// https://tc39.github.io/ecma262/#sec-string.prototype.italics
+$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('italics') }, {
+  italics: function italics() {
+    return createHTML(this, 'i', '', '');
+  }
+});
+
+},{"../internals/create-html":33,"../internals/export":49,"../internals/string-html-forced":130}],295:[function(require,module,exports){
+'use strict';
+var charAt = require('../internals/string-multibyte').charAt;
+var InternalStateModule = require('../internals/internal-state');
+var defineIterator = require('../internals/define-iterator');
+
+var STRING_ITERATOR = 'String Iterator';
+var setInternalState = InternalStateModule.set;
+var getInternalState = InternalStateModule.getterFor(STRING_ITERATOR);
+
+// `String.prototype[@@iterator]` method
+// https://tc39.github.io/ecma262/#sec-string.prototype-@@iterator
+defineIterator(String, 'String', function (iterated) {
+  setInternalState(this, {
+    type: STRING_ITERATOR,
+    string: String(iterated),
+    index: 0
+  });
+// `%StringIteratorPrototype%.next` method
+// https://tc39.github.io/ecma262/#sec-%stringiteratorprototype%.next
+}, function next() {
+  var state = getInternalState(this);
+  var string = state.string;
+  var index = state.index;
+  var point;
+  if (index >= string.length) return { value: undefined, done: true };
+  point = charAt(string, index);
+  state.index += point.length;
+  return { value: point, done: false };
+});
+
+},{"../internals/define-iterator":40,"../internals/internal-state":70,"../internals/string-multibyte":131}],296:[function(require,module,exports){
+'use strict';
+var $ = require('../internals/export');
+var createHTML = require('../internals/create-html');
+var forcedStringHTMLMethod = require('../internals/string-html-forced');
+
+// `String.prototype.link` method
+// https://tc39.github.io/ecma262/#sec-string.prototype.link
+$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('link') }, {
+  link: function link(url) {
+    return createHTML(this, 'a', 'href', url);
+  }
+});
+
+},{"../internals/create-html":33,"../internals/export":49,"../internals/string-html-forced":130}],297:[function(require,module,exports){
+'use strict';
+var $ = require('../internals/export');
+var createIteratorConstructor = require('../internals/create-iterator-constructor');
+var requireObjectCoercible = require('../internals/require-object-coercible');
+var toLength = require('../internals/to-length');
+var aFunction = require('../internals/a-function');
+var anObject = require('../internals/an-object');
+var classof = require('../internals/classof-raw');
+var isRegExp = require('../internals/is-regexp');
+var getRegExpFlags = require('../internals/regexp-flags');
+var createNonEnumerableProperty = require('../internals/create-non-enumerable-property');
+var fails = require('../internals/fails');
+var wellKnownSymbol = require('../internals/well-known-symbol');
+var speciesConstructor = require('../internals/species-constructor');
+var advanceStringIndex = require('../internals/advance-string-index');
+var InternalStateModule = require('../internals/internal-state');
+var IS_PURE = require('../internals/is-pure');
+
+var MATCH_ALL = wellKnownSymbol('matchAll');
+var REGEXP_STRING = 'RegExp String';
+var REGEXP_STRING_ITERATOR = REGEXP_STRING + ' Iterator';
+var setInternalState = InternalStateModule.set;
+var getInternalState = InternalStateModule.getterFor(REGEXP_STRING_ITERATOR);
+var RegExpPrototype = RegExp.prototype;
+var regExpBuiltinExec = RegExpPrototype.exec;
+var nativeMatchAll = ''.matchAll;
+
+var WORKS_WITH_NON_GLOBAL_REGEX = !!nativeMatchAll && !fails(function () {
+  'a'.matchAll(/./);
+});
+
+var regExpExec = function (R, S) {
+  var exec = R.exec;
+  var result;
+  if (typeof exec == 'function') {
+    result = exec.call(R, S);
+    if (typeof result != 'object') throw TypeError('Incorrect exec result');
+    return result;
+  } return regExpBuiltinExec.call(R, S);
+};
+
+// eslint-disable-next-line max-len
+var $RegExpStringIterator = createIteratorConstructor(function RegExpStringIterator(regexp, string, global, fullUnicode) {
+  setInternalState(this, {
+    type: REGEXP_STRING_ITERATOR,
+    regexp: regexp,
+    string: string,
+    global: global,
+    unicode: fullUnicode,
+    done: false
+  });
+}, REGEXP_STRING, function next() {
+  var state = getInternalState(this);
+  if (state.done) return { value: undefined, done: true };
+  var R = state.regexp;
+  var S = state.string;
+  var match = regExpExec(R, S);
+  if (match === null) return { value: undefined, done: state.done = true };
+  if (state.global) {
+    if (String(match[0]) == '') R.lastIndex = advanceStringIndex(S, toLength(R.lastIndex), state.unicode);
+    return { value: match, done: false };
+  }
+  state.done = true;
+  return { value: match, done: false };
+});
+
+var $matchAll = function (string) {
+  var R = anObject(this);
+  var S = String(string);
+  var C, flagsValue, flags, matcher, global, fullUnicode;
+  C = speciesConstructor(R, RegExp);
+  flagsValue = R.flags;
+  if (flagsValue === undefined && R instanceof RegExp && !('flags' in RegExpPrototype)) {
+    flagsValue = getRegExpFlags.call(R);
+  }
+  flags = flagsValue === undefined ? '' : String(flagsValue);
+  matcher = new C(C === RegExp ? R.source : R, flags);
+  global = !!~flags.indexOf('g');
+  fullUnicode = !!~flags.indexOf('u');
+  matcher.lastIndex = toLength(R.lastIndex);
+  return new $RegExpStringIterator(matcher, S, global, fullUnicode);
+};
+
+// `String.prototype.matchAll` method
+// https://github.com/tc39/proposal-string-matchall
+$({ target: 'String', proto: true, forced: WORKS_WITH_NON_GLOBAL_REGEX }, {
+  matchAll: function matchAll(regexp) {
+    var O = requireObjectCoercible(this);
+    var flags, S, matcher, rx;
+    if (regexp != null) {
+      if (isRegExp(regexp)) {
+        flags = String(requireObjectCoercible('flags' in RegExpPrototype
+          ? regexp.flags
+          : getRegExpFlags.call(regexp)
+        ));
+        if (!~flags.indexOf('g')) throw TypeError('`.matchAll` does not allow non-global regexes');
+      }
+      if (WORKS_WITH_NON_GLOBAL_REGEX) return nativeMatchAll.apply(O, arguments);
+      matcher = regexp[MATCH_ALL];
+      if (matcher === undefined && IS_PURE && classof(regexp) == 'RegExp') matcher = $matchAll;
+      if (matcher != null) return aFunction(matcher).call(regexp, O);
+    } else if (WORKS_WITH_NON_GLOBAL_REGEX) return nativeMatchAll.apply(O, arguments);
+    S = String(O);
+    rx = new RegExp(regexp, 'g');
+    return IS_PURE ? $matchAll.call(rx, S) : rx[MATCH_ALL](S);
+  }
+});
+
+IS_PURE || MATCH_ALL in RegExpPrototype || createNonEnumerableProperty(RegExpPrototype, MATCH_ALL, $matchAll);
+
+},{"../internals/a-function":2,"../internals/advance-string-index":5,"../internals/an-object":7,"../internals/classof-raw":25,"../internals/create-iterator-constructor":34,"../internals/create-non-enumerable-property":35,"../internals/export":49,"../internals/fails":50,"../internals/internal-state":70,"../internals/is-pure":76,"../internals/is-regexp":77,"../internals/regexp-flags":119,"../internals/require-object-coercible":121,"../internals/species-constructor":129,"../internals/to-length":144,"../internals/well-known-symbol":156}],298:[function(require,module,exports){
+'use strict';
+var fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');
+var anObject = require('../internals/an-object');
+var toLength = require('../internals/to-length');
+var requireObjectCoercible = require('../internals/require-object-coercible');
+var advanceStringIndex = require('../internals/advance-string-index');
+var regExpExec = require('../internals/regexp-exec-abstract');
+
+// @@match logic
+fixRegExpWellKnownSymbolLogic('match', 1, function (MATCH, nativeMatch, maybeCallNative) {
+  return [
+    // `String.prototype.match` method
+    // https://tc39.github.io/ecma262/#sec-string.prototype.match
+    function match(regexp) {
+      var O = requireObjectCoercible(this);
+      var matcher = regexp == undefined ? undefined : regexp[MATCH];
+      return matcher !== undefined ? matcher.call(regexp, O) : new RegExp(regexp)[MATCH](String(O));
+    },
+    // `RegExp.prototype[@@match]` method
+    // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@match
+    function (regexp) {
+      var res = maybeCallNative(nativeMatch, regexp, this);
+      if (res.done) return res.value;
+
+      var rx = anObject(regexp);
+      var S = String(this);
+
+      if (!rx.global) return regExpExec(rx, S);
+
+      var fullUnicode = rx.unicode;
+      rx.lastIndex = 0;
+      var A = [];
+      var n = 0;
+      var result;
+      while ((result = regExpExec(rx, S)) !== null) {
+        var matchStr = String(result[0]);
+        A[n] = matchStr;
+        if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);
+        n++;
+      }
+      return n === 0 ? null : A;
+    }
+  ];
+});
+
+},{"../internals/advance-string-index":5,"../internals/an-object":7,"../internals/fix-regexp-well-known-symbol-logic":51,"../internals/regexp-exec-abstract":117,"../internals/require-object-coercible":121,"../internals/to-length":144}],299:[function(require,module,exports){
+'use strict';
+var $ = require('../internals/export');
+var $padEnd = require('../internals/string-pad').end;
+var WEBKIT_BUG = require('../internals/string-pad-webkit-bug');
+
+// `String.prototype.padEnd` method
+// https://tc39.github.io/ecma262/#sec-string.prototype.padend
+$({ target: 'String', proto: true, forced: WEBKIT_BUG }, {
+  padEnd: function padEnd(maxLength /* , fillString = ' ' */) {
+    return $padEnd(this, maxLength, arguments.length > 1 ? arguments[1] : undefined);
+  }
+});
+
+},{"../internals/export":49,"../internals/string-pad":133,"../internals/string-pad-webkit-bug":132}],300:[function(require,module,exports){
+'use strict';
+var $ = require('../internals/export');
+var $padStart = require('../internals/string-pad').start;
+var WEBKIT_BUG = require('../internals/string-pad-webkit-bug');
+
+// `String.prototype.padStart` method
+// https://tc39.github.io/ecma262/#sec-string.prototype.padstart
+$({ target: 'String', proto: true, forced: WEBKIT_BUG }, {
+  padStart: function padStart(maxLength /* , fillString = ' ' */) {
+    return $padStart(this, maxLength, arguments.length > 1 ? arguments[1] : undefined);
+  }
+});
+
+},{"../internals/export":49,"../internals/string-pad":133,"../internals/string-pad-webkit-bug":132}],301:[function(require,module,exports){
+var $ = require('../internals/export');
+var toIndexedObject = require('../internals/to-indexed-object');
+var toLength = require('../internals/to-length');
+
+// `String.raw` method
+// https://tc39.github.io/ecma262/#sec-string.raw
+$({ target: 'String', stat: true }, {
+  raw: function raw(template) {
+    var rawTemplate = toIndexedObject(template.raw);
+    var literalSegments = toLength(rawTemplate.length);
+    var argumentsLength = arguments.length;
+    var elements = [];
+    var i = 0;
+    while (literalSegments > i) {
+      elements.push(String(rawTemplate[i++]));
+      if (i < argumentsLength) elements.push(String(arguments[i]));
+    } return elements.join('');
+  }
+});
+
+},{"../internals/export":49,"../internals/to-indexed-object":142,"../internals/to-length":144}],302:[function(require,module,exports){
+var $ = require('../internals/export');
+var repeat = require('../internals/string-repeat');
+
+// `String.prototype.repeat` method
+// https://tc39.github.io/ecma262/#sec-string.prototype.repeat
+$({ target: 'String', proto: true }, {
+  repeat: repeat
+});
+
+},{"../internals/export":49,"../internals/string-repeat":135}],303:[function(require,module,exports){
+'use strict';
+var fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');
+var anObject = require('../internals/an-object');
+var toObject = require('../internals/to-object');
+var toLength = require('../internals/to-length');
+var toInteger = require('../internals/to-integer');
+var requireObjectCoercible = require('../internals/require-object-coercible');
+var advanceStringIndex = require('../internals/advance-string-index');
+var regExpExec = require('../internals/regexp-exec-abstract');
+
+var max = Math.max;
+var min = Math.min;
+var floor = Math.floor;
+var SUBSTITUTION_SYMBOLS = /\$([$&'`]|\d\d?|<[^>]*>)/g;
+var SUBSTITUTION_SYMBOLS_NO_NAMED = /\$([$&'`]|\d\d?)/g;
+
+var maybeToString = function (it) {
+  return it === undefined ? it : String(it);
+};
+
+// @@replace logic
+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
+    function replace(searchValue, replaceValue) {
+      var O = requireObjectCoercible(this);
+      var replacer = searchValue == undefined ? undefined : searchValue[REPLACE];
+      return replacer !== undefined
+        ? replacer.call(searchValue, O, replaceValue)
+        : nativeReplace.call(String(O), searchValue, replaceValue);
+    },
+    // `RegExp.prototype[@@replace]` method
+    // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@replace
+    function (regexp, replaceValue) {
+      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);
+
+      var functionalReplace = typeof replaceValue === 'function';
+      if (!functionalReplace) replaceValue = String(replaceValue);
+
+      var global = rx.global;
+      if (global) {
+        var fullUnicode = rx.unicode;
+        rx.lastIndex = 0;
+      }
+      var results = [];
+      while (true) {
+        var result = regExpExec(rx, S);
+        if (result === null) break;
+
+        results.push(result);
+        if (!global) break;
+
+        var matchStr = String(result[0]);
+        if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);
+      }
+
+      var accumulatedResult = '';
+      var nextSourcePosition = 0;
+      for (var i = 0; i < results.length; i++) {
+        result = results[i];
+
+        var matched = String(result[0]);
+        var position = max(min(toInteger(result.index), S.length), 0);
+        var captures = [];
+        // NOTE: This is equivalent to
+        //   captures = result.slice(1).map(maybeToString)
+        // but for some reason `nativeSlice.call(result, 1, result.length)` (called in
+        // the slice polyfill when slicing native arrays) "doesn't work" in safari 9 and
+        // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it.
+        for (var j = 1; j < result.length; j++) captures.push(maybeToString(result[j]));
+        var namedCaptures = result.groups;
+        if (functionalReplace) {
+          var replacerArgs = [matched].concat(captures, position, S);
+          if (namedCaptures !== undefined) replacerArgs.push(namedCaptures);
+          var replacement = String(replaceValue.apply(undefined, replacerArgs));
+        } else {
+          replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue);
+        }
+        if (position >= nextSourcePosition) {
+          accumulatedResult += S.slice(nextSourcePosition, position) + replacement;
+          nextSourcePosition = position + matched.length;
+        }
+      }
+      return accumulatedResult + S.slice(nextSourcePosition);
+    }
+  ];
+
+  // https://tc39.github.io/ecma262/#sec-getsubstitution
+  function getSubstitution(matched, str, position, captures, namedCaptures, replacement) {
+    var tailPos = position + matched.length;
+    var m = captures.length;
+    var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED;
+    if (namedCaptures !== undefined) {
+      namedCaptures = toObject(namedCaptures);
+      symbols = SUBSTITUTION_SYMBOLS;
+    }
+    return nativeReplace.call(replacement, symbols, function (match, ch) {
+      var capture;
+      switch (ch.charAt(0)) {
+        case '$': return '$';
+        case '&': return matched;
+        case '`': return str.slice(0, position);
+        case "'": return str.slice(tailPos);
+        case '<':
+          capture = namedCaptures[ch.slice(1, -1)];
+          break;
+        default: // \d\d?
+          var n = +ch;
+          if (n === 0) return match;
+          if (n > m) {
+            var f = floor(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;
+          }
+          capture = captures[n - 1];
+      }
+      return capture === undefined ? '' : capture;
+    });
+  }
+});
+
+},{"../internals/advance-string-index":5,"../internals/an-object":7,"../internals/fix-regexp-well-known-symbol-logic":51,"../internals/regexp-exec-abstract":117,"../internals/require-object-coercible":121,"../internals/to-integer":143,"../internals/to-length":144,"../internals/to-object":145}],304:[function(require,module,exports){
+'use strict';
+var fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');
+var anObject = require('../internals/an-object');
+var requireObjectCoercible = require('../internals/require-object-coercible');
+var sameValue = require('../internals/same-value');
+var regExpExec = require('../internals/regexp-exec-abstract');
+
+// @@search logic
+fixRegExpWellKnownSymbolLogic('search', 1, function (SEARCH, nativeSearch, maybeCallNative) {
+  return [
+    // `String.prototype.search` method
+    // https://tc39.github.io/ecma262/#sec-string.prototype.search
+    function search(regexp) {
+      var O = requireObjectCoercible(this);
+      var searcher = regexp == undefined ? undefined : regexp[SEARCH];
+      return searcher !== undefined ? searcher.call(regexp, O) : new RegExp(regexp)[SEARCH](String(O));
+    },
+    // `RegExp.prototype[@@search]` method
+    // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@search
+    function (regexp) {
+      var res = maybeCallNative(nativeSearch, regexp, this);
+      if (res.done) return res.value;
+
+      var rx = anObject(regexp);
+      var S = String(this);
+
+      var previousLastIndex = rx.lastIndex;
+      if (!sameValue(previousLastIndex, 0)) rx.lastIndex = 0;
+      var result = regExpExec(rx, S);
+      if (!sameValue(rx.lastIndex, previousLastIndex)) rx.lastIndex = previousLastIndex;
+      return result === null ? -1 : result.index;
+    }
+  ];
+});
+
+},{"../internals/an-object":7,"../internals/fix-regexp-well-known-symbol-logic":51,"../internals/regexp-exec-abstract":117,"../internals/require-object-coercible":121,"../internals/same-value":122}],305:[function(require,module,exports){
+'use strict';
+var $ = require('../internals/export');
+var createHTML = require('../internals/create-html');
+var forcedStringHTMLMethod = require('../internals/string-html-forced');
+
+// `String.prototype.small` method
+// https://tc39.github.io/ecma262/#sec-string.prototype.small
+$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('small') }, {
+  small: function small() {
+    return createHTML(this, 'small', '', '');
+  }
+});
+
+},{"../internals/create-html":33,"../internals/export":49,"../internals/string-html-forced":130}],306:[function(require,module,exports){
+'use strict';
+var fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');
+var isRegExp = require('../internals/is-regexp');
+var anObject = require('../internals/an-object');
+var requireObjectCoercible = require('../internals/require-object-coercible');
+var speciesConstructor = require('../internals/species-constructor');
+var advanceStringIndex = require('../internals/advance-string-index');
+var toLength = require('../internals/to-length');
+var callRegExpExec = require('../internals/regexp-exec-abstract');
+var regexpExec = require('../internals/regexp-exec');
+var fails = require('../internals/fails');
+
+var arrayPush = [].push;
+var min = Math.min;
+var MAX_UINT32 = 0xFFFFFFFF;
+
+// babel-minify transpiles RegExp('x', 'y') -> /x/y and it causes SyntaxError
+var SUPPORTS_Y = !fails(function () { return !RegExp(MAX_UINT32, 'y'); });
+
+// @@split logic
+fixRegExpWellKnownSymbolLogic('split', 2, function (SPLIT, nativeSplit, maybeCallNative) {
+  var internalSplit;
+  if (
+    'abbc'.split(/(b)*/)[1] == 'c' ||
+    'test'.split(/(?:)/, -1).length != 4 ||
+    'ab'.split(/(?:ab)*/).length != 2 ||
+    '.'.split(/(.?)(.?)/).length != 4 ||
+    '.'.split(/()()/).length > 1 ||
+    ''.split(/.?/).length
+  ) {
+    // based on es5-shim implementation, need to rework it
+    internalSplit = function (separator, limit) {
+      var string = String(requireObjectCoercible(this));
+      var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;
+      if (lim === 0) return [];
+      if (separator === undefined) return [string];
+      // If `separator` is not a regex, use native split
+      if (!isRegExp(separator)) {
+        return nativeSplit.call(string, separator, lim);
+      }
+      var output = [];
+      var flags = (separator.ignoreCase ? 'i' : '') +
+                  (separator.multiline ? 'm' : '') +
+                  (separator.unicode ? 'u' : '') +
+                  (separator.sticky ? 'y' : '');
+      var lastLastIndex = 0;
+      // Make `global` and avoid `lastIndex` issues by working with a copy
+      var separatorCopy = new RegExp(separator.source, flags + 'g');
+      var match, lastIndex, lastLength;
+      while (match = regexpExec.call(separatorCopy, string)) {
+        lastIndex = separatorCopy.lastIndex;
+        if (lastIndex > lastLastIndex) {
+          output.push(string.slice(lastLastIndex, match.index));
+          if (match.length > 1 && match.index < string.length) arrayPush.apply(output, match.slice(1));
+          lastLength = match[0].length;
+          lastLastIndex = lastIndex;
+          if (output.length >= lim) break;
+        }
+        if (separatorCopy.lastIndex === match.index) separatorCopy.lastIndex++; // Avoid an infinite loop
+      }
+      if (lastLastIndex === string.length) {
+        if (lastLength || !separatorCopy.test('')) output.push('');
+      } else output.push(string.slice(lastLastIndex));
+      return output.length > lim ? output.slice(0, lim) : output;
+    };
+  // Chakra, V8
+  } else if ('0'.split(undefined, 0).length) {
+    internalSplit = function (separator, limit) {
+      return separator === undefined && limit === 0 ? [] : nativeSplit.call(this, separator, limit);
+    };
+  } else internalSplit = nativeSplit;
+
+  return [
+    // `String.prototype.split` method
+    // https://tc39.github.io/ecma262/#sec-string.prototype.split
+    function split(separator, limit) {
+      var O = requireObjectCoercible(this);
+      var splitter = separator == undefined ? undefined : separator[SPLIT];
+      return splitter !== undefined
+        ? splitter.call(separator, O, limit)
+        : internalSplit.call(String(O), separator, limit);
+    },
+    // `RegExp.prototype[@@split]` method
+    // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@split
+    //
+    // NOTE: This cannot be properly polyfilled in engines that don't support
+    // the 'y' flag.
+    function (regexp, limit) {
+      var res = maybeCallNative(internalSplit, regexp, this, limit, internalSplit !== nativeSplit);
+      if (res.done) return res.value;
+
+      var rx = anObject(regexp);
+      var S = String(this);
+      var C = speciesConstructor(rx, RegExp);
+
+      var unicodeMatching = rx.unicode;
+      var flags = (rx.ignoreCase ? 'i' : '') +
+                  (rx.multiline ? 'm' : '') +
+                  (rx.unicode ? 'u' : '') +
+                  (SUPPORTS_Y ? 'y' : 'g');
+
+      // ^(? + rx + ) is needed, in combination with some S slicing, to
+      // simulate the 'y' flag.
+      var splitter = new C(SUPPORTS_Y ? rx : '^(?:' + rx.source + ')', flags);
+      var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;
+      if (lim === 0) return [];
+      if (S.length === 0) return callRegExpExec(splitter, S) === null ? [S] : [];
+      var p = 0;
+      var q = 0;
+      var A = [];
+      while (q < S.length) {
+        splitter.lastIndex = SUPPORTS_Y ? q : 0;
+        var z = callRegExpExec(splitter, SUPPORTS_Y ? S : S.slice(q));
+        var e;
+        if (
+          z === null ||
+          (e = min(toLength(splitter.lastIndex + (SUPPORTS_Y ? 0 : q)), S.length)) === p
+        ) {
+          q = advanceStringIndex(S, q, unicodeMatching);
+        } else {
+          A.push(S.slice(p, q));
+          if (A.length === lim) return A;
+          for (var i = 1; i <= z.length - 1; i++) {
+            A.push(z[i]);
+            if (A.length === lim) return A;
+          }
+          q = p = e;
+        }
+      }
+      A.push(S.slice(p));
+      return A;
+    }
+  ];
+}, !SUPPORTS_Y);
+
+},{"../internals/advance-string-index":5,"../internals/an-object":7,"../internals/fails":50,"../internals/fix-regexp-well-known-symbol-logic":51,"../internals/is-regexp":77,"../internals/regexp-exec":118,"../internals/regexp-exec-abstract":117,"../internals/require-object-coercible":121,"../internals/species-constructor":129,"../internals/to-length":144}],307:[function(require,module,exports){
+'use strict';
+var $ = require('../internals/export');
+var getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;
+var toLength = require('../internals/to-length');
+var notARegExp = require('../internals/not-a-regexp');
+var requireObjectCoercible = require('../internals/require-object-coercible');
+var correctIsRegExpLogic = require('../internals/correct-is-regexp-logic');
+var IS_PURE = require('../internals/is-pure');
+
+var nativeStartsWith = ''.startsWith;
+var min = Math.min;
+
+var CORRECT_IS_REGEXP_LOGIC = correctIsRegExpLogic('startsWith');
+// https://github.com/zloirock/core-js/pull/702
+var MDN_POLYFILL_BUG = !IS_PURE && !CORRECT_IS_REGEXP_LOGIC && !!function () {
+  var descriptor = getOwnPropertyDescriptor(String.prototype, 'startsWith');
+  return descriptor && !descriptor.writable;
+}();
+
+// `String.prototype.startsWith` method
+// https://tc39.github.io/ecma262/#sec-string.prototype.startswith
+$({ target: 'String', proto: true, forced: !MDN_POLYFILL_BUG && !CORRECT_IS_REGEXP_LOGIC }, {
+  startsWith: function startsWith(searchString /* , position = 0 */) {
+    var that = String(requireObjectCoercible(this));
+    notARegExp(searchString);
+    var index = toLength(min(arguments.length > 1 ? arguments[1] : undefined, that.length));
+    var search = String(searchString);
+    return nativeStartsWith
+      ? nativeStartsWith.call(that, search, index)
+      : that.slice(index, index + search.length) === search;
+  }
+});
+
+},{"../internals/correct-is-regexp-logic":31,"../internals/export":49,"../internals/is-pure":76,"../internals/not-a-regexp":91,"../internals/object-get-own-property-descriptor":99,"../internals/require-object-coercible":121,"../internals/to-length":144}],308:[function(require,module,exports){
+'use strict';
+var $ = require('../internals/export');
+var createHTML = require('../internals/create-html');
+var forcedStringHTMLMethod = require('../internals/string-html-forced');
+
+// `String.prototype.strike` method
+// https://tc39.github.io/ecma262/#sec-string.prototype.strike
+$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('strike') }, {
+  strike: function strike() {
+    return createHTML(this, 'strike', '', '');
+  }
+});
+
+},{"../internals/create-html":33,"../internals/export":49,"../internals/string-html-forced":130}],309:[function(require,module,exports){
+'use strict';
+var $ = require('../internals/export');
+var createHTML = require('../internals/create-html');
+var forcedStringHTMLMethod = require('../internals/string-html-forced');
+
+// `String.prototype.sub` method
+// https://tc39.github.io/ecma262/#sec-string.prototype.sub
+$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('sub') }, {
+  sub: function sub() {
+    return createHTML(this, 'sub', '', '');
+  }
+});
+
+},{"../internals/create-html":33,"../internals/export":49,"../internals/string-html-forced":130}],310:[function(require,module,exports){
+'use strict';
+var $ = require('../internals/export');
+var createHTML = require('../internals/create-html');
+var forcedStringHTMLMethod = require('../internals/string-html-forced');
+
+// `String.prototype.sup` method
+// https://tc39.github.io/ecma262/#sec-string.prototype.sup
+$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('sup') }, {
+  sup: function sup() {
+    return createHTML(this, 'sup', '', '');
+  }
+});
+
+},{"../internals/create-html":33,"../internals/export":49,"../internals/string-html-forced":130}],311:[function(require,module,exports){
+'use strict';
+var $ = require('../internals/export');
+var $trimEnd = require('../internals/string-trim').end;
+var forcedStringTrimMethod = require('../internals/string-trim-forced');
+
+var FORCED = forcedStringTrimMethod('trimEnd');
+
+var trimEnd = FORCED ? function trimEnd() {
+  return $trimEnd(this);
+} : ''.trimEnd;
+
+// `String.prototype.{ trimEnd, trimRight }` methods
+// https://github.com/tc39/ecmascript-string-left-right-trim
+$({ target: 'String', proto: true, forced: FORCED }, {
+  trimEnd: trimEnd,
+  trimRight: trimEnd
+});
+
+},{"../internals/export":49,"../internals/string-trim":137,"../internals/string-trim-forced":136}],312:[function(require,module,exports){
+'use strict';
+var $ = require('../internals/export');
+var $trimStart = require('../internals/string-trim').start;
+var forcedStringTrimMethod = require('../internals/string-trim-forced');
+
+var FORCED = forcedStringTrimMethod('trimStart');
+
+var trimStart = FORCED ? function trimStart() {
+  return $trimStart(this);
+} : ''.trimStart;
+
+// `String.prototype.{ trimStart, trimLeft }` methods
+// https://github.com/tc39/ecmascript-string-left-right-trim
+$({ target: 'String', proto: true, forced: FORCED }, {
+  trimStart: trimStart,
+  trimLeft: trimStart
+});
+
+},{"../internals/export":49,"../internals/string-trim":137,"../internals/string-trim-forced":136}],313:[function(require,module,exports){
+'use strict';
+var $ = require('../internals/export');
+var $trim = require('../internals/string-trim').trim;
+var forcedStringTrimMethod = require('../internals/string-trim-forced');
+
+// `String.prototype.trim` method
+// https://tc39.github.io/ecma262/#sec-string.prototype.trim
+$({ target: 'String', proto: true, forced: forcedStringTrimMethod('trim') }, {
+  trim: function trim() {
+    return $trim(this);
+  }
+});
+
+},{"../internals/export":49,"../internals/string-trim":137,"../internals/string-trim-forced":136}],314:[function(require,module,exports){
+var defineWellKnownSymbol = require('../internals/define-well-known-symbol');
+
+// `Symbol.asyncIterator` well-known symbol
+// https://tc39.github.io/ecma262/#sec-symbol.asynciterator
+defineWellKnownSymbol('asyncIterator');
+
+},{"../internals/define-well-known-symbol":41}],315:[function(require,module,exports){
+// `Symbol.prototype.description` getter
+// https://tc39.github.io/ecma262/#sec-symbol.prototype.description
+'use strict';
+var $ = require('../internals/export');
+var DESCRIPTORS = require('../internals/descriptors');
+var global = require('../internals/global');
+var has = require('../internals/has');
+var isObject = require('../internals/is-object');
+var defineProperty = require('../internals/object-define-property').f;
+var copyConstructorProperties = require('../internals/copy-constructor-properties');
+
+var NativeSymbol = global.Symbol;
+
+if (DESCRIPTORS && typeof NativeSymbol == 'function' && (!('description' in NativeSymbol.prototype) ||
+  // Safari 12 bug
+  NativeSymbol().description !== undefined
+)) {
+  var EmptyStringDescriptionStore = {};
+  // wrap Symbol constructor for correct work with undefined description
+  var SymbolWrapper = function Symbol() {
+    var description = arguments.length < 1 || arguments[0] === undefined ? undefined : String(arguments[0]);
+    var result = this instanceof SymbolWrapper
+      ? new NativeSymbol(description)
+      // in Edge 13, String(Symbol(undefined)) === 'Symbol(undefined)'
+      : description === undefined ? NativeSymbol() : NativeSymbol(description);
+    if (description === '') EmptyStringDescriptionStore[result] = true;
+    return result;
+  };
+  copyConstructorProperties(SymbolWrapper, NativeSymbol);
+  var symbolPrototype = SymbolWrapper.prototype = NativeSymbol.prototype;
+  symbolPrototype.constructor = SymbolWrapper;
+
+  var symbolToString = symbolPrototype.toString;
+  var native = String(NativeSymbol('test')) == 'Symbol(test)';
+  var regexp = /^Symbol\((.*)\)[^)]+$/;
+  defineProperty(symbolPrototype, 'description', {
+    configurable: true,
+    get: function description() {
+      var symbol = isObject(this) ? this.valueOf() : this;
+      var string = symbolToString.call(symbol);
+      if (has(EmptyStringDescriptionStore, symbol)) return '';
+      var desc = native ? string.slice(7, -1) : string.replace(regexp, '$1');
+      return desc === '' ? undefined : desc;
+    }
+  });
+
+  $({ global: true, forced: true }, {
+    Symbol: SymbolWrapper
+  });
+}
+
+},{"../internals/copy-constructor-properties":30,"../internals/descriptors":42,"../internals/export":49,"../internals/global":59,"../internals/has":60,"../internals/is-object":75,"../internals/object-define-property":98}],316:[function(require,module,exports){
+var defineWellKnownSymbol = require('../internals/define-well-known-symbol');
+
+// `Symbol.hasInstance` well-known symbol
+// https://tc39.github.io/ecma262/#sec-symbol.hasinstance
+defineWellKnownSymbol('hasInstance');
+
+},{"../internals/define-well-known-symbol":41}],317:[function(require,module,exports){
+var defineWellKnownSymbol = require('../internals/define-well-known-symbol');
+
+// `Symbol.isConcatSpreadable` well-known symbol
+// https://tc39.github.io/ecma262/#sec-symbol.isconcatspreadable
+defineWellKnownSymbol('isConcatSpreadable');
+
+},{"../internals/define-well-known-symbol":41}],318:[function(require,module,exports){
+var defineWellKnownSymbol = require('../internals/define-well-known-symbol');
+
+// `Symbol.iterator` well-known symbol
+// https://tc39.github.io/ecma262/#sec-symbol.iterator
+defineWellKnownSymbol('iterator');
+
+},{"../internals/define-well-known-symbol":41}],319:[function(require,module,exports){
+'use strict';
+var $ = require('../internals/export');
+var global = require('../internals/global');
+var getBuiltIn = require('../internals/get-built-in');
+var IS_PURE = require('../internals/is-pure');
+var DESCRIPTORS = require('../internals/descriptors');
+var NATIVE_SYMBOL = require('../internals/native-symbol');
+var USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');
+var fails = require('../internals/fails');
+var has = require('../internals/has');
+var isArray = require('../internals/is-array');
+var isObject = require('../internals/is-object');
+var anObject = require('../internals/an-object');
+var toObject = require('../internals/to-object');
+var toIndexedObject = require('../internals/to-indexed-object');
+var toPrimitive = require('../internals/to-primitive');
+var createPropertyDescriptor = require('../internals/create-property-descriptor');
+var nativeObjectCreate = require('../internals/object-create');
+var objectKeys = require('../internals/object-keys');
+var getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');
+var getOwnPropertyNamesExternal = require('../internals/object-get-own-property-names-external');
+var getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');
+var getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');
+var definePropertyModule = require('../internals/object-define-property');
+var propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');
+var createNonEnumerableProperty = require('../internals/create-non-enumerable-property');
+var redefine = require('../internals/redefine');
+var shared = require('../internals/shared');
+var sharedKey = require('../internals/shared-key');
+var hiddenKeys = require('../internals/hidden-keys');
+var uid = require('../internals/uid');
+var wellKnownSymbol = require('../internals/well-known-symbol');
+var wrappedWellKnownSymbolModule = require('../internals/well-known-symbol-wrapped');
+var defineWellKnownSymbol = require('../internals/define-well-known-symbol');
+var setToStringTag = require('../internals/set-to-string-tag');
+var InternalStateModule = require('../internals/internal-state');
+var $forEach = require('../internals/array-iteration').forEach;
+
+var HIDDEN = sharedKey('hidden');
+var SYMBOL = 'Symbol';
+var PROTOTYPE = 'prototype';
+var TO_PRIMITIVE = wellKnownSymbol('toPrimitive');
+var setInternalState = InternalStateModule.set;
+var getInternalState = InternalStateModule.getterFor(SYMBOL);
+var ObjectPrototype = Object[PROTOTYPE];
+var $Symbol = global.Symbol;
+var $stringify = getBuiltIn('JSON', 'stringify');
+var nativeGetOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;
+var nativeDefineProperty = definePropertyModule.f;
+var nativeGetOwnPropertyNames = getOwnPropertyNamesExternal.f;
+var nativePropertyIsEnumerable = propertyIsEnumerableModule.f;
+var AllSymbols = shared('symbols');
+var ObjectPrototypeSymbols = shared('op-symbols');
+var StringToSymbolRegistry = shared('string-to-symbol-registry');
+var SymbolToStringRegistry = shared('symbol-to-string-registry');
+var WellKnownSymbolsStore = shared('wks');
+var QObject = global.QObject;
+// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173
+var USE_SETTER = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;
+
+// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687
+var setSymbolDescriptor = DESCRIPTORS && fails(function () {
+  return nativeObjectCreate(nativeDefineProperty({}, 'a', {
+    get: function () { return nativeDefineProperty(this, 'a', { value: 7 }).a; }
+  })).a != 7;
+}) ? function (O, P, Attributes) {
+  var ObjectPrototypeDescriptor = nativeGetOwnPropertyDescriptor(ObjectPrototype, P);
+  if (ObjectPrototypeDescriptor) delete ObjectPrototype[P];
+  nativeDefineProperty(O, P, Attributes);
+  if (ObjectPrototypeDescriptor && O !== ObjectPrototype) {
+    nativeDefineProperty(ObjectPrototype, P, ObjectPrototypeDescriptor);
+  }
+} : nativeDefineProperty;
+
+var wrap = function (tag, description) {
+  var symbol = AllSymbols[tag] = nativeObjectCreate($Symbol[PROTOTYPE]);
+  setInternalState(symbol, {
+    type: SYMBOL,
+    tag: tag,
+    description: description
+  });
+  if (!DESCRIPTORS) symbol.description = description;
+  return symbol;
+};
+
+var isSymbol = USE_SYMBOL_AS_UID ? function (it) {
+  return typeof it == 'symbol';
+} : function (it) {
+  return Object(it) instanceof $Symbol;
+};
+
+var $defineProperty = function defineProperty(O, P, Attributes) {
+  if (O === ObjectPrototype) $defineProperty(ObjectPrototypeSymbols, P, Attributes);
+  anObject(O);
+  var key = toPrimitive(P, true);
+  anObject(Attributes);
+  if (has(AllSymbols, key)) {
+    if (!Attributes.enumerable) {
+      if (!has(O, HIDDEN)) nativeDefineProperty(O, HIDDEN, createPropertyDescriptor(1, {}));
+      O[HIDDEN][key] = true;
+    } else {
+      if (has(O, HIDDEN) && O[HIDDEN][key]) O[HIDDEN][key] = false;
+      Attributes = nativeObjectCreate(Attributes, { enumerable: createPropertyDescriptor(0, false) });
+    } return setSymbolDescriptor(O, key, Attributes);
+  } return nativeDefineProperty(O, key, Attributes);
+};
+
+var $defineProperties = function defineProperties(O, Properties) {
+  anObject(O);
+  var properties = toIndexedObject(Properties);
+  var keys = objectKeys(properties).concat($getOwnPropertySymbols(properties));
+  $forEach(keys, function (key) {
+    if (!DESCRIPTORS || $propertyIsEnumerable.call(properties, key)) $defineProperty(O, key, properties[key]);
+  });
+  return O;
+};
+
+var $create = function create(O, Properties) {
+  return Properties === undefined ? nativeObjectCreate(O) : $defineProperties(nativeObjectCreate(O), Properties);
+};
+
+var $propertyIsEnumerable = function propertyIsEnumerable(V) {
+  var P = toPrimitive(V, true);
+  var enumerable = nativePropertyIsEnumerable.call(this, P);
+  if (this === ObjectPrototype && 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(O, P) {
+  var it = toIndexedObject(O);
+  var key = toPrimitive(P, true);
+  if (it === ObjectPrototype && has(AllSymbols, key) && !has(ObjectPrototypeSymbols, key)) return;
+  var descriptor = nativeGetOwnPropertyDescriptor(it, key);
+  if (descriptor && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) {
+    descriptor.enumerable = true;
+  }
+  return descriptor;
+};
+
+var $getOwnPropertyNames = function getOwnPropertyNames(O) {
+  var names = nativeGetOwnPropertyNames(toIndexedObject(O));
+  var result = [];
+  $forEach(names, function (key) {
+    if (!has(AllSymbols, key) && !has(hiddenKeys, key)) result.push(key);
+  });
+  return result;
+};
+
+var $getOwnPropertySymbols = function getOwnPropertySymbols(O) {
+  var IS_OBJECT_PROTOTYPE = O === ObjectPrototype;
+  var names = nativeGetOwnPropertyNames(IS_OBJECT_PROTOTYPE ? ObjectPrototypeSymbols : toIndexedObject(O));
+  var result = [];
+  $forEach(names, function (key) {
+    if (has(AllSymbols, key) && (!IS_OBJECT_PROTOTYPE || has(ObjectPrototype, key))) {
+      result.push(AllSymbols[key]);
+    }
+  });
+  return result;
+};
+
+// `Symbol` constructor
+// https://tc39.github.io/ecma262/#sec-symbol-constructor
+if (!NATIVE_SYMBOL) {
+  $Symbol = function Symbol() {
+    if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor');
+    var description = !arguments.length || arguments[0] === undefined ? undefined : String(arguments[0]);
+    var tag = uid(description);
+    var setter = function (value) {
+      if (this === ObjectPrototype) setter.call(ObjectPrototypeSymbols, value);
+      if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;
+      setSymbolDescriptor(this, tag, createPropertyDescriptor(1, value));
+    };
+    if (DESCRIPTORS && USE_SETTER) setSymbolDescriptor(ObjectPrototype, tag, { configurable: true, set: setter });
+    return wrap(tag, description);
+  };
+
+  redefine($Symbol[PROTOTYPE], 'toString', function toString() {
+    return getInternalState(this).tag;
+  });
+
+  redefine($Symbol, 'withoutSetter', function (description) {
+    return wrap(uid(description), description);
+  });
+
+  propertyIsEnumerableModule.f = $propertyIsEnumerable;
+  definePropertyModule.f = $defineProperty;
+  getOwnPropertyDescriptorModule.f = $getOwnPropertyDescriptor;
+  getOwnPropertyNamesModule.f = getOwnPropertyNamesExternal.f = $getOwnPropertyNames;
+  getOwnPropertySymbolsModule.f = $getOwnPropertySymbols;
+
+  wrappedWellKnownSymbolModule.f = function (name) {
+    return wrap(wellKnownSymbol(name), name);
+  };
+
+  if (DESCRIPTORS) {
+    // https://github.com/tc39/proposal-Symbol-description
+    nativeDefineProperty($Symbol[PROTOTYPE], 'description', {
+      configurable: true,
+      get: function description() {
+        return getInternalState(this).description;
+      }
+    });
+    if (!IS_PURE) {
+      redefine(ObjectPrototype, 'propertyIsEnumerable', $propertyIsEnumerable, { unsafe: true });
+    }
+  }
+}
+
+$({ global: true, wrap: true, forced: !NATIVE_SYMBOL, sham: !NATIVE_SYMBOL }, {
+  Symbol: $Symbol
+});
+
+$forEach(objectKeys(WellKnownSymbolsStore), function (name) {
+  defineWellKnownSymbol(name);
+});
+
+$({ target: SYMBOL, stat: true, forced: !NATIVE_SYMBOL }, {
+  // `Symbol.for` method
+  // https://tc39.github.io/ecma262/#sec-symbol.for
+  'for': function (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');
+    if (has(SymbolToStringRegistry, sym)) return SymbolToStringRegistry[sym];
+  },
+  useSetter: function () { USE_SETTER = true; },
+  useSimple: function () { USE_SETTER = false; }
+});
+
+$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL, sham: !DESCRIPTORS }, {
+  // `Object.create` method
+  // https://tc39.github.io/ecma262/#sec-object.create
+  create: $create,
+  // `Object.defineProperty` method
+  // https://tc39.github.io/ecma262/#sec-object.defineproperty
+  defineProperty: $defineProperty,
+  // `Object.defineProperties` method
+  // https://tc39.github.io/ecma262/#sec-object.defineproperties
+  defineProperties: $defineProperties,
+  // `Object.getOwnPropertyDescriptor` method
+  // https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptors
+  getOwnPropertyDescriptor: $getOwnPropertyDescriptor
+});
+
+$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL }, {
+  // `Object.getOwnPropertyNames` method
+  // https://tc39.github.io/ecma262/#sec-object.getownpropertynames
+  getOwnPropertyNames: $getOwnPropertyNames,
+  // `Object.getOwnPropertySymbols` method
+  // https://tc39.github.io/ecma262/#sec-object.getownpropertysymbols
+  getOwnPropertySymbols: $getOwnPropertySymbols
+});
+
+// Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives
+// https://bugs.chromium.org/p/v8/issues/detail?id=3443
+$({ target: 'Object', stat: true, forced: fails(function () { getOwnPropertySymbolsModule.f(1); }) }, {
+  getOwnPropertySymbols: function getOwnPropertySymbols(it) {
+    return getOwnPropertySymbolsModule.f(toObject(it));
+  }
+});
+
+// `JSON.stringify` method behavior with symbols
+// https://tc39.github.io/ecma262/#sec-json.stringify
+if ($stringify) {
+  var FORCED_JSON_STRINGIFY = !NATIVE_SYMBOL || 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)) != '{}';
+  });
+
+  $({ 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][TO_PRIMITIVE]) {
+  createNonEnumerableProperty($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);
+}
+// `Symbol.prototype[@@toStringTag]` property
+// https://tc39.github.io/ecma262/#sec-symbol.prototype-@@tostringtag
+setToStringTag($Symbol, SYMBOL);
+
+hiddenKeys[HIDDEN] = true;
+
+},{"../internals/an-object":7,"../internals/array-iteration":16,"../internals/create-non-enumerable-property":35,"../internals/create-property-descriptor":36,"../internals/define-well-known-symbol":41,"../internals/descriptors":42,"../internals/export":49,"../internals/fails":50,"../internals/get-built-in":56,"../internals/global":59,"../internals/has":60,"../internals/hidden-keys":61,"../internals/internal-state":70,"../internals/is-array":72,"../internals/is-object":75,"../internals/is-pure":76,"../internals/native-symbol":87,"../internals/object-create":96,"../internals/object-define-property":98,"../internals/object-get-own-property-descriptor":99,"../internals/object-get-own-property-names":101,"../internals/object-get-own-property-names-external":100,"../internals/object-get-own-property-symbols":102,"../internals/object-keys":105,"../internals/object-property-is-enumerable":106,"../internals/redefine":116,"../internals/set-to-string-tag":125,"../internals/shared":128,"../internals/shared-key":126,"../internals/to-indexed-object":142,"../internals/to-object":145,"../internals/to-primitive":148,"../internals/uid":153,"../internals/use-symbol-as-uid":154,"../internals/well-known-symbol":156,"../internals/well-known-symbol-wrapped":155}],320:[function(require,module,exports){
+var defineWellKnownSymbol = require('../internals/define-well-known-symbol');
+
+// `Symbol.matchAll` well-known symbol
+defineWellKnownSymbol('matchAll');
+
+},{"../internals/define-well-known-symbol":41}],321:[function(require,module,exports){
+var defineWellKnownSymbol = require('../internals/define-well-known-symbol');
+
+// `Symbol.match` well-known symbol
+// https://tc39.github.io/ecma262/#sec-symbol.match
+defineWellKnownSymbol('match');
+
+},{"../internals/define-well-known-symbol":41}],322:[function(require,module,exports){
+var defineWellKnownSymbol = require('../internals/define-well-known-symbol');
+
+// `Symbol.replace` well-known symbol
+// https://tc39.github.io/ecma262/#sec-symbol.replace
+defineWellKnownSymbol('replace');
+
+},{"../internals/define-well-known-symbol":41}],323:[function(require,module,exports){
+var defineWellKnownSymbol = require('../internals/define-well-known-symbol');
+
+// `Symbol.search` well-known symbol
+// https://tc39.github.io/ecma262/#sec-symbol.search
+defineWellKnownSymbol('search');
+
+},{"../internals/define-well-known-symbol":41}],324:[function(require,module,exports){
+var defineWellKnownSymbol = require('../internals/define-well-known-symbol');
+
+// `Symbol.species` well-known symbol
+// https://tc39.github.io/ecma262/#sec-symbol.species
+defineWellKnownSymbol('species');
+
+},{"../internals/define-well-known-symbol":41}],325:[function(require,module,exports){
+var defineWellKnownSymbol = require('../internals/define-well-known-symbol');
+
+// `Symbol.split` well-known symbol
+// https://tc39.github.io/ecma262/#sec-symbol.split
+defineWellKnownSymbol('split');
+
+},{"../internals/define-well-known-symbol":41}],326:[function(require,module,exports){
+var defineWellKnownSymbol = require('../internals/define-well-known-symbol');
+
+// `Symbol.toPrimitive` well-known symbol
+// https://tc39.github.io/ecma262/#sec-symbol.toprimitive
+defineWellKnownSymbol('toPrimitive');
+
+},{"../internals/define-well-known-symbol":41}],327:[function(require,module,exports){
+var defineWellKnownSymbol = require('../internals/define-well-known-symbol');
+
+// `Symbol.toStringTag` well-known symbol
+// https://tc39.github.io/ecma262/#sec-symbol.tostringtag
+defineWellKnownSymbol('toStringTag');
+
+},{"../internals/define-well-known-symbol":41}],328:[function(require,module,exports){
+var defineWellKnownSymbol = require('../internals/define-well-known-symbol');
+
+// `Symbol.unscopables` well-known symbol
+// https://tc39.github.io/ecma262/#sec-symbol.unscopables
+defineWellKnownSymbol('unscopables');
+
+},{"../internals/define-well-known-symbol":41}],329:[function(require,module,exports){
+'use strict';
+var ArrayBufferViewCore = require('../internals/array-buffer-view-core');
+var $copyWithin = require('../internals/array-copy-within');
+
+var aTypedArray = ArrayBufferViewCore.aTypedArray;
+var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;
+
+// `%TypedArray%.prototype.copyWithin` method
+// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.copywithin
+exportTypedArrayMethod('copyWithin', function copyWithin(target, start /* , end */) {
+  return $copyWithin.call(aTypedArray(this), target, start, arguments.length > 2 ? arguments[2] : undefined);
+});
+
+},{"../internals/array-buffer-view-core":9,"../internals/array-copy-within":11}],330:[function(require,module,exports){
+'use strict';
+var ArrayBufferViewCore = require('../internals/array-buffer-view-core');
+var $every = require('../internals/array-iteration').every;
+
+var aTypedArray = ArrayBufferViewCore.aTypedArray;
+var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;
+
+// `%TypedArray%.prototype.every` method
+// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.every
+exportTypedArrayMethod('every', function every(callbackfn /* , thisArg */) {
+  return $every(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);
+});
+
+},{"../internals/array-buffer-view-core":9,"../internals/array-iteration":16}],331:[function(require,module,exports){
+'use strict';
+var ArrayBufferViewCore = require('../internals/array-buffer-view-core');
+var $fill = require('../internals/array-fill');
+
+var aTypedArray = ArrayBufferViewCore.aTypedArray;
+var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;
+
+// `%TypedArray%.prototype.fill` method
+// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.fill
+// eslint-disable-next-line no-unused-vars
+exportTypedArrayMethod('fill', function fill(value /* , start, end */) {
+  return $fill.apply(aTypedArray(this), arguments);
+});
+
+},{"../internals/array-buffer-view-core":9,"../internals/array-fill":12}],332:[function(require,module,exports){
+'use strict';
+var ArrayBufferViewCore = require('../internals/array-buffer-view-core');
+var $filter = require('../internals/array-iteration').filter;
+var speciesConstructor = require('../internals/species-constructor');
+
+var aTypedArray = ArrayBufferViewCore.aTypedArray;
+var aTypedArrayConstructor = ArrayBufferViewCore.aTypedArrayConstructor;
+var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;
+
+// `%TypedArray%.prototype.filter` method
+// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.filter
+exportTypedArrayMethod('filter', function filter(callbackfn /* , thisArg */) {
+  var list = $filter(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);
+  var C = speciesConstructor(this, this.constructor);
+  var index = 0;
+  var length = list.length;
+  var result = new (aTypedArrayConstructor(C))(length);
+  while (length > index) result[index] = list[index++];
+  return result;
+});
+
+},{"../internals/array-buffer-view-core":9,"../internals/array-iteration":16,"../internals/species-constructor":129}],333:[function(require,module,exports){
+'use strict';
+var ArrayBufferViewCore = require('../internals/array-buffer-view-core');
+var $findIndex = require('../internals/array-iteration').findIndex;
+
+var aTypedArray = ArrayBufferViewCore.aTypedArray;
+var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;
+
+// `%TypedArray%.prototype.findIndex` method
+// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.findindex
+exportTypedArrayMethod('findIndex', function findIndex(predicate /* , thisArg */) {
+  return $findIndex(aTypedArray(this), predicate, arguments.length > 1 ? arguments[1] : undefined);
+});
+
+},{"../internals/array-buffer-view-core":9,"../internals/array-iteration":16}],334:[function(require,module,exports){
+'use strict';
+var ArrayBufferViewCore = require('../internals/array-buffer-view-core');
+var $find = require('../internals/array-iteration').find;
+
+var aTypedArray = ArrayBufferViewCore.aTypedArray;
+var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;
+
+// `%TypedArray%.prototype.find` method
+// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.find
+exportTypedArrayMethod('find', function find(predicate /* , thisArg */) {
+  return $find(aTypedArray(this), predicate, arguments.length > 1 ? arguments[1] : undefined);
+});
+
+},{"../internals/array-buffer-view-core":9,"../internals/array-iteration":16}],335:[function(require,module,exports){
+var createTypedArrayConstructor = require('../internals/typed-array-constructor');
+
+// `Float32Array` constructor
+// https://tc39.github.io/ecma262/#sec-typedarray-objects
+createTypedArrayConstructor('Float32', function (init) {
+  return function Float32Array(data, byteOffset, length) {
+    return init(this, data, byteOffset, length);
+  };
+});
+
+},{"../internals/typed-array-constructor":150}],336:[function(require,module,exports){
+var createTypedArrayConstructor = require('../internals/typed-array-constructor');
+
+// `Float64Array` constructor
+// https://tc39.github.io/ecma262/#sec-typedarray-objects
+createTypedArrayConstructor('Float64', function (init) {
+  return function Float64Array(data, byteOffset, length) {
+    return init(this, data, byteOffset, length);
+  };
+});
+
+},{"../internals/typed-array-constructor":150}],337:[function(require,module,exports){
+'use strict';
+var ArrayBufferViewCore = require('../internals/array-buffer-view-core');
+var $forEach = require('../internals/array-iteration').forEach;
+
+var aTypedArray = ArrayBufferViewCore.aTypedArray;
+var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;
+
+// `%TypedArray%.prototype.forEach` method
+// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.foreach
+exportTypedArrayMethod('forEach', function forEach(callbackfn /* , thisArg */) {
+  $forEach(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);
+});
+
+},{"../internals/array-buffer-view-core":9,"../internals/array-iteration":16}],338:[function(require,module,exports){
+'use strict';
+var TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS = require('../internals/typed-array-constructors-require-wrappers');
+var exportTypedArrayStaticMethod = require('../internals/array-buffer-view-core').exportTypedArrayStaticMethod;
+var typedArrayFrom = require('../internals/typed-array-from');
+
+// `%TypedArray%.from` method
+// https://tc39.github.io/ecma262/#sec-%typedarray%.from
+exportTypedArrayStaticMethod('from', typedArrayFrom, TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS);
+
+},{"../internals/array-buffer-view-core":9,"../internals/typed-array-constructors-require-wrappers":151,"../internals/typed-array-from":152}],339:[function(require,module,exports){
+'use strict';
+var ArrayBufferViewCore = require('../internals/array-buffer-view-core');
+var $includes = require('../internals/array-includes').includes;
+
+var aTypedArray = ArrayBufferViewCore.aTypedArray;
+var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;
+
+// `%TypedArray%.prototype.includes` method
+// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.includes
+exportTypedArrayMethod('includes', function includes(searchElement /* , fromIndex */) {
+  return $includes(aTypedArray(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);
+});
+
+},{"../internals/array-buffer-view-core":9,"../internals/array-includes":15}],340:[function(require,module,exports){
+'use strict';
+var ArrayBufferViewCore = require('../internals/array-buffer-view-core');
+var $indexOf = require('../internals/array-includes').indexOf;
+
+var aTypedArray = ArrayBufferViewCore.aTypedArray;
+var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;
+
+// `%TypedArray%.prototype.indexOf` method
+// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.indexof
+exportTypedArrayMethod('indexOf', function indexOf(searchElement /* , fromIndex */) {
+  return $indexOf(aTypedArray(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);
+});
+
+},{"../internals/array-buffer-view-core":9,"../internals/array-includes":15}],341:[function(require,module,exports){
+var createTypedArrayConstructor = require('../internals/typed-array-constructor');
+
+// `Int16Array` constructor
+// https://tc39.github.io/ecma262/#sec-typedarray-objects
+createTypedArrayConstructor('Int16', function (init) {
+  return function Int16Array(data, byteOffset, length) {
+    return init(this, data, byteOffset, length);
+  };
+});
+
+},{"../internals/typed-array-constructor":150}],342:[function(require,module,exports){
+var createTypedArrayConstructor = require('../internals/typed-array-constructor');
+
+// `Int32Array` constructor
+// https://tc39.github.io/ecma262/#sec-typedarray-objects
+createTypedArrayConstructor('Int32', function (init) {
+  return function Int32Array(data, byteOffset, length) {
+    return init(this, data, byteOffset, length);
+  };
+});
+
+},{"../internals/typed-array-constructor":150}],343:[function(require,module,exports){
+var createTypedArrayConstructor = require('../internals/typed-array-constructor');
+
+// `Int8Array` constructor
+// https://tc39.github.io/ecma262/#sec-typedarray-objects
+createTypedArrayConstructor('Int8', function (init) {
+  return function Int8Array(data, byteOffset, length) {
+    return init(this, data, byteOffset, length);
+  };
+});
+
+},{"../internals/typed-array-constructor":150}],344:[function(require,module,exports){
+'use strict';
+var global = require('../internals/global');
+var ArrayBufferViewCore = require('../internals/array-buffer-view-core');
+var ArrayIterators = require('../modules/es.array.iterator');
+var wellKnownSymbol = require('../internals/well-known-symbol');
+
+var ITERATOR = wellKnownSymbol('iterator');
+var Uint8Array = global.Uint8Array;
+var arrayValues = ArrayIterators.values;
+var arrayKeys = ArrayIterators.keys;
+var arrayEntries = ArrayIterators.entries;
+var aTypedArray = ArrayBufferViewCore.aTypedArray;
+var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;
+var nativeTypedArrayIterator = Uint8Array && Uint8Array.prototype[ITERATOR];
+
+var CORRECT_ITER_NAME = !!nativeTypedArrayIterator
+  && (nativeTypedArrayIterator.name == 'values' || nativeTypedArrayIterator.name == undefined);
+
+var typedArrayValues = function values() {
+  return arrayValues.call(aTypedArray(this));
+};
+
+// `%TypedArray%.prototype.entries` method
+// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.entries
+exportTypedArrayMethod('entries', function entries() {
+  return arrayEntries.call(aTypedArray(this));
+});
+// `%TypedArray%.prototype.keys` method
+// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.keys
+exportTypedArrayMethod('keys', function keys() {
+  return arrayKeys.call(aTypedArray(this));
+});
+// `%TypedArray%.prototype.values` method
+// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.values
+exportTypedArrayMethod('values', typedArrayValues, !CORRECT_ITER_NAME);
+// `%TypedArray%.prototype[@@iterator]` method
+// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype-@@iterator
+exportTypedArrayMethod(ITERATOR, typedArrayValues, !CORRECT_ITER_NAME);
+
+},{"../internals/array-buffer-view-core":9,"../internals/global":59,"../internals/well-known-symbol":156,"../modules/es.array.iterator":175}],345:[function(require,module,exports){
+'use strict';
+var ArrayBufferViewCore = require('../internals/array-buffer-view-core');
+
+var aTypedArray = ArrayBufferViewCore.aTypedArray;
+var exportTypedArrayMethod = 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
+exportTypedArrayMethod('join', function join(separator) {
+  return $join.apply(aTypedArray(this), arguments);
+});
+
+},{"../internals/array-buffer-view-core":9}],346:[function(require,module,exports){
+'use strict';
+var ArrayBufferViewCore = require('../internals/array-buffer-view-core');
+var $lastIndexOf = require('../internals/array-last-index-of');
+
+var aTypedArray = ArrayBufferViewCore.aTypedArray;
+var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;
+
+// `%TypedArray%.prototype.lastIndexOf` method
+// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.lastindexof
+// eslint-disable-next-line no-unused-vars
+exportTypedArrayMethod('lastIndexOf', function lastIndexOf(searchElement /* , fromIndex */) {
+  return $lastIndexOf.apply(aTypedArray(this), arguments);
+});
+
+},{"../internals/array-buffer-view-core":9,"../internals/array-last-index-of":17}],347:[function(require,module,exports){
+'use strict';
+var ArrayBufferViewCore = require('../internals/array-buffer-view-core');
+var $map = require('../internals/array-iteration').map;
+var speciesConstructor = require('../internals/species-constructor');
+
+var aTypedArray = ArrayBufferViewCore.aTypedArray;
+var aTypedArrayConstructor = ArrayBufferViewCore.aTypedArrayConstructor;
+var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;
+
+// `%TypedArray%.prototype.map` method
+// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.map
+exportTypedArrayMethod('map', function map(mapfn /* , thisArg */) {
+  return $map(aTypedArray(this), mapfn, arguments.length > 1 ? arguments[1] : undefined, function (O, length) {
+    return new (aTypedArrayConstructor(speciesConstructor(O, O.constructor)))(length);
+  });
+});
+
+},{"../internals/array-buffer-view-core":9,"../internals/array-iteration":16,"../internals/species-constructor":129}],348:[function(require,module,exports){
+'use strict';
+var ArrayBufferViewCore = require('../internals/array-buffer-view-core');
+var TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS = require('../internals/typed-array-constructors-require-wrappers');
+
+var aTypedArrayConstructor = ArrayBufferViewCore.aTypedArrayConstructor;
+var exportTypedArrayStaticMethod = ArrayBufferViewCore.exportTypedArrayStaticMethod;
+
+// `%TypedArray%.of` method
+// https://tc39.github.io/ecma262/#sec-%typedarray%.of
+exportTypedArrayStaticMethod('of', function of(/* ...items */) {
+  var index = 0;
+  var length = arguments.length;
+  var result = new (aTypedArrayConstructor(this))(length);
+  while (length > index) result[index] = arguments[index++];
+  return result;
+}, TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS);
+
+},{"../internals/array-buffer-view-core":9,"../internals/typed-array-constructors-require-wrappers":151}],349:[function(require,module,exports){
+'use strict';
+var ArrayBufferViewCore = require('../internals/array-buffer-view-core');
+var $reduceRight = require('../internals/array-reduce').right;
+
+var aTypedArray = ArrayBufferViewCore.aTypedArray;
+var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;
+
+// `%TypedArray%.prototype.reduceRicht` method
+// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.reduceright
+exportTypedArrayMethod('reduceRight', function reduceRight(callbackfn /* , initialValue */) {
+  return $reduceRight(aTypedArray(this), callbackfn, arguments.length, arguments.length > 1 ? arguments[1] : undefined);
+});
+
+},{"../internals/array-buffer-view-core":9,"../internals/array-reduce":21}],350:[function(require,module,exports){
+'use strict';
+var ArrayBufferViewCore = require('../internals/array-buffer-view-core');
+var $reduce = require('../internals/array-reduce').left;
+
+var aTypedArray = ArrayBufferViewCore.aTypedArray;
+var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;
+
+// `%TypedArray%.prototype.reduce` method
+// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.reduce
+exportTypedArrayMethod('reduce', function reduce(callbackfn /* , initialValue */) {
+  return $reduce(aTypedArray(this), callbackfn, arguments.length, arguments.length > 1 ? arguments[1] : undefined);
+});
+
+},{"../internals/array-buffer-view-core":9,"../internals/array-reduce":21}],351:[function(require,module,exports){
+'use strict';
+var ArrayBufferViewCore = require('../internals/array-buffer-view-core');
+
+var aTypedArray = ArrayBufferViewCore.aTypedArray;
+var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;
+var floor = Math.floor;
+
+// `%TypedArray%.prototype.reverse` method
+// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.reverse
+exportTypedArrayMethod('reverse', function reverse() {
+  var that = this;
+  var length = aTypedArray(that).length;
+  var middle = floor(length / 2);
+  var index = 0;
+  var value;
+  while (index < middle) {
+    value = that[index];
+    that[index++] = that[--length];
+    that[length] = value;
+  } return that;
+});
+
+},{"../internals/array-buffer-view-core":9}],352:[function(require,module,exports){
+'use strict';
+var ArrayBufferViewCore = require('../internals/array-buffer-view-core');
+var toLength = require('../internals/to-length');
+var toOffset = require('../internals/to-offset');
+var toObject = require('../internals/to-object');
+var fails = require('../internals/fails');
+
+var aTypedArray = ArrayBufferViewCore.aTypedArray;
+var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;
+
+var FORCED = 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
+exportTypedArrayMethod('set', function set(arrayLike /* , offset */) {
+  aTypedArray(this);
+  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);
+
+},{"../internals/array-buffer-view-core":9,"../internals/fails":50,"../internals/to-length":144,"../internals/to-object":145,"../internals/to-offset":146}],353:[function(require,module,exports){
+'use strict';
+var ArrayBufferViewCore = require('../internals/array-buffer-view-core');
+var speciesConstructor = require('../internals/species-constructor');
+var fails = require('../internals/fails');
+
+var aTypedArray = ArrayBufferViewCore.aTypedArray;
+var aTypedArrayConstructor = ArrayBufferViewCore.aTypedArrayConstructor;
+var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;
+var $slice = [].slice;
+
+var FORCED = 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
+exportTypedArrayMethod('slice', function slice(start, end) {
+  var list = $slice.call(aTypedArray(this), start, end);
+  var C = speciesConstructor(this, this.constructor);
+  var index = 0;
+  var length = list.length;
+  var result = new (aTypedArrayConstructor(C))(length);
+  while (length > index) result[index] = list[index++];
+  return result;
+}, FORCED);
+
+},{"../internals/array-buffer-view-core":9,"../internals/fails":50,"../internals/species-constructor":129}],354:[function(require,module,exports){
+'use strict';
+var ArrayBufferViewCore = require('../internals/array-buffer-view-core');
+var $some = require('../internals/array-iteration').some;
+
+var aTypedArray = ArrayBufferViewCore.aTypedArray;
+var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;
+
+// `%TypedArray%.prototype.some` method
+// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.some
+exportTypedArrayMethod('some', function some(callbackfn /* , thisArg */) {
+  return $some(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);
+});
+
+},{"../internals/array-buffer-view-core":9,"../internals/array-iteration":16}],355:[function(require,module,exports){
+'use strict';
+var ArrayBufferViewCore = require('../internals/array-buffer-view-core');
+
+var aTypedArray = ArrayBufferViewCore.aTypedArray;
+var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;
+var $sort = [].sort;
+
+// `%TypedArray%.prototype.sort` method
+// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.sort
+exportTypedArrayMethod('sort', function sort(comparefn) {
+  return $sort.call(aTypedArray(this), comparefn);
+});
+
+},{"../internals/array-buffer-view-core":9}],356:[function(require,module,exports){
+'use strict';
+var ArrayBufferViewCore = require('../internals/array-buffer-view-core');
+var toLength = require('../internals/to-length');
+var toAbsoluteIndex = require('../internals/to-absolute-index');
+var speciesConstructor = require('../internals/species-constructor');
+
+var aTypedArray = ArrayBufferViewCore.aTypedArray;
+var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;
+
+// `%TypedArray%.prototype.subarray` method
+// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.subarray
+exportTypedArrayMethod('subarray', function subarray(begin, end) {
+  var O = aTypedArray(this);
+  var length = O.length;
+  var beginIndex = toAbsoluteIndex(begin, length);
+  return new (speciesConstructor(O, O.constructor))(
+    O.buffer,
+    O.byteOffset + beginIndex * O.BYTES_PER_ELEMENT,
+    toLength((end === undefined ? length : toAbsoluteIndex(end, length)) - beginIndex)
+  );
+});
+
+},{"../internals/array-buffer-view-core":9,"../internals/species-constructor":129,"../internals/to-absolute-index":140,"../internals/to-length":144}],357:[function(require,module,exports){
+'use strict';
+var global = require('../internals/global');
+var ArrayBufferViewCore = require('../internals/array-buffer-view-core');
+var fails = require('../internals/fails');
+
+var Int8Array = global.Int8Array;
+var aTypedArray = ArrayBufferViewCore.aTypedArray;
+var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;
+var $toLocaleString = [].toLocaleString;
+var $slice = [].slice;
+
+// iOS Safari 6.x fails here
+var TO_LOCALE_STRING_BUG = !!Int8Array && fails(function () {
+  $toLocaleString.call(new Int8Array(1));
+});
+
+var FORCED = fails(function () {
+  return [1, 2].toLocaleString() != new Int8Array([1, 2]).toLocaleString();
+}) || !fails(function () {
+  Int8Array.prototype.toLocaleString.call([1, 2]);
+});
+
+// `%TypedArray%.prototype.toLocaleString` method
+// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.tolocalestring
+exportTypedArrayMethod('toLocaleString', function toLocaleString() {
+  return $toLocaleString.apply(TO_LOCALE_STRING_BUG ? $slice.call(aTypedArray(this)) : aTypedArray(this), arguments);
+}, FORCED);
+
+},{"../internals/array-buffer-view-core":9,"../internals/fails":50,"../internals/global":59}],358:[function(require,module,exports){
+'use strict';
+var exportTypedArrayMethod = require('../internals/array-buffer-view-core').exportTypedArrayMethod;
+var fails = require('../internals/fails');
+var global = require('../internals/global');
+
+var Uint8Array = global.Uint8Array;
+var Uint8ArrayPrototype = Uint8Array && Uint8Array.prototype || {};
+var arrayToString = [].toString;
+var arrayJoin = [].join;
+
+if (fails(function () { arrayToString.call({}); })) {
+  arrayToString = function toString() {
+    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
+exportTypedArrayMethod('toString', arrayToString, IS_NOT_ARRAY_METHOD);
+
+},{"../internals/array-buffer-view-core":9,"../internals/fails":50,"../internals/global":59}],359:[function(require,module,exports){
+var createTypedArrayConstructor = require('../internals/typed-array-constructor');
+
+// `Uint16Array` constructor
+// https://tc39.github.io/ecma262/#sec-typedarray-objects
+createTypedArrayConstructor('Uint16', function (init) {
+  return function Uint16Array(data, byteOffset, length) {
+    return init(this, data, byteOffset, length);
+  };
+});
+
+},{"../internals/typed-array-constructor":150}],360:[function(require,module,exports){
+var createTypedArrayConstructor = require('../internals/typed-array-constructor');
+
+// `Uint32Array` constructor
+// https://tc39.github.io/ecma262/#sec-typedarray-objects
+createTypedArrayConstructor('Uint32', function (init) {
+  return function Uint32Array(data, byteOffset, length) {
+    return init(this, data, byteOffset, length);
+  };
+});
+
+},{"../internals/typed-array-constructor":150}],361:[function(require,module,exports){
+var createTypedArrayConstructor = require('../internals/typed-array-constructor');
+
+// `Uint8Array` constructor
+// https://tc39.github.io/ecma262/#sec-typedarray-objects
+createTypedArrayConstructor('Uint8', function (init) {
+  return function Uint8Array(data, byteOffset, length) {
+    return init(this, data, byteOffset, length);
+  };
+});
+
+},{"../internals/typed-array-constructor":150}],362:[function(require,module,exports){
+var createTypedArrayConstructor = require('../internals/typed-array-constructor');
+
+// `Uint8ClampedArray` constructor
+// https://tc39.github.io/ecma262/#sec-typedarray-objects
+createTypedArrayConstructor('Uint8', function (init) {
+  return function Uint8ClampedArray(data, byteOffset, length) {
+    return init(this, data, byteOffset, length);
+  };
+}, true);
+
+},{"../internals/typed-array-constructor":150}],363:[function(require,module,exports){
+'use strict';
+var global = require('../internals/global');
+var redefineAll = require('../internals/redefine-all');
+var InternalMetadataModule = require('../internals/internal-metadata');
+var collection = require('../internals/collection');
+var collectionWeak = require('../internals/collection-weak');
+var isObject = require('../internals/is-object');
+var enforceIternalState = require('../internals/internal-state').enforce;
+var NATIVE_WEAK_MAP = require('../internals/native-weak-map');
+
+var IS_IE11 = !global.ActiveXObject && 'ActiveXObject' in global;
+var isExtensible = Object.isExtensible;
+var InternalWeakMap;
+
+var wrapper = function (init) {
+  return function WeakMap() {
+    return init(this, arguments.length ? arguments[0] : undefined);
+  };
+};
+
+// `WeakMap` constructor
+// https://tc39.github.io/ecma262/#sec-weakmap-constructor
+var $WeakMap = module.exports = collection('WeakMap', wrapper, collectionWeak);
+
+// 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 (NATIVE_WEAK_MAP && IS_IE11) {
+  InternalWeakMap = collectionWeak.getConstructor(wrapper, 'WeakMap', true);
+  InternalMetadataModule.REQUIRED = true;
+  var WeakMapPrototype = $WeakMap.prototype;
+  var nativeDelete = WeakMapPrototype['delete'];
+  var nativeHas = WeakMapPrototype.has;
+  var nativeGet = WeakMapPrototype.get;
+  var nativeSet = WeakMapPrototype.set;
+  redefineAll(WeakMapPrototype, {
+    'delete': function (key) {
+      if (isObject(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(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(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(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);
+      } else nativeSet.call(this, key, value);
+      return this;
+    }
+  });
+}
+
+},{"../internals/collection":29,"../internals/collection-weak":28,"../internals/global":59,"../internals/internal-metadata":69,"../internals/internal-state":70,"../internals/is-object":75,"../internals/native-weak-map":89,"../internals/redefine-all":115}],364:[function(require,module,exports){
+'use strict';
+var collection = require('../internals/collection');
+var collectionWeak = require('../internals/collection-weak');
+
+// `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);
+
+},{"../internals/collection":29,"../internals/collection-weak":28}],365:[function(require,module,exports){
+var global = require('../internals/global');
+var DOMIterables = require('../internals/dom-iterables');
+var forEach = require('../internals/array-for-each');
+var createNonEnumerableProperty = require('../internals/create-non-enumerable-property');
+
+for (var COLLECTION_NAME in DOMIterables) {
+  var Collection = global[COLLECTION_NAME];
+  var CollectionPrototype = Collection && Collection.prototype;
+  // some Chrome versions have non-configurable methods on DOMTokenList
+  if (CollectionPrototype && CollectionPrototype.forEach !== forEach) try {
+    createNonEnumerableProperty(CollectionPrototype, 'forEach', forEach);
+  } catch (error) {
+    CollectionPrototype.forEach = forEach;
+  }
+}
+
+},{"../internals/array-for-each":13,"../internals/create-non-enumerable-property":35,"../internals/dom-iterables":44,"../internals/global":59}],366:[function(require,module,exports){
+var global = require('../internals/global');
+var DOMIterables = require('../internals/dom-iterables');
+var ArrayIteratorMethods = require('../modules/es.array.iterator');
+var createNonEnumerableProperty = require('../internals/create-non-enumerable-property');
+var wellKnownSymbol = require('../internals/well-known-symbol');
+
+var ITERATOR = wellKnownSymbol('iterator');
+var TO_STRING_TAG = wellKnownSymbol('toStringTag');
+var ArrayValues = ArrayIteratorMethods.values;
+
+for (var COLLECTION_NAME in DOMIterables) {
+  var Collection = global[COLLECTION_NAME];
+  var CollectionPrototype = Collection && Collection.prototype;
+  if (CollectionPrototype) {
+    // some Chrome versions have non-configurable methods on DOMTokenList
+    if (CollectionPrototype[ITERATOR] !== ArrayValues) try {
+      createNonEnumerableProperty(CollectionPrototype, ITERATOR, ArrayValues);
+    } catch (error) {
+      CollectionPrototype[ITERATOR] = ArrayValues;
+    }
+    if (!CollectionPrototype[TO_STRING_TAG]) {
+      createNonEnumerableProperty(CollectionPrototype, TO_STRING_TAG, COLLECTION_NAME);
+    }
+    if (DOMIterables[COLLECTION_NAME]) for (var METHOD_NAME in ArrayIteratorMethods) {
+      // some Chrome versions have non-configurable methods on DOMTokenList
+      if (CollectionPrototype[METHOD_NAME] !== ArrayIteratorMethods[METHOD_NAME]) try {
+        createNonEnumerableProperty(CollectionPrototype, METHOD_NAME, ArrayIteratorMethods[METHOD_NAME]);
+      } catch (error) {
+        CollectionPrototype[METHOD_NAME] = ArrayIteratorMethods[METHOD_NAME];
+      }
+    }
+  }
+}
+
+},{"../internals/create-non-enumerable-property":35,"../internals/dom-iterables":44,"../internals/global":59,"../internals/well-known-symbol":156,"../modules/es.array.iterator":175}],367:[function(require,module,exports){
+var $ = require('../internals/export');
+var global = require('../internals/global');
+var task = require('../internals/task');
+
+var FORCED = !global.setImmediate || !global.clearImmediate;
+
+// http://w3c.github.io/setImmediate/
+$({ global: true, bind: true, enumerable: true, forced: FORCED }, {
+  // `setImmediate` method
+  // http://w3c.github.io/setImmediate/#si-setImmediate
+  setImmediate: task.set,
+  // `clearImmediate` method
+  // http://w3c.github.io/setImmediate/#si-clearImmediate
+  clearImmediate: task.clear
+});
+
+},{"../internals/export":49,"../internals/global":59,"../internals/task":138}],368:[function(require,module,exports){
+var $ = require('../internals/export');
+var global = require('../internals/global');
+var microtask = require('../internals/microtask');
+var classof = require('../internals/classof-raw');
+
+var process = global.process;
+var isNode = classof(process) == 'process';
+
+// `queueMicrotask` method
+// https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#dom-queuemicrotask
+$({ global: true, enumerable: true, noTargetGet: true }, {
+  queueMicrotask: function queueMicrotask(fn) {
+    var domain = isNode && process.domain;
+    microtask(domain ? domain.bind(fn) : fn);
+  }
+});
+
+},{"../internals/classof-raw":25,"../internals/export":49,"../internals/global":59,"../internals/microtask":85}],369:[function(require,module,exports){
+var $ = require('../internals/export');
+var global = require('../internals/global');
+var userAgent = require('../internals/engine-user-agent');
+
+var slice = [].slice;
+var MSIE = /MSIE .\./.test(userAgent); // <- dirty ie9- check
+
+var wrap = function (scheduler) {
+  return function (handler, timeout /* , ...arguments */) {
+    var boundArgs = arguments.length > 2;
+    var args = boundArgs ? slice.call(arguments, 2) : undefined;
+    return scheduler(boundArgs ? function () {
+      // eslint-disable-next-line no-new-func
+      (typeof handler == 'function' ? handler : Function(handler)).apply(this, args);
+    } : handler, timeout);
+  };
+};
+
+// ie9- setTimeout & setInterval additional parameters fix
+// https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#timers
+$({ global: true, bind: true, forced: MSIE }, {
+  // `setTimeout` method
+  // https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#dom-settimeout
+  setTimeout: wrap(global.setTimeout),
+  // `setInterval` method
+  // https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#dom-setinterval
+  setInterval: wrap(global.setInterval)
+});
+
+},{"../internals/engine-user-agent":46,"../internals/export":49,"../internals/global":59}],370:[function(require,module,exports){
+'use strict';
+// TODO: in core-js@4, move /modules/ dependencies to public entries for better optimization by tools like `preset-env`
+require('../modules/es.array.iterator');
+var $ = require('../internals/export');
+var getBuiltIn = require('../internals/get-built-in');
+var USE_NATIVE_URL = require('../internals/native-url');
+var redefine = require('../internals/redefine');
+var redefineAll = require('../internals/redefine-all');
+var setToStringTag = require('../internals/set-to-string-tag');
+var createIteratorConstructor = require('../internals/create-iterator-constructor');
+var InternalStateModule = require('../internals/internal-state');
+var anInstance = require('../internals/an-instance');
+var hasOwn = require('../internals/has');
+var bind = require('../internals/function-bind-context');
+var classof = require('../internals/classof');
+var anObject = require('../internals/an-object');
+var isObject = require('../internals/is-object');
+var create = require('../internals/object-create');
+var createPropertyDescriptor = require('../internals/create-property-descriptor');
+var getIterator = require('../internals/get-iterator');
+var getIteratorMethod = require('../internals/get-iterator-method');
+var wellKnownSymbol = require('../internals/well-known-symbol');
+
+var $fetch = getBuiltIn('fetch');
+var Headers = getBuiltIn('Headers');
+var ITERATOR = wellKnownSymbol('iterator');
+var URL_SEARCH_PARAMS = 'URLSearchParams';
+var URL_SEARCH_PARAMS_ITERATOR = URL_SEARCH_PARAMS + 'Iterator';
+var setInternalState = InternalStateModule.set;
+var getInternalParamsState = InternalStateModule.getterFor(URL_SEARCH_PARAMS);
+var getInternalIteratorState = InternalStateModule.getterFor(URL_SEARCH_PARAMS_ITERATOR);
+
+var plus = /\+/g;
+var sequences = Array(4);
+
+var percentSequence = function (bytes) {
+  return sequences[bytes - 1] || (sequences[bytes - 1] = RegExp('((?:%[\\da-f]{2}){' + bytes + '})', 'gi'));
+};
+
+var percentDecode = function (sequence) {
+  try {
+    return decodeURIComponent(sequence);
+  } catch (error) {
+    return sequence;
+  }
+};
+
+var deserialize = function (it) {
+  var result = it.replace(plus, ' ');
+  var bytes = 4;
+  try {
+    return decodeURIComponent(result);
+  } catch (error) {
+    while (bytes) {
+      result = result.replace(percentSequence(bytes--), percentDecode);
+    }
+    return result;
+  }
+};
+
+var find = /[!'()~]|%20/g;
+
+var replace = {
+  '!': '%21',
+  "'": '%27',
+  '(': '%28',
+  ')': '%29',
+  '~': '%7E',
+  '%20': '+'
+};
+
+var replacer = function (match) {
+  return replace[match];
+};
+
+var serialize = function (it) {
+  return encodeURIComponent(it).replace(find, replacer);
+};
+
+var parseSearchParams = function (result, query) {
+  if (query) {
+    var attributes = query.split('&');
+    var index = 0;
+    var attribute, entry;
+    while (index < attributes.length) {
+      attribute = attributes[index++];
+      if (attribute.length) {
+        entry = attribute.split('=');
+        result.push({
+          key: deserialize(entry.shift()),
+          value: deserialize(entry.join('='))
+        });
+      }
+    }
+  }
+};
+
+var updateSearchParams = function (query) {
+  this.entries.length = 0;
+  parseSearchParams(this.entries, query);
+};
+
+var validateArgumentsLength = function (passed, required) {
+  if (passed < required) throw TypeError('Not enough arguments');
+};
+
+var URLSearchParamsIterator = createIteratorConstructor(function Iterator(params, kind) {
+  setInternalState(this, {
+    type: URL_SEARCH_PARAMS_ITERATOR,
+    iterator: getIterator(getInternalParamsState(params).entries),
+    kind: kind
+  });
+}, 'Iterator', function next() {
+  var state = getInternalIteratorState(this);
+  var kind = state.kind;
+  var step = state.iterator.next();
+  var entry = step.value;
+  if (!step.done) {
+    step.value = kind === 'keys' ? entry.key : kind === 'values' ? entry.value : [entry.key, entry.value];
+  } return step;
+});
+
+// `URLSearchParams` constructor
+// https://url.spec.whatwg.org/#interface-urlsearchparams
+var URLSearchParamsConstructor = function URLSearchParams(/* init */) {
+  anInstance(this, URLSearchParamsConstructor, URL_SEARCH_PARAMS);
+  var init = arguments.length > 0 ? arguments[0] : undefined;
+  var that = this;
+  var entries = [];
+  var iteratorMethod, iterator, next, step, entryIterator, entryNext, first, second, key;
+
+  setInternalState(that, {
+    type: URL_SEARCH_PARAMS,
+    entries: entries,
+    updateURL: function () { /* empty */ },
+    updateSearchParams: updateSearchParams
+  });
+
+  if (init !== undefined) {
+    if (isObject(init)) {
+      iteratorMethod = getIteratorMethod(init);
+      if (typeof iteratorMethod === 'function') {
+        iterator = iteratorMethod.call(init);
+        next = iterator.next;
+        while (!(step = next.call(iterator)).done) {
+          entryIterator = getIterator(anObject(step.value));
+          entryNext = entryIterator.next;
+          if (
+            (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 + '' });
+        }
+      } else for (key in init) if (hasOwn(init, key)) entries.push({ key: key, value: init[key] + '' });
+    } else {
+      parseSearchParams(entries, typeof init === 'string' ? init.charAt(0) === '?' ? init.slice(1) : init : init + '');
+    }
+  }
+};
+
+var URLSearchParamsPrototype = URLSearchParamsConstructor.prototype;
+
+redefineAll(URLSearchParamsPrototype, {
+  // `URLSearchParams.prototype.appent` method
+  // https://url.spec.whatwg.org/#dom-urlsearchparams-append
+  append: function append(name, value) {
+    validateArgumentsLength(arguments.length, 2);
+    var state = getInternalParamsState(this);
+    state.entries.push({ key: name + '', value: value + '' });
+    state.updateURL();
+  },
+  // `URLSearchParams.prototype.delete` method
+  // https://url.spec.whatwg.org/#dom-urlsearchparams-delete
+  'delete': function (name) {
+    validateArgumentsLength(arguments.length, 1);
+    var state = getInternalParamsState(this);
+    var entries = state.entries;
+    var key = name + '';
+    var index = 0;
+    while (index < entries.length) {
+      if (entries[index].key === key) entries.splice(index, 1);
+      else index++;
+    }
+    state.updateURL();
+  },
+  // `URLSearchParams.prototype.get` method
+  // https://url.spec.whatwg.org/#dom-urlsearchparams-get
+  get: function get(name) {
+    validateArgumentsLength(arguments.length, 1);
+    var entries = getInternalParamsState(this).entries;
+    var key = name + '';
+    var index = 0;
+    for (; index < entries.length; index++) {
+      if (entries[index].key === key) return entries[index].value;
+    }
+    return null;
+  },
+  // `URLSearchParams.prototype.getAll` method
+  // https://url.spec.whatwg.org/#dom-urlsearchparams-getall
+  getAll: function getAll(name) {
+    validateArgumentsLength(arguments.length, 1);
+    var entries = getInternalParamsState(this).entries;
+    var key = name + '';
+    var result = [];
+    var index = 0;
+    for (; index < entries.length; index++) {
+      if (entries[index].key === key) result.push(entries[index].value);
+    }
+    return result;
+  },
+  // `URLSearchParams.prototype.has` method
+  // https://url.spec.whatwg.org/#dom-urlsearchparams-has
+  has: function has(name) {
+    validateArgumentsLength(arguments.length, 1);
+    var entries = getInternalParamsState(this).entries;
+    var key = name + '';
+    var index = 0;
+    while (index < entries.length) {
+      if (entries[index++].key === key) return true;
+    }
+    return false;
+  },
+  // `URLSearchParams.prototype.set` method
+  // https://url.spec.whatwg.org/#dom-urlsearchparams-set
+  set: function set(name, value) {
+    validateArgumentsLength(arguments.length, 1);
+    var state = getInternalParamsState(this);
+    var entries = state.entries;
+    var found = false;
+    var key = name + '';
+    var val = value + '';
+    var index = 0;
+    var entry;
+    for (; index < entries.length; index++) {
+      entry = entries[index];
+      if (entry.key === key) {
+        if (found) entries.splice(index--, 1);
+        else {
+          found = true;
+          entry.value = val;
+        }
+      }
+    }
+    if (!found) entries.push({ key: key, value: val });
+    state.updateURL();
+  },
+  // `URLSearchParams.prototype.sort` method
+  // https://url.spec.whatwg.org/#dom-urlsearchparams-sort
+  sort: function sort() {
+    var state = getInternalParamsState(this);
+    var entries = state.entries;
+    // Array#sort is not stable in some engines
+    var slice = entries.slice();
+    var entry, entriesIndex, sliceIndex;
+    entries.length = 0;
+    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 (entriesIndex === sliceIndex) entries.push(entry);
+    }
+    state.updateURL();
+  },
+  // `URLSearchParams.prototype.forEach` method
+  forEach: function forEach(callback /* , thisArg */) {
+    var entries = getInternalParamsState(this).entries;
+    var boundFunction = bind(callback, arguments.length > 1 ? arguments[1] : undefined, 3);
+    var index = 0;
+    var entry;
+    while (index < entries.length) {
+      entry = entries[index++];
+      boundFunction(entry.value, entry.key, this);
+    }
+  },
+  // `URLSearchParams.prototype.keys` method
+  keys: function keys() {
+    return new URLSearchParamsIterator(this, 'keys');
+  },
+  // `URLSearchParams.prototype.values` method
+  values: function values() {
+    return new URLSearchParamsIterator(this, 'values');
+  },
+  // `URLSearchParams.prototype.entries` method
+  entries: function entries() {
+    return new URLSearchParamsIterator(this, 'entries');
+  }
+}, { enumerable: true });
+
+// `URLSearchParams.prototype[@@iterator]` method
+redefine(URLSearchParamsPrototype, ITERATOR, URLSearchParamsPrototype.entries);
+
+// `URLSearchParams.prototype.toString` method
+// https://url.spec.whatwg.org/#urlsearchparams-stringification-behavior
+redefine(URLSearchParamsPrototype, 'toString', function toString() {
+  var entries = getInternalParamsState(this).entries;
+  var result = [];
+  var index = 0;
+  var entry;
+  while (index < entries.length) {
+    entry = entries[index++];
+    result.push(serialize(entry.key) + '=' + serialize(entry.value));
+  } return result.join('&');
+}, { enumerable: true });
+
+setToStringTag(URLSearchParamsConstructor, URL_SEARCH_PARAMS);
+
+$({ global: true, forced: !USE_NATIVE_URL }, {
+  URLSearchParams: URLSearchParamsConstructor
+});
+
+// Wrap `fetch` for correct work with polyfilled `URLSearchParams`
+// https://github.com/zloirock/core-js/issues/674
+if (!USE_NATIVE_URL && typeof $fetch == 'function' && typeof Headers == 'function') {
+  $({ 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(init.headers) : new Headers();
+            if (!headers.has('content-type')) {
+              headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8');
+            }
+            init = create(init, {
+              body: createPropertyDescriptor(0, String(body)),
+              headers: createPropertyDescriptor(0, headers)
+            });
+          }
+        }
+        args.push(init);
+      } return $fetch.apply(this, args);
+    }
+  });
+}
+
+module.exports = {
+  URLSearchParams: URLSearchParamsConstructor,
+  getState: getInternalParamsState
+};
+
+},{"../internals/an-instance":6,"../internals/an-object":7,"../internals/classof":26,"../internals/create-iterator-constructor":34,"../internals/create-property-descriptor":36,"../internals/export":49,"../internals/function-bind-context":54,"../internals/get-built-in":56,"../internals/get-iterator":58,"../internals/get-iterator-method":57,"../internals/has":60,"../internals/internal-state":70,"../internals/is-object":75,"../internals/native-url":88,"../internals/object-create":96,"../internals/redefine":116,"../internals/redefine-all":115,"../internals/set-to-string-tag":125,"../internals/well-known-symbol":156,"../modules/es.array.iterator":175}],371:[function(require,module,exports){
+'use strict';
+// TODO: in core-js@4, move /modules/ dependencies to public entries for better optimization by tools like `preset-env`
+require('../modules/es.string.iterator');
+var $ = require('../internals/export');
+var DESCRIPTORS = require('../internals/descriptors');
+var USE_NATIVE_URL = require('../internals/native-url');
+var global = require('../internals/global');
+var defineProperties = require('../internals/object-define-properties');
+var redefine = require('../internals/redefine');
+var anInstance = require('../internals/an-instance');
+var has = require('../internals/has');
+var assign = require('../internals/object-assign');
+var arrayFrom = require('../internals/array-from');
+var codeAt = require('../internals/string-multibyte').codeAt;
+var toASCII = require('../internals/string-punycode-to-ascii');
+var setToStringTag = require('../internals/set-to-string-tag');
+var URLSearchParamsModule = require('../modules/web.url-search-params');
+var InternalStateModule = require('../internals/internal-state');
+
+var NativeURL = global.URL;
+var URLSearchParams = URLSearchParamsModule.URLSearchParams;
+var getInternalSearchParamsState = URLSearchParamsModule.getState;
+var setInternalState = InternalStateModule.set;
+var getInternalURLState = InternalStateModule.getterFor('URL');
+var floor = Math.floor;
+var pow = Math.pow;
+
+var INVALID_AUTHORITY = 'Invalid authority';
+var INVALID_SCHEME = 'Invalid scheme';
+var INVALID_HOST = 'Invalid host';
+var INVALID_PORT = 'Invalid port';
+
+var ALPHA = /[A-Za-z]/;
+var ALPHANUMERIC = /[\d+-.A-Za-z]/;
+var DIGIT = /\d/;
+var HEX_START = /^(0x|0X)/;
+var OCT = /^[0-7]+$/;
+var DEC = /^\d+$/;
+var HEX = /^[\dA-Fa-f]+$/;
+// eslint-disable-next-line no-control-regex
+var FORBIDDEN_HOST_CODE_POINT = /[\u0000\u0009\u000A\u000D #%/:?@[\\]]/;
+// eslint-disable-next-line no-control-regex
+var FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT = /[\u0000\u0009\u000A\u000D #/:?@[\\]]/;
+// eslint-disable-next-line no-control-regex
+var LEADING_AND_TRAILING_C0_CONTROL_OR_SPACE = /^[\u0000-\u001F ]+|[\u0000-\u001F ]+$/g;
+// eslint-disable-next-line no-control-regex
+var TAB_AND_NEW_LINE = /[\u0009\u000A\u000D]/g;
+var EOF;
+
+var parseHost = function (url, input) {
+  var result, codePoints, index;
+  if (input.charAt(0) == '[') {
+    if (input.charAt(input.length - 1) != ']') return INVALID_HOST;
+    result = parseIPv6(input.slice(1, -1));
+    if (!result) return INVALID_HOST;
+    url.host = result;
+  // opaque host
+  } else if (!isSpecial(url)) {
+    if (FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT.test(input)) return INVALID_HOST;
+    result = '';
+    codePoints = arrayFrom(input);
+    for (index = 0; index < codePoints.length; index++) {
+      result += percentEncode(codePoints[index], C0ControlPercentEncodeSet);
+    }
+    url.host = result;
+  } else {
+    input = toASCII(input);
+    if (FORBIDDEN_HOST_CODE_POINT.test(input)) return INVALID_HOST;
+    result = parseIPv4(input);
+    if (result === null) return INVALID_HOST;
+    url.host = result;
+  }
+};
+
+var parseIPv4 = function (input) {
+  var parts = input.split('.');
+  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 (index = 0; index < partsLength; index++) {
+    part = parts[index];
+    if (part == '') return input;
+    radix = 10;
+    if (part.length > 1 && part.charAt(0) == '0') {
+      radix = HEX_START.test(part) ? 16 : 8;
+      part = part.slice(radix == 8 ? 1 : 2);
+    }
+    if (part === '') {
+      number = 0;
+    } else {
+      if (!(radix == 10 ? DEC : radix == 8 ? OCT : HEX).test(part)) return input;
+      number = parseInt(part, radix);
+    }
+    numbers.push(number);
+  }
+  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 (index = 0; index < numbers.length; index++) {
+    ipv4 += numbers[index] * pow(256, 3 - index);
+  }
+  return ipv4;
+};
+
+// eslint-disable-next-line max-statements
+var parseIPv6 = function (input) {
+  var address = [0, 0, 0, 0, 0, 0, 0, 0];
+  var pieceIndex = 0;
+  var compress = null;
+  var pointer = 0;
+  var value, length, numbersSeen, ipv4Piece, number, swaps, swap;
+
+  var char = function () {
+    return input.charAt(pointer);
+  };
+
+  if (char() == ':') {
+    if (input.charAt(1) != ':') return;
+    pointer += 2;
+    pieceIndex++;
+    compress = pieceIndex;
+  }
+  while (char()) {
+    if (pieceIndex == 8) return;
+    if (char() == ':') {
+      if (compress !== null) return;
+      pointer++;
+      pieceIndex++;
+      compress = pieceIndex;
+      continue;
+    }
+    value = length = 0;
+    while (length < 4 && HEX.test(char())) {
+      value = value * 16 + parseInt(char(), 16);
+      pointer++;
+      length++;
+    }
+    if (char() == '.') {
+      if (length == 0) return;
+      pointer -= length;
+      if (pieceIndex > 6) return;
+      numbersSeen = 0;
+      while (char()) {
+        ipv4Piece = null;
+        if (numbersSeen > 0) {
+          if (char() == '.' && numbersSeen < 4) pointer++;
+          else return;
+        }
+        if (!DIGIT.test(char())) return;
+        while (DIGIT.test(char())) {
+          number = parseInt(char(), 10);
+          if (ipv4Piece === null) ipv4Piece = number;
+          else if (ipv4Piece == 0) return;
+          else ipv4Piece = ipv4Piece * 10 + number;
+          if (ipv4Piece > 255) return;
+          pointer++;
+        }
+        address[pieceIndex] = address[pieceIndex] * 256 + ipv4Piece;
+        numbersSeen++;
+        if (numbersSeen == 2 || numbersSeen == 4) pieceIndex++;
+      }
+      if (numbersSeen != 4) return;
+      break;
+    } else if (char() == ':') {
+      pointer++;
+      if (!char()) return;
+    } else if (char()) return;
+    address[pieceIndex++] = value;
+  }
+  if (compress !== null) {
+    swaps = pieceIndex - compress;
+    pieceIndex = 7;
+    while (pieceIndex != 0 && swaps > 0) {
+      swap = address[pieceIndex];
+      address[pieceIndex--] = address[compress + swaps - 1];
+      address[compress + --swaps] = swap;
+    }
+  } else if (pieceIndex != 8) return;
+  return address;
+};
+
+var findLongestZeroSequence = function (ipv6) {
+  var maxIndex = null;
+  var maxLength = 1;
+  var currStart = null;
+  var currLength = 0;
+  var index = 0;
+  for (; index < 8; index++) {
+    if (ipv6[index] !== 0) {
+      if (currLength > maxLength) {
+        maxIndex = currStart;
+        maxLength = currLength;
+      }
+      currStart = null;
+      currLength = 0;
+    } else {
+      if (currStart === null) currStart = index;
+      ++currLength;
+    }
+  }
+  if (currLength > maxLength) {
+    maxIndex = currStart;
+    maxLength = currLength;
+  }
+  return maxIndex;
+};
+
+var serializeHost = function (host) {
+  var result, index, compress, ignore0;
+  // ipv4
+  if (typeof host == 'number') {
+    result = [];
+    for (index = 0; index < 4; index++) {
+      result.unshift(host % 256);
+      host = floor(host / 256);
+    } return result.join('.');
+  // ipv6
+  } else if (typeof host == 'object') {
+    result = '';
+    compress = findLongestZeroSequence(host);
+    for (index = 0; index < 8; index++) {
+      if (ignore0 && host[index] === 0) continue;
+      if (ignore0) ignore0 = false;
+      if (compress === index) {
+        result += index ? ':' : '::';
+        ignore0 = true;
+      } else {
+        result += host[index].toString(16);
+        if (index < 7) result += ':';
+      }
+    }
+    return '[' + result + ']';
+  } return host;
+};
+
+var C0ControlPercentEncodeSet = {};
+var fragmentPercentEncodeSet = assign({}, C0ControlPercentEncodeSet, {
+  ' ': 1, '"': 1, '<': 1, '>': 1, '`': 1
+});
+var pathPercentEncodeSet = assign({}, fragmentPercentEncodeSet, {
+  '#': 1, '?': 1, '{': 1, '}': 1
+});
+var userinfoPercentEncodeSet = assign({}, pathPercentEncodeSet, {
+  '/': 1, ':': 1, ';': 1, '=': 1, '@': 1, '[': 1, '\\': 1, ']': 1, '^': 1, '|': 1
+});
+
+var percentEncode = function (char, set) {
+  var code = codeAt(char, 0);
+  return code > 0x20 && code < 0x7F && !has(set, char) ? char : encodeURIComponent(char);
+};
+
+var specialSchemes = {
+  ftp: 21,
+  file: null,
+  http: 80,
+  https: 443,
+  ws: 80,
+  wss: 443
+};
+
+var isSpecial = function (url) {
+  return has(specialSchemes, url.scheme);
+};
+
+var includesCredentials = function (url) {
+  return url.username != '' || url.password != '';
+};
+
+var cannotHaveUsernamePasswordPort = function (url) {
+  return !url.host || url.cannotBeABaseURL || url.scheme == 'file';
+};
+
+var isWindowsDriveLetter = function (string, normalized) {
+  var second;
+  return string.length == 2 && ALPHA.test(string.charAt(0))
+    && ((second = string.charAt(1)) == ':' || (!normalized && second == '|'));
+};
+
+var startsWithWindowsDriveLetter = function (string) {
+  var third;
+  return string.length > 1 && isWindowsDriveLetter(string.slice(0, 2)) && (
+    string.length == 2 ||
+    ((third = string.charAt(2)) === '/' || third === '\\' || third === '?' || third === '#')
+  );
+};
+
+var shortenURLsPath = function (url) {
+  var path = url.path;
+  var pathSize = path.length;
+  if (pathSize && (url.scheme != 'file' || pathSize != 1 || !isWindowsDriveLetter(path[0], true))) {
+    path.pop();
+  }
+};
+
+var isSingleDot = function (segment) {
+  return segment === '.' || segment.toLowerCase() === '%2e';
+};
+
+var isDoubleDot = function (segment) {
+  segment = segment.toLowerCase();
+  return segment === '..' || segment === '%2e.' || segment === '.%2e' || segment === '%2e%2e';
+};
+
+// States:
+var SCHEME_START = {};
+var SCHEME = {};
+var NO_SCHEME = {};
+var SPECIAL_RELATIVE_OR_AUTHORITY = {};
+var PATH_OR_AUTHORITY = {};
+var RELATIVE = {};
+var RELATIVE_SLASH = {};
+var SPECIAL_AUTHORITY_SLASHES = {};
+var SPECIAL_AUTHORITY_IGNORE_SLASHES = {};
+var AUTHORITY = {};
+var HOST = {};
+var HOSTNAME = {};
+var PORT = {};
+var FILE = {};
+var FILE_SLASH = {};
+var FILE_HOST = {};
+var PATH_START = {};
+var PATH = {};
+var CANNOT_BE_A_BASE_URL_PATH = {};
+var QUERY = {};
+var FRAGMENT = {};
+
+// eslint-disable-next-line max-statements
+var parseURL = function (url, input, stateOverride, base) {
+  var state = stateOverride || SCHEME_START;
+  var pointer = 0;
+  var buffer = '';
+  var seenAt = false;
+  var seenBracket = false;
+  var seenPasswordToken = false;
+  var codePoints, char, bufferCodePoints, failure;
+
+  if (!stateOverride) {
+    url.scheme = '';
+    url.username = '';
+    url.password = '';
+    url.host = null;
+    url.port = null;
+    url.path = [];
+    url.query = null;
+    url.fragment = null;
+    url.cannotBeABaseURL = false;
+    input = input.replace(LEADING_AND_TRAILING_C0_CONTROL_OR_SPACE, '');
+  }
+
+  input = input.replace(TAB_AND_NEW_LINE, '');
+
+  codePoints = arrayFrom(input);
+
+  while (pointer <= codePoints.length) {
+    char = codePoints[pointer];
+    switch (state) {
+      case SCHEME_START:
+        if (char && ALPHA.test(char)) {
+          buffer += char.toLowerCase();
+          state = SCHEME;
+        } else if (!stateOverride) {
+          state = NO_SCHEME;
+          continue;
+        } else return INVALID_SCHEME;
+        break;
+
+      case SCHEME:
+        if (char && (ALPHANUMERIC.test(char) || char == '+' || char == '-' || char == '.')) {
+          buffer += char.toLowerCase();
+        } else if (char == ':') {
+          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;
+            return;
+          }
+          buffer = '';
+          if (url.scheme == 'file') {
+            state = FILE;
+          } else if (isSpecial(url) && base && base.scheme == url.scheme) {
+            state = SPECIAL_RELATIVE_OR_AUTHORITY;
+          } else if (isSpecial(url)) {
+            state = SPECIAL_AUTHORITY_SLASHES;
+          } else if (codePoints[pointer + 1] == '/') {
+            state = PATH_OR_AUTHORITY;
+            pointer++;
+          } else {
+            url.cannotBeABaseURL = true;
+            url.path.push('');
+            state = CANNOT_BE_A_BASE_URL_PATH;
+          }
+        } else if (!stateOverride) {
+          buffer = '';
+          state = NO_SCHEME;
+          pointer = 0;
+          continue;
+        } else return INVALID_SCHEME;
+        break;
+
+      case NO_SCHEME:
+        if (!base || (base.cannotBeABaseURL && char != '#')) return INVALID_SCHEME;
+        if (base.cannotBeABaseURL && char == '#') {
+          url.scheme = base.scheme;
+          url.path = base.path.slice();
+          url.query = base.query;
+          url.fragment = '';
+          url.cannotBeABaseURL = true;
+          state = FRAGMENT;
+          break;
+        }
+        state = base.scheme == 'file' ? FILE : RELATIVE;
+        continue;
+
+      case SPECIAL_RELATIVE_OR_AUTHORITY:
+        if (char == '/' && codePoints[pointer + 1] == '/') {
+          state = SPECIAL_AUTHORITY_IGNORE_SLASHES;
+          pointer++;
+        } else {
+          state = RELATIVE;
+          continue;
+        } break;
+
+      case PATH_OR_AUTHORITY:
+        if (char == '/') {
+          state = AUTHORITY;
+          break;
+        } else {
+          state = PATH;
+          continue;
+        }
+
+      case RELATIVE:
+        url.scheme = base.scheme;
+        if (char == EOF) {
+          url.username = base.username;
+          url.password = base.password;
+          url.host = base.host;
+          url.port = base.port;
+          url.path = base.path.slice();
+          url.query = base.query;
+        } else if (char == '/' || (char == '\\' && isSpecial(url))) {
+          state = RELATIVE_SLASH;
+        } else if (char == '?') {
+          url.username = base.username;
+          url.password = base.password;
+          url.host = base.host;
+          url.port = base.port;
+          url.path = base.path.slice();
+          url.query = '';
+          state = QUERY;
+        } else if (char == '#') {
+          url.username = base.username;
+          url.password = base.password;
+          url.host = base.host;
+          url.port = base.port;
+          url.path = base.path.slice();
+          url.query = base.query;
+          url.fragment = '';
+          state = FRAGMENT;
+        } else {
+          url.username = base.username;
+          url.password = base.password;
+          url.host = base.host;
+          url.port = base.port;
+          url.path = base.path.slice();
+          url.path.pop();
+          state = PATH;
+          continue;
+        } break;
+
+      case RELATIVE_SLASH:
+        if (isSpecial(url) && (char == '/' || char == '\\')) {
+          state = SPECIAL_AUTHORITY_IGNORE_SLASHES;
+        } else if (char == '/') {
+          state = AUTHORITY;
+        } else {
+          url.username = base.username;
+          url.password = base.password;
+          url.host = base.host;
+          url.port = base.port;
+          state = PATH;
+          continue;
+        } break;
+
+      case SPECIAL_AUTHORITY_SLASHES:
+        state = SPECIAL_AUTHORITY_IGNORE_SLASHES;
+        if (char != '/' || buffer.charAt(pointer + 1) != '/') continue;
+        pointer++;
+        break;
+
+      case SPECIAL_AUTHORITY_IGNORE_SLASHES:
+        if (char != '/' && char != '\\') {
+          state = AUTHORITY;
+          continue;
+        } break;
+
+      case AUTHORITY:
+        if (char == '@') {
+          if (seenAt) buffer = '%40' + buffer;
+          seenAt = true;
+          bufferCodePoints = arrayFrom(buffer);
+          for (var i = 0; i < bufferCodePoints.length; i++) {
+            var codePoint = bufferCodePoints[i];
+            if (codePoint == ':' && !seenPasswordToken) {
+              seenPasswordToken = true;
+              continue;
+            }
+            var encodedCodePoints = percentEncode(codePoint, userinfoPercentEncodeSet);
+            if (seenPasswordToken) url.password += encodedCodePoints;
+            else url.username += encodedCodePoints;
+          }
+          buffer = '';
+        } else if (
+          char == EOF || char == '/' || char == '?' || char == '#' ||
+          (char == '\\' && isSpecial(url))
+        ) {
+          if (seenAt && buffer == '') return INVALID_AUTHORITY;
+          pointer -= arrayFrom(buffer).length + 1;
+          buffer = '';
+          state = HOST;
+        } else buffer += char;
+        break;
+
+      case HOST:
+      case HOSTNAME:
+        if (stateOverride && url.scheme == 'file') {
+          state = FILE_HOST;
+          continue;
+        } else if (char == ':' && !seenBracket) {
+          if (buffer == '') return INVALID_HOST;
+          failure = parseHost(url, buffer);
+          if (failure) return failure;
+          buffer = '';
+          state = PORT;
+          if (stateOverride == HOSTNAME) return;
+        } else if (
+          char == EOF || char == '/' || char == '?' || char == '#' ||
+          (char == '\\' && isSpecial(url))
+        ) {
+          if (isSpecial(url) && buffer == '') return INVALID_HOST;
+          if (stateOverride && buffer == '' && (includesCredentials(url) || url.port !== null)) return;
+          failure = parseHost(url, buffer);
+          if (failure) return failure;
+          buffer = '';
+          state = PATH_START;
+          if (stateOverride) return;
+          continue;
+        } else {
+          if (char == '[') seenBracket = true;
+          else if (char == ']') seenBracket = false;
+          buffer += char;
+        } break;
+
+      case PORT:
+        if (DIGIT.test(char)) {
+          buffer += char;
+        } else if (
+          char == EOF || char == '/' || char == '?' || char == '#' ||
+          (char == '\\' && isSpecial(url)) ||
+          stateOverride
+        ) {
+          if (buffer != '') {
+            var port = parseInt(buffer, 10);
+            if (port > 0xFFFF) return INVALID_PORT;
+            url.port = (isSpecial(url) && port === specialSchemes[url.scheme]) ? null : port;
+            buffer = '';
+          }
+          if (stateOverride) return;
+          state = PATH_START;
+          continue;
+        } else return INVALID_PORT;
+        break;
+
+      case FILE:
+        url.scheme = 'file';
+        if (char == '/' || char == '\\') state = FILE_SLASH;
+        else if (base && base.scheme == 'file') {
+          if (char == EOF) {
+            url.host = base.host;
+            url.path = base.path.slice();
+            url.query = base.query;
+          } else if (char == '?') {
+            url.host = base.host;
+            url.path = base.path.slice();
+            url.query = '';
+            state = QUERY;
+          } else if (char == '#') {
+            url.host = base.host;
+            url.path = base.path.slice();
+            url.query = base.query;
+            url.fragment = '';
+            state = FRAGMENT;
+          } else {
+            if (!startsWithWindowsDriveLetter(codePoints.slice(pointer).join(''))) {
+              url.host = base.host;
+              url.path = base.path.slice();
+              shortenURLsPath(url);
+            }
+            state = PATH;
+            continue;
+          }
+        } else {
+          state = PATH;
+          continue;
+        } break;
+
+      case FILE_SLASH:
+        if (char == '/' || char == '\\') {
+          state = FILE_HOST;
+          break;
+        }
+        if (base && base.scheme == 'file' && !startsWithWindowsDriveLetter(codePoints.slice(pointer).join(''))) {
+          if (isWindowsDriveLetter(base.path[0], true)) url.path.push(base.path[0]);
+          else url.host = base.host;
+        }
+        state = PATH;
+        continue;
+
+      case FILE_HOST:
+        if (char == EOF || char == '/' || char == '\\' || char == '?' || char == '#') {
+          if (!stateOverride && isWindowsDriveLetter(buffer)) {
+            state = PATH;
+          } else if (buffer == '') {
+            url.host = '';
+            if (stateOverride) return;
+            state = PATH_START;
+          } else {
+            failure = parseHost(url, buffer);
+            if (failure) return failure;
+            if (url.host == 'localhost') url.host = '';
+            if (stateOverride) return;
+            buffer = '';
+            state = PATH_START;
+          } continue;
+        } else buffer += char;
+        break;
+
+      case PATH_START:
+        if (isSpecial(url)) {
+          state = PATH;
+          if (char != '/' && char != '\\') continue;
+        } else if (!stateOverride && char == '?') {
+          url.query = '';
+          state = QUERY;
+        } else if (!stateOverride && char == '#') {
+          url.fragment = '';
+          state = FRAGMENT;
+        } else if (char != EOF) {
+          state = PATH;
+          if (char != '/') continue;
+        } break;
+
+      case PATH:
+        if (
+          char == EOF || char == '/' ||
+          (char == '\\' && isSpecial(url)) ||
+          (!stateOverride && (char == '?' || char == '#'))
+        ) {
+          if (isDoubleDot(buffer)) {
+            shortenURLsPath(url);
+            if (char != '/' && !(char == '\\' && isSpecial(url))) {
+              url.path.push('');
+            }
+          } else if (isSingleDot(buffer)) {
+            if (char != '/' && !(char == '\\' && isSpecial(url))) {
+              url.path.push('');
+            }
+          } else {
+            if (url.scheme == 'file' && !url.path.length && isWindowsDriveLetter(buffer)) {
+              if (url.host) url.host = '';
+              buffer = buffer.charAt(0) + ':'; // normalize windows drive letter
+            }
+            url.path.push(buffer);
+          }
+          buffer = '';
+          if (url.scheme == 'file' && (char == EOF || char == '?' || char == '#')) {
+            while (url.path.length > 1 && url.path[0] === '') {
+              url.path.shift();
+            }
+          }
+          if (char == '?') {
+            url.query = '';
+            state = QUERY;
+          } else if (char == '#') {
+            url.fragment = '';
+            state = FRAGMENT;
+          }
+        } else {
+          buffer += percentEncode(char, pathPercentEncodeSet);
+        } break;
+
+      case CANNOT_BE_A_BASE_URL_PATH:
+        if (char == '?') {
+          url.query = '';
+          state = QUERY;
+        } else if (char == '#') {
+          url.fragment = '';
+          state = FRAGMENT;
+        } else if (char != EOF) {
+          url.path[0] += percentEncode(char, C0ControlPercentEncodeSet);
+        } break;
+
+      case QUERY:
+        if (!stateOverride && char == '#') {
+          url.fragment = '';
+          state = FRAGMENT;
+        } else if (char != EOF) {
+          if (char == "'" && isSpecial(url)) url.query += '%27';
+          else if (char == '#') url.query += '%23';
+          else url.query += percentEncode(char, C0ControlPercentEncodeSet);
+        } break;
+
+      case FRAGMENT:
+        if (char != EOF) url.fragment += percentEncode(char, fragmentPercentEncodeSet);
+        break;
+    }
+
+    pointer++;
+  }
+};
+
+// `URL` constructor
+// https://url.spec.whatwg.org/#url-class
+var URLConstructor = function URL(url /* , base */) {
+  var that = anInstance(this, URLConstructor, 'URL');
+  var base = arguments.length > 1 ? arguments[1] : undefined;
+  var urlString = String(url);
+  var state = setInternalState(that, { type: 'URL' });
+  var baseState, failure;
+  if (base !== undefined) {
+    if (base instanceof URLConstructor) baseState = getInternalURLState(base);
+    else {
+      failure = parseURL(baseState = {}, String(base));
+      if (failure) throw TypeError(failure);
+    }
+  }
+  failure = parseURL(state, urlString, null, baseState);
+  if (failure) throw TypeError(failure);
+  var searchParams = state.searchParams = new URLSearchParams();
+  var searchParamsState = getInternalSearchParamsState(searchParams);
+  searchParamsState.updateSearchParams(state.query);
+  searchParamsState.updateURL = function () {
+    state.query = String(searchParams) || null;
+  };
+  if (!DESCRIPTORS) {
+    that.href = serializeURL.call(that);
+    that.origin = getOrigin.call(that);
+    that.protocol = getProtocol.call(that);
+    that.username = getUsername.call(that);
+    that.password = getPassword.call(that);
+    that.host = getHost.call(that);
+    that.hostname = getHostname.call(that);
+    that.port = getPort.call(that);
+    that.pathname = getPathname.call(that);
+    that.search = getSearch.call(that);
+    that.searchParams = getSearchParams.call(that);
+    that.hash = getHash.call(that);
+  }
+};
+
+var URLPrototype = URLConstructor.prototype;
+
+var serializeURL = function () {
+  var url = getInternalURLState(this);
+  var scheme = url.scheme;
+  var username = url.username;
+  var password = url.password;
+  var host = url.host;
+  var port = url.port;
+  var path = url.path;
+  var query = url.query;
+  var fragment = url.fragment;
+  var output = scheme + ':';
+  if (host !== null) {
+    output += '//';
+    if (includesCredentials(url)) {
+      output += username + (password ? ':' + password : '') + '@';
+    }
+    output += serializeHost(host);
+    if (port !== null) output += ':' + port;
+  } else if (scheme == 'file') output += '//';
+  output += url.cannotBeABaseURL ? path[0] : path.length ? '/' + path.join('/') : '';
+  if (query !== null) output += '?' + query;
+  if (fragment !== null) output += '#' + fragment;
+  return output;
+};
+
+var getOrigin = function () {
+  var url = getInternalURLState(this);
+  var scheme = url.scheme;
+  var port = url.port;
+  if (scheme == 'blob') try {
+    return new URL(scheme.path[0]).origin;
+  } catch (error) {
+    return 'null';
+  }
+  if (scheme == 'file' || !isSpecial(url)) return 'null';
+  return scheme + '://' + serializeHost(url.host) + (port !== null ? ':' + port : '');
+};
+
+var getProtocol = function () {
+  return getInternalURLState(this).scheme + ':';
+};
+
+var getUsername = function () {
+  return getInternalURLState(this).username;
+};
+
+var getPassword = function () {
+  return getInternalURLState(this).password;
+};
+
+var getHost = function () {
+  var url = getInternalURLState(this);
+  var host = url.host;
+  var port = url.port;
+  return host === null ? ''
+    : port === null ? serializeHost(host)
+    : serializeHost(host) + ':' + port;
+};
+
+var getHostname = function () {
+  var host = getInternalURLState(this).host;
+  return host === null ? '' : serializeHost(host);
+};
+
+var getPort = function () {
+  var port = getInternalURLState(this).port;
+  return port === null ? '' : String(port);
+};
+
+var getPathname = function () {
+  var url = getInternalURLState(this);
+  var path = url.path;
+  return url.cannotBeABaseURL ? path[0] : path.length ? '/' + path.join('/') : '';
+};
+
+var getSearch = function () {
+  var query = getInternalURLState(this).query;
+  return query ? '?' + query : '';
+};
+
+var getSearchParams = function () {
+  return getInternalURLState(this).searchParams;
+};
+
+var getHash = function () {
+  var fragment = getInternalURLState(this).fragment;
+  return fragment ? '#' + fragment : '';
+};
+
+var accessorDescriptor = function (getter, setter) {
+  return { get: getter, set: setter, configurable: true, enumerable: true };
+};
+
+if (DESCRIPTORS) {
+  defineProperties(URLPrototype, {
+    // `URL.prototype.href` accessors pair
+    // https://url.spec.whatwg.org/#dom-url-href
+    href: accessorDescriptor(serializeURL, function (href) {
+      var url = getInternalURLState(this);
+      var urlString = String(href);
+      var failure = parseURL(url, urlString);
+      if (failure) throw TypeError(failure);
+      getInternalSearchParamsState(url.searchParams).updateSearchParams(url.query);
+    }),
+    // `URL.prototype.origin` getter
+    // https://url.spec.whatwg.org/#dom-url-origin
+    origin: accessorDescriptor(getOrigin),
+    // `URL.prototype.protocol` accessors pair
+    // https://url.spec.whatwg.org/#dom-url-protocol
+    protocol: accessorDescriptor(getProtocol, function (protocol) {
+      var url = getInternalURLState(this);
+      parseURL(url, String(protocol) + ':', SCHEME_START);
+    }),
+    // `URL.prototype.username` accessors pair
+    // https://url.spec.whatwg.org/#dom-url-username
+    username: accessorDescriptor(getUsername, function (username) {
+      var url = getInternalURLState(this);
+      var codePoints = arrayFrom(String(username));
+      if (cannotHaveUsernamePasswordPort(url)) return;
+      url.username = '';
+      for (var i = 0; i < codePoints.length; i++) {
+        url.username += percentEncode(codePoints[i], userinfoPercentEncodeSet);
+      }
+    }),
+    // `URL.prototype.password` accessors pair
+    // https://url.spec.whatwg.org/#dom-url-password
+    password: accessorDescriptor(getPassword, function (password) {
+      var url = getInternalURLState(this);
+      var codePoints = arrayFrom(String(password));
+      if (cannotHaveUsernamePasswordPort(url)) return;
+      url.password = '';
+      for (var i = 0; i < codePoints.length; i++) {
+        url.password += percentEncode(codePoints[i], userinfoPercentEncodeSet);
+      }
+    }),
+    // `URL.prototype.host` accessors pair
+    // https://url.spec.whatwg.org/#dom-url-host
+    host: accessorDescriptor(getHost, function (host) {
+      var url = getInternalURLState(this);
+      if (url.cannotBeABaseURL) return;
+      parseURL(url, String(host), HOST);
+    }),
+    // `URL.prototype.hostname` accessors pair
+    // https://url.spec.whatwg.org/#dom-url-hostname
+    hostname: accessorDescriptor(getHostname, function (hostname) {
+      var url = getInternalURLState(this);
+      if (url.cannotBeABaseURL) return;
+      parseURL(url, String(hostname), HOSTNAME);
+    }),
+    // `URL.prototype.port` accessors pair
+    // https://url.spec.whatwg.org/#dom-url-port
+    port: accessorDescriptor(getPort, function (port) {
+      var url = getInternalURLState(this);
+      if (cannotHaveUsernamePasswordPort(url)) return;
+      port = String(port);
+      if (port == '') url.port = null;
+      else parseURL(url, port, PORT);
+    }),
+    // `URL.prototype.pathname` accessors pair
+    // https://url.spec.whatwg.org/#dom-url-pathname
+    pathname: accessorDescriptor(getPathname, function (pathname) {
+      var url = getInternalURLState(this);
+      if (url.cannotBeABaseURL) return;
+      url.path = [];
+      parseURL(url, pathname + '', PATH_START);
+    }),
+    // `URL.prototype.search` accessors pair
+    // https://url.spec.whatwg.org/#dom-url-search
+    search: accessorDescriptor(getSearch, function (search) {
+      var url = getInternalURLState(this);
+      search = String(search);
+      if (search == '') {
+        url.query = null;
+      } else {
+        if ('?' == search.charAt(0)) search = search.slice(1);
+        url.query = '';
+        parseURL(url, search, QUERY);
+      }
+      getInternalSearchParamsState(url.searchParams).updateSearchParams(url.query);
+    }),
+    // `URL.prototype.searchParams` getter
+    // https://url.spec.whatwg.org/#dom-url-searchparams
+    searchParams: accessorDescriptor(getSearchParams),
+    // `URL.prototype.hash` accessors pair
+    // https://url.spec.whatwg.org/#dom-url-hash
+    hash: accessorDescriptor(getHash, function (hash) {
+      var url = getInternalURLState(this);
+      hash = String(hash);
+      if (hash == '') {
+        url.fragment = null;
+        return;
+      }
+      if ('#' == hash.charAt(0)) hash = hash.slice(1);
+      url.fragment = '';
+      parseURL(url, hash, FRAGMENT);
+    })
+  });
+}
+
+// `URL.prototype.toJSON` method
+// https://url.spec.whatwg.org/#dom-url-tojson
+redefine(URLPrototype, 'toJSON', function toJSON() {
+  return serializeURL.call(this);
+}, { enumerable: true });
+
+// `URL.prototype.toString` method
+// https://url.spec.whatwg.org/#URL-stringification-behavior
+redefine(URLPrototype, 'toString', function toString() {
+  return serializeURL.call(this);
+}, { enumerable: true });
+
+if (NativeURL) {
+  var nativeCreateObjectURL = NativeURL.createObjectURL;
+  var nativeRevokeObjectURL = NativeURL.revokeObjectURL;
+  // `URL.createObjectURL` method
+  // https://developer.mozilla.org/en-US/docs/Web/API/URL/createObjectURL
+  // eslint-disable-next-line no-unused-vars
+  if (nativeCreateObjectURL) redefine(URLConstructor, 'createObjectURL', function createObjectURL(blob) {
+    return nativeCreateObjectURL.apply(NativeURL, arguments);
+  });
+  // `URL.revokeObjectURL` method
+  // https://developer.mozilla.org/en-US/docs/Web/API/URL/revokeObjectURL
+  // eslint-disable-next-line no-unused-vars
+  if (nativeRevokeObjectURL) redefine(URLConstructor, 'revokeObjectURL', function revokeObjectURL(url) {
+    return nativeRevokeObjectURL.apply(NativeURL, arguments);
+  });
+}
+
+setToStringTag(URLConstructor, 'URL');
+
+$({ global: true, forced: !USE_NATIVE_URL, sham: !DESCRIPTORS }, {
+  URL: URLConstructor
+});
+
+},{"../internals/an-instance":6,"../internals/array-from":14,"../internals/descriptors":42,"../internals/export":49,"../internals/global":59,"../internals/has":60,"../internals/internal-state":70,"../internals/native-url":88,"../internals/object-assign":95,"../internals/object-define-properties":97,"../internals/redefine":116,"../internals/set-to-string-tag":125,"../internals/string-multibyte":131,"../internals/string-punycode-to-ascii":134,"../modules/es.string.iterator":295,"../modules/web.url-search-params":370}],372:[function(require,module,exports){
+'use strict';
+var $ = require('../internals/export');
+
+// `URL.prototype.toJSON` method
+// https://url.spec.whatwg.org/#dom-url-tojson
+$({ target: 'URL', proto: true, enumerable: true }, {
+  toJSON: function toJSON() {
+    return URL.prototype.toString.call(this);
+  }
+});
+
+},{"../internals/export":49}],373:[function(require,module,exports){
+require('../es');
+require('../web');
+var path = require('../internals/path');
+
+module.exports = path;
+
+},{"../es":1,"../internals/path":112,"../web":374}],374:[function(require,module,exports){
+require('../modules/web.dom-collections.for-each');
+require('../modules/web.dom-collections.iterator');
+require('../modules/web.immediate');
+require('../modules/web.queue-microtask');
+require('../modules/web.timers');
+require('../modules/web.url');
+require('../modules/web.url.to-json');
+require('../modules/web.url-search-params');
+var path = require('../internals/path');
+
+module.exports = path;
+
+},{"../internals/path":112,"../modules/web.dom-collections.for-each":365,"../modules/web.dom-collections.iterator":366,"../modules/web.immediate":367,"../modules/web.queue-microtask":368,"../modules/web.timers":369,"../modules/web.url":371,"../modules/web.url-search-params":370,"../modules/web.url.to-json":372}],375:[function(require,module,exports){
+/**
+ * Copyright (c) 2014-present, Facebook, Inc.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+var runtime = (function (exports) {
+  "use strict";
+
+  var Op = Object.prototype;
+  var hasOwn = Op.hasOwnProperty;
+  var undefined; // More compressible than void 0.
+  var $Symbol = typeof Symbol === "function" ? Symbol : {};
+  var iteratorSymbol = $Symbol.iterator || "@@iterator";
+  var asyncIteratorSymbol = $Symbol.asyncIterator || "@@asyncIterator";
+  var toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag";
+
+  function wrap(innerFn, outerFn, self, tryLocsList) {
+    // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.
+    var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;
+    var generator = Object.create(protoGenerator.prototype);
+    var context = new Context(tryLocsList || []);
+
+    // The ._invoke method unifies the implementations of the .next,
+    // .throw, and .return methods.
+    generator._invoke = makeInvokeMethod(innerFn, self, context);
+
+    return generator;
+  }
+  exports.wrap = wrap;
+
+  // Try/catch helper to minimize deoptimizations. Returns a completion
+  // record like context.tryEntries[i].completion. This interface could
+  // have been (and was previously) designed to take a closure to be
+  // invoked without arguments, but in all the cases we care about we
+  // already have an existing method we want to call, so there's no need
+  // to create a new function object. We can even get away with assuming
+  // the method takes exactly one argument, since that happens to be true
+  // in every case, so we don't have to touch the arguments object. The
+  // only additional allocation required is the completion record, which
+  // has a stable shape and so hopefully should be cheap to allocate.
+  function tryCatch(fn, obj, arg) {
+    try {
+      return { type: "normal", arg: fn.call(obj, arg) };
+    } catch (err) {
+      return { type: "throw", arg: err };
+    }
+  }
+
+  var GenStateSuspendedStart = "suspendedStart";
+  var GenStateSuspendedYield = "suspendedYield";
+  var GenStateExecuting = "executing";
+  var GenStateCompleted = "completed";
+
+  // Returning this object from the innerFn has the same effect as
+  // breaking out of the dispatch switch statement.
+  var ContinueSentinel = {};
+
+  // Dummy constructor functions that we use as the .constructor and
+  // .constructor.prototype properties for functions that return Generator
+  // objects. For full spec compliance, you may wish to configure your
+  // minifier not to mangle the names of these two functions.
+  function Generator() {}
+  function GeneratorFunction() {}
+  function GeneratorFunctionPrototype() {}
+
+  // This is a polyfill for %IteratorPrototype% for environments that
+  // don't natively support it.
+  var IteratorPrototype = {};
+  IteratorPrototype[iteratorSymbol] = function () {
+    return this;
+  };
+
+  var getProto = Object.getPrototypeOf;
+  var NativeIteratorPrototype = getProto && getProto(getProto(values([])));
+  if (NativeIteratorPrototype &&
+      NativeIteratorPrototype !== Op &&
+      hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {
+    // This environment has a native %IteratorPrototype%; use it instead
+    // of the polyfill.
+    IteratorPrototype = NativeIteratorPrototype;
+  }
+
+  var Gp = GeneratorFunctionPrototype.prototype =
+    Generator.prototype = Object.create(IteratorPrototype);
+  GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;
+  GeneratorFunctionPrototype.constructor = GeneratorFunction;
+  GeneratorFunctionPrototype[toStringTagSymbol] =
+    GeneratorFunction.displayName = "GeneratorFunction";
+
+  // Helper for defining the .next, .throw, and .return methods of the
+  // Iterator interface in terms of a single ._invoke method.
+  function defineIteratorMethods(prototype) {
+    ["next", "throw", "return"].forEach(function(method) {
+      prototype[method] = function(arg) {
+        return this._invoke(method, arg);
+      };
+    });
+  }
+
+  exports.isGeneratorFunction = function(genFun) {
+    var ctor = typeof genFun === "function" && genFun.constructor;
+    return ctor
+      ? ctor === GeneratorFunction ||
+        // For the native GeneratorFunction constructor, the best we can
+        // do is to check its .name property.
+        (ctor.displayName || ctor.name) === "GeneratorFunction"
+      : false;
+  };
+
+  exports.mark = function(genFun) {
+    if (Object.setPrototypeOf) {
+      Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);
+    } else {
+      genFun.__proto__ = GeneratorFunctionPrototype;
+      if (!(toStringTagSymbol in genFun)) {
+        genFun[toStringTagSymbol] = "GeneratorFunction";
+      }
+    }
+    genFun.prototype = Object.create(Gp);
+    return genFun;
+  };
+
+  // Within the body of any async function, `await x` is transformed to
+  // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test
+  // `hasOwn.call(value, "__await")` to determine if the yielded value is
+  // meant to be awaited.
+  exports.awrap = function(arg) {
+    return { __await: arg };
+  };
+
+  function AsyncIterator(generator, PromiseImpl) {
+    function invoke(method, arg, resolve, reject) {
+      var record = tryCatch(generator[method], generator, arg);
+      if (record.type === "throw") {
+        reject(record.arg);
+      } else {
+        var result = record.arg;
+        var value = result.value;
+        if (value &&
+            typeof value === "object" &&
+            hasOwn.call(value, "__await")) {
+          return PromiseImpl.resolve(value.__await).then(function(value) {
+            invoke("next", value, resolve, reject);
+          }, function(err) {
+            invoke("throw", err, resolve, reject);
+          });
+        }
+
+        return PromiseImpl.resolve(value).then(function(unwrapped) {
+          // When a yielded Promise is resolved, its final value becomes
+          // the .value of the Promise<{value,done}> result for the
+          // current iteration.
+          result.value = unwrapped;
+          resolve(result);
+        }, function(error) {
+          // If a rejected Promise was yielded, throw the rejection back
+          // into the async generator function so it can be handled there.
+          return invoke("throw", error, resolve, reject);
+        });
+      }
+    }
+
+    var previousPromise;
+
+    function enqueue(method, arg) {
+      function callInvokeWithMethodAndArg() {
+        return new PromiseImpl(function(resolve, reject) {
+          invoke(method, arg, resolve, reject);
+        });
+      }
+
+      return previousPromise =
+        // If enqueue has been called before, then we want to wait until
+        // all previous Promises have been resolved before calling invoke,
+        // so that results are always delivered in the correct order. If
+        // enqueue has not been called before, then it is important to
+        // call invoke immediately, without waiting on a callback to fire,
+        // so that the async generator function has the opportunity to do
+        // any necessary setup in a predictable way. This predictability
+        // is why the Promise constructor synchronously invokes its
+        // executor callback, and why async functions synchronously
+        // execute code before the first await. Since we implement simple
+        // async functions in terms of async generators, it is especially
+        // important to get this right, even though it requires care.
+        previousPromise ? previousPromise.then(
+          callInvokeWithMethodAndArg,
+          // Avoid propagating failures to Promises returned by later
+          // invocations of the iterator.
+          callInvokeWithMethodAndArg
+        ) : callInvokeWithMethodAndArg();
+    }
+
+    // Define the unified helper method that is used to implement .next,
+    // .throw, and .return (see defineIteratorMethods).
+    this._invoke = enqueue;
+  }
+
+  defineIteratorMethods(AsyncIterator.prototype);
+  AsyncIterator.prototype[asyncIteratorSymbol] = function () {
+    return this;
+  };
+  exports.AsyncIterator = AsyncIterator;
+
+  // Note that simple async functions are implemented on top of
+  // AsyncIterator objects; they just return a Promise for the value of
+  // the final result produced by the iterator.
+  exports.async = function(innerFn, outerFn, self, tryLocsList, PromiseImpl) {
+    if (PromiseImpl === void 0) PromiseImpl = Promise;
+
+    var iter = new AsyncIterator(
+      wrap(innerFn, outerFn, self, tryLocsList),
+      PromiseImpl
+    );
+
+    return exports.isGeneratorFunction(outerFn)
+      ? iter // If outerFn is a generator, return the full iterator.
+      : iter.next().then(function(result) {
+          return result.done ? result.value : iter.next();
+        });
+  };
+
+  function makeInvokeMethod(innerFn, self, context) {
+    var state = GenStateSuspendedStart;
+
+    return function invoke(method, arg) {
+      if (state === GenStateExecuting) {
+        throw new Error("Generator is already running");
+      }
+
+      if (state === GenStateCompleted) {
+        if (method === "throw") {
+          throw arg;
+        }
+
+        // Be forgiving, per 25.3.3.3.3 of the spec:
+        // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume
+        return doneResult();
+      }
+
+      context.method = method;
+      context.arg = arg;
+
+      while (true) {
+        var delegate = context.delegate;
+        if (delegate) {
+          var delegateResult = maybeInvokeDelegate(delegate, context);
+          if (delegateResult) {
+            if (delegateResult === ContinueSentinel) continue;
+            return delegateResult;
+          }
+        }
+
+        if (context.method === "next") {
+          // Setting context._sent for legacy support of Babel's
+          // function.sent implementation.
+          context.sent = context._sent = context.arg;
+
+        } else if (context.method === "throw") {
+          if (state === GenStateSuspendedStart) {
+            state = GenStateCompleted;
+            throw context.arg;
+          }
+
+          context.dispatchException(context.arg);
+
+        } else if (context.method === "return") {
+          context.abrupt("return", context.arg);
+        }
+
+        state = GenStateExecuting;
+
+        var record = tryCatch(innerFn, self, context);
+        if (record.type === "normal") {
+          // If an exception is thrown from innerFn, we leave state ===
+          // GenStateExecuting and loop back for another invocation.
+          state = context.done
+            ? GenStateCompleted
+            : GenStateSuspendedYield;
+
+          if (record.arg === ContinueSentinel) {
+            continue;
+          }
+
+          return {
+            value: record.arg,
+            done: context.done
+          };
+
+        } else if (record.type === "throw") {
+          state = GenStateCompleted;
+          // Dispatch the exception by looping back around to the
+          // context.dispatchException(context.arg) call above.
+          context.method = "throw";
+          context.arg = record.arg;
+        }
+      }
+    };
+  }
+
+  // Call delegate.iterator[context.method](context.arg) and handle the
+  // result, either by returning a { value, done } result from the
+  // delegate iterator, or by modifying context.method and context.arg,
+  // setting context.delegate to null, and returning the ContinueSentinel.
+  function maybeInvokeDelegate(delegate, context) {
+    var method = delegate.iterator[context.method];
+    if (method === undefined) {
+      // A .throw or .return when the delegate iterator has no .throw
+      // method always terminates the yield* loop.
+      context.delegate = null;
+
+      if (context.method === "throw") {
+        // Note: ["return"] must be used for ES3 parsing compatibility.
+        if (delegate.iterator["return"]) {
+          // If the delegate iterator has a return method, give it a
+          // chance to clean up.
+          context.method = "return";
+          context.arg = undefined;
+          maybeInvokeDelegate(delegate, context);
+
+          if (context.method === "throw") {
+            // If maybeInvokeDelegate(context) changed context.method from
+            // "return" to "throw", let that override the TypeError below.
+            return ContinueSentinel;
+          }
+        }
+
+        context.method = "throw";
+        context.arg = new TypeError(
+          "The iterator does not provide a 'throw' method");
+      }
+
+      return ContinueSentinel;
+    }
+
+    var record = tryCatch(method, delegate.iterator, context.arg);
+
+    if (record.type === "throw") {
+      context.method = "throw";
+      context.arg = record.arg;
+      context.delegate = null;
+      return ContinueSentinel;
+    }
+
+    var info = record.arg;
+
+    if (! info) {
+      context.method = "throw";
+      context.arg = new TypeError("iterator result is not an object");
+      context.delegate = null;
+      return ContinueSentinel;
+    }
+
+    if (info.done) {
+      // Assign the result of the finished delegate to the temporary
+      // variable specified by delegate.resultName (see delegateYield).
+      context[delegate.resultName] = info.value;
+
+      // Resume execution at the desired location (see delegateYield).
+      context.next = delegate.nextLoc;
+
+      // If context.method was "throw" but the delegate handled the
+      // exception, let the outer generator proceed normally. If
+      // context.method was "next", forget context.arg since it has been
+      // "consumed" by the delegate iterator. If context.method was
+      // "return", allow the original .return call to continue in the
+      // outer generator.
+      if (context.method !== "return") {
+        context.method = "next";
+        context.arg = undefined;
+      }
+
+    } else {
+      // Re-yield the result returned by the delegate method.
+      return info;
+    }
+
+    // The delegate iterator is finished, so forget it and continue with
+    // the outer generator.
+    context.delegate = null;
+    return ContinueSentinel;
+  }
+
+  // Define Generator.prototype.{next,throw,return} in terms of the
+  // unified ._invoke helper method.
+  defineIteratorMethods(Gp);
+
+  Gp[toStringTagSymbol] = "Generator";
+
+  // A Generator should always return itself as the iterator object when the
+  // @@iterator function is called on it. Some browsers' implementations of the
+  // iterator prototype chain incorrectly implement this, causing the Generator
+  // object to not be returned from this call. This ensures that doesn't happen.
+  // See https://github.com/facebook/regenerator/issues/274 for more details.
+  Gp[iteratorSymbol] = function() {
+    return this;
+  };
+
+  Gp.toString = function() {
+    return "[object Generator]";
+  };
+
+  function pushTryEntry(locs) {
+    var entry = { tryLoc: locs[0] };
+
+    if (1 in locs) {
+      entry.catchLoc = locs[1];
+    }
+
+    if (2 in locs) {
+      entry.finallyLoc = locs[2];
+      entry.afterLoc = locs[3];
+    }
+
+    this.tryEntries.push(entry);
+  }
+
+  function resetTryEntry(entry) {
+    var record = entry.completion || {};
+    record.type = "normal";
+    delete record.arg;
+    entry.completion = record;
+  }
+
+  function Context(tryLocsList) {
+    // The root entry object (effectively a try statement without a catch
+    // or a finally block) gives us a place to store values thrown from
+    // locations where there is no enclosing try statement.
+    this.tryEntries = [{ tryLoc: "root" }];
+    tryLocsList.forEach(pushTryEntry, this);
+    this.reset(true);
+  }
+
+  exports.keys = function(object) {
+    var keys = [];
+    for (var key in object) {
+      keys.push(key);
+    }
+    keys.reverse();
+
+    // Rather than returning an object with a next method, we keep
+    // things simple and return the next function itself.
+    return function next() {
+      while (keys.length) {
+        var key = keys.pop();
+        if (key in object) {
+          next.value = key;
+          next.done = false;
+          return next;
+        }
+      }
+
+      // To avoid creating an additional object, we just hang the .value
+      // and .done properties off the next function object itself. This
+      // also ensures that the minifier will not anonymize the function.
+      next.done = true;
+      return next;
+    };
+  };
+
+  function values(iterable) {
+    if (iterable) {
+      var iteratorMethod = iterable[iteratorSymbol];
+      if (iteratorMethod) {
+        return iteratorMethod.call(iterable);
+      }
+
+      if (typeof iterable.next === "function") {
+        return iterable;
+      }
+
+      if (!isNaN(iterable.length)) {
+        var i = -1, next = function next() {
+          while (++i < iterable.length) {
+            if (hasOwn.call(iterable, i)) {
+              next.value = iterable[i];
+              next.done = false;
+              return next;
+            }
+          }
+
+          next.value = undefined;
+          next.done = true;
+
+          return next;
+        };
+
+        return next.next = next;
+      }
+    }
+
+    // Return an iterator with no values.
+    return { next: doneResult };
+  }
+  exports.values = values;
+
+  function doneResult() {
+    return { value: undefined, done: true };
+  }
+
+  Context.prototype = {
+    constructor: Context,
+
+    reset: function(skipTempReset) {
+      this.prev = 0;
+      this.next = 0;
+      // Resetting context._sent for legacy support of Babel's
+      // function.sent implementation.
+      this.sent = this._sent = undefined;
+      this.done = false;
+      this.delegate = null;
+
+      this.method = "next";
+      this.arg = undefined;
+
+      this.tryEntries.forEach(resetTryEntry);
+
+      if (!skipTempReset) {
+        for (var name in this) {
+          // Not sure about the optimal order of these conditions:
+          if (name.charAt(0) === "t" &&
+              hasOwn.call(this, name) &&
+              !isNaN(+name.slice(1))) {
+            this[name] = undefined;
+          }
+        }
+      }
+    },
+
+    stop: function() {
+      this.done = true;
+
+      var rootEntry = this.tryEntries[0];
+      var rootRecord = rootEntry.completion;
+      if (rootRecord.type === "throw") {
+        throw rootRecord.arg;
+      }
+
+      return this.rval;
+    },
+
+    dispatchException: function(exception) {
+      if (this.done) {
+        throw exception;
+      }
+
+      var context = this;
+      function handle(loc, caught) {
+        record.type = "throw";
+        record.arg = exception;
+        context.next = loc;
+
+        if (caught) {
+          // If the dispatched exception was caught by a catch block,
+          // then let that catch block handle the exception normally.
+          context.method = "next";
+          context.arg = undefined;
+        }
+
+        return !! caught;
+      }
+
+      for (var i = this.tryEntries.length - 1; i >= 0; --i) {
+        var entry = this.tryEntries[i];
+        var record = entry.completion;
+
+        if (entry.tryLoc === "root") {
+          // Exception thrown outside of any try block that could handle
+          // it, so set the completion value of the entire function to
+          // throw the exception.
+          return handle("end");
+        }
+
+        if (entry.tryLoc <= this.prev) {
+          var hasCatch = hasOwn.call(entry, "catchLoc");
+          var hasFinally = hasOwn.call(entry, "finallyLoc");
+
+          if (hasCatch && hasFinally) {
+            if (this.prev < entry.catchLoc) {
+              return handle(entry.catchLoc, true);
+            } else if (this.prev < entry.finallyLoc) {
+              return handle(entry.finallyLoc);
+            }
+
+          } else if (hasCatch) {
+            if (this.prev < entry.catchLoc) {
+              return handle(entry.catchLoc, true);
+            }
+
+          } else if (hasFinally) {
+            if (this.prev < entry.finallyLoc) {
+              return handle(entry.finallyLoc);
+            }
+
+          } else {
+            throw new Error("try statement without catch or finally");
+          }
+        }
+      }
+    },
+
+    abrupt: function(type, arg) {
+      for (var i = this.tryEntries.length - 1; i >= 0; --i) {
+        var entry = this.tryEntries[i];
+        if (entry.tryLoc <= this.prev &&
+            hasOwn.call(entry, "finallyLoc") &&
+            this.prev < entry.finallyLoc) {
+          var finallyEntry = entry;
+          break;
+        }
+      }
+
+      if (finallyEntry &&
+          (type === "break" ||
+           type === "continue") &&
+          finallyEntry.tryLoc <= arg &&
+          arg <= finallyEntry.finallyLoc) {
+        // Ignore the finally entry if control is not jumping to a
+        // location outside the try/catch block.
+        finallyEntry = null;
+      }
+
+      var record = finallyEntry ? finallyEntry.completion : {};
+      record.type = type;
+      record.arg = arg;
+
+      if (finallyEntry) {
+        this.method = "next";
+        this.next = finallyEntry.finallyLoc;
+        return ContinueSentinel;
+      }
+
+      return this.complete(record);
+    },
+
+    complete: function(record, afterLoc) {
+      if (record.type === "throw") {
+        throw record.arg;
+      }
+
+      if (record.type === "break" ||
+          record.type === "continue") {
+        this.next = record.arg;
+      } else if (record.type === "return") {
+        this.rval = this.arg = record.arg;
+        this.method = "return";
+        this.next = "end";
+      } else if (record.type === "normal" && afterLoc) {
+        this.next = afterLoc;
+      }
+
+      return ContinueSentinel;
+    },
+
+    finish: function(finallyLoc) {
+      for (var i = this.tryEntries.length - 1; i >= 0; --i) {
+        var entry = this.tryEntries[i];
+        if (entry.finallyLoc === finallyLoc) {
+          this.complete(entry.completion, entry.afterLoc);
+          resetTryEntry(entry);
+          return ContinueSentinel;
+        }
+      }
+    },
+
+    "catch": function(tryLoc) {
+      for (var i = this.tryEntries.length - 1; i >= 0; --i) {
+        var entry = this.tryEntries[i];
+        if (entry.tryLoc === tryLoc) {
+          var record = entry.completion;
+          if (record.type === "throw") {
+            var thrown = record.arg;
+            resetTryEntry(entry);
+          }
+          return thrown;
+        }
+      }
+
+      // The context.catch method must only be called with a location
+      // argument that corresponds to a known catch block.
+      throw new Error("illegal catch attempt");
+    },
+
+    delegateYield: function(iterable, resultName, nextLoc) {
+      this.delegate = {
+        iterator: values(iterable),
+        resultName: resultName,
+        nextLoc: nextLoc
+      };
+
+      if (this.method === "next") {
+        // Deliberately forget the last sent value so that we don't
+        // accidentally pass it on to the delegate.
+        this.arg = undefined;
+      }
+
+      return ContinueSentinel;
+    }
+  };
+
+  // Regardless of whether this script is executing as a CommonJS module
+  // or not, return the runtime object so that we can declare the variable
+  // regeneratorRuntime in the outer scope, which allows this module to be
+  // injected easily by `bin/regenerator --include-runtime script.js`.
+  return exports;
+
+}(
+  // If this script is executing as a CommonJS module, use module.exports
+  // as the regeneratorRuntime namespace. Otherwise create a new empty
+  // object. Either way, the resulting object will be used to initialize
+  // the regeneratorRuntime variable at the top of this file.
+  typeof module === "object" ? module.exports : {}
+));
+
+try {
+  regeneratorRuntime = runtime;
+} catch (accidentalStrictMode) {
+  // This module should not be running in strict mode, so the above
+  // assignment should always work unless something is misconfigured. Just
+  // in case runtime.js accidentally runs in strict mode, we can escape
+  // strict mode using a global Function call. This could conceivably fail
+  // if a Content Security Policy forbids using Function, but in that case
+  // the proper solution is to fix the accidental strict mode problem. If
+  // you've misconfigured your bundler to force strict mode and applied a
+  // CSP to forbid Function, and you're not willing to fix either of those
+  // problems, please detail your unique predicament in a GitHub issue.
+  Function("r", "regeneratorRuntime = r")(runtime);
+}
+
+},{}],376:[function(require,module,exports){
+(function (global){(function (){
+"use strict";
+
+require("core-js/stable");
+
+require("regenerator-runtime/runtime");
+
+function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
+
+(function (self, undefined) {
+  function Call(t, l) {
+    var n = arguments.length > 2 ? arguments[2] : [];
+    if (!1 === IsCallable(t)) throw new TypeError(Object.prototype.toString.call(t) + "is not a function.");
+    return t.apply(l, n);
+  }
+
+  function CreateMethodProperty(e, r, t) {
+    var a = {
+      value: t,
+      writable: !0,
+      enumerable: !1,
+      configurable: !0
+    };
+    Object.defineProperty(e, r, a);
+  }
+
+  function Get(n, t) {
+    return n[t];
+  }
+
+  function IsCallable(n) {
+    return "function" == typeof n;
+  }
+
+  function SameValueNonNumber(e, n) {
+    return e === n;
+  }
+
+  function ToInteger(n) {
+    var i = Number(n);
+    return isNaN(i) ? 0 : 1 / i === Infinity || 1 / i == -Infinity || i === Infinity || i === -Infinity ? i : (i < 0 ? -1 : 1) * Math.floor(Math.abs(i));
+  }
+
+  function ToLength(n) {
+    var t = ToInteger(n);
+    return t <= 0 ? 0 : Math.min(t, Math.pow(2, 53) - 1);
+  }
+
+  function ToObject(e) {
+    if (null === e || e === undefined) throw TypeError();
+    return Object(e);
+  }
+
+  function GetV(t, e) {
+    return ToObject(t)[e];
+  }
+
+  function GetMethod(e, n) {
+    var r = GetV(e, n);
+    if (null === r || r === undefined) return undefined;
+    if (!1 === IsCallable(r)) throw new TypeError("Method not callable: " + n);
+    return r;
+  }
+
+  function Type(e) {
+    switch (_typeof(e)) {
+      case "undefined":
+        return "undefined";
+
+      case "boolean":
+        return "boolean";
+
+      case "number":
+        return "number";
+
+      case "string":
+        return "string";
+
+      case "symbol":
+        return "symbol";
+
+      default:
+        return null === e ? "null" : "Symbol" in self && (e instanceof self.Symbol || e.constructor === self.Symbol) ? "symbol" : "object";
+    }
+  }
+
+  function OrdinaryToPrimitive(r, t) {
+    if ("string" === t) var e = ["toString", "valueOf"];else e = ["valueOf", "toString"];
+
+    for (var i = 0; i < e.length; ++i) {
+      var n = e[i],
+          a = Get(r, n);
+
+      if (IsCallable(a)) {
+        var o = Call(a, r);
+        if ("object" !== Type(o)) return o;
+      }
+    }
+
+    throw new TypeError("Cannot convert to primitive.");
+  }
+
+  function SameValueZero(n, e) {
+    return Type(n) === Type(e) && ("number" === Type(n) ? !(!isNaN(n) || !isNaN(e)) || 1 / n === Infinity && 1 / e == -Infinity || 1 / n == -Infinity && 1 / e === Infinity || n === e : SameValueNonNumber(n, e));
+  }
+
+  function ToPrimitive(e) {
+    var t = arguments.length > 1 ? arguments[1] : undefined;
+
+    if ("object" === Type(e)) {
+      if (arguments.length < 2) var i = "default";else t === String ? i = "string" : t === Number && (i = "number");
+      var r = "function" == typeof self.Symbol && "symbol" == _typeof(self.Symbol.toPrimitive) ? GetMethod(e, self.Symbol.toPrimitive) : undefined;
+
+      if (r !== undefined) {
+        var n = Call(r, e, [i]);
+        if ("object" !== Type(n)) return n;
+        throw new TypeError("Cannot convert exotic object to primitive.");
+      }
+
+      return "default" === i && (i = "number"), OrdinaryToPrimitive(e, i);
+    }
+
+    return e;
+  }
+
+  function ToString(t) {
+    switch (Type(t)) {
+      case "symbol":
+        throw new TypeError("Cannot convert a Symbol value to a string");
+
+      case "object":
+        return ToString(ToPrimitive(t, String));
+
+      default:
+        return String(t);
+    }
+  }
+
+  CreateMethodProperty(Array.prototype, "includes", function e(r) {
+    "use strict";
+
+    var t = ToObject(this),
+        o = ToLength(Get(t, "length"));
+    if (0 === o) return !1;
+    var n = ToInteger(arguments[1]);
+    if (n >= 0) var a = n;else (a = o + n) < 0 && (a = 0);
+
+    for (; a < o;) {
+      var i = Get(t, ToString(a));
+      if (SameValueZero(r, i)) return !0;
+      a += 1;
+    }
+
+    return !1;
+  });
+  !function () {
+    function e(e, t) {
+      if (!e) throw new Error("Not enough arguments");
+      var n;
+
+      if ("createEvent" in document) {
+        n = document.createEvent("Event");
+        var o = !(!t || t.bubbles === undefined) && t.bubbles,
+            i = !(!t || t.cancelable === undefined) && t.cancelable;
+        return n.initEvent(e, o, i), n;
+      }
+
+      return n = document.createEventObject(), n.type = e, n.bubbles = !(!t || t.bubbles === undefined) && t.bubbles, n.cancelable = !(!t || t.cancelable === undefined) && t.cancelable, n;
+    }
+
+    var t = {
+      click: 1,
+      dblclick: 1,
+      keyup: 1,
+      keypress: 1,
+      keydown: 1,
+      mousedown: 1,
+      mouseup: 1,
+      mousemove: 1,
+      mouseover: 1,
+      mouseenter: 1,
+      mouseleave: 1,
+      mouseout: 1,
+      storage: 1,
+      storagecommit: 1,
+      textinput: 1
+    };
+
+    if ("undefined" != typeof document && "undefined" != typeof window) {
+      var n = window.Event && window.Event.prototype || null;
+      e.NONE = 0, e.CAPTURING_PHASE = 1, e.AT_TARGET = 2, e.BUBBLING_PHASE = 3, window.Event = Window.prototype.Event = e, n && Object.defineProperty(window.Event, "prototype", {
+        configurable: !1,
+        enumerable: !1,
+        writable: !0,
+        value: n
+      }), "createEvent" in document || (window.addEventListener = Window.prototype.addEventListener = Document.prototype.addEventListener = Element.prototype.addEventListener = function o() {
+        var e = this,
+            n = arguments[0],
+            o = arguments[1];
+        if (e === window && n in t) throw new Error("In IE8 the event: " + n + " is not available on the window object. Please see https://github.com/Financial-Times/polyfill-service/issues/317 for more information.");
+        e._events || (e._events = {}), e._events[n] || (e._events[n] = function (t) {
+          var n,
+              o = e._events[t.type].list,
+              i = o.slice(),
+              r = -1,
+              c = i.length;
+
+          for (t.preventDefault = function a() {
+            !1 !== t.cancelable && (t.returnValue = !1);
+          }, t.stopPropagation = function l() {
+            t.cancelBubble = !0;
+          }, t.stopImmediatePropagation = function s() {
+            t.cancelBubble = !0, t.cancelImmediate = !0;
+          }, t.currentTarget = e, t.relatedTarget = t.fromElement || null, t.target = t.target || t.srcElement || e, t.timeStamp = new Date().getTime(), t.clientX && (t.pageX = t.clientX + document.documentElement.scrollLeft, t.pageY = t.clientY + document.documentElement.scrollTop); ++r < c && !t.cancelImmediate;) {
+            r in i && (n = i[r], o.includes(n) && "function" == typeof n && n.call(e, t));
+          }
+        }, e._events[n].list = [], e.attachEvent && e.attachEvent("on" + n, e._events[n])), e._events[n].list.push(o);
+      }, window.removeEventListener = Window.prototype.removeEventListener = Document.prototype.removeEventListener = Element.prototype.removeEventListener = function i() {
+        var e,
+            t = this,
+            n = arguments[0],
+            o = arguments[1];
+        t._events && t._events[n] && t._events[n].list && -1 !== (e = t._events[n].list.indexOf(o)) && (t._events[n].list.splice(e, 1), t._events[n].list.length || (t.detachEvent && t.detachEvent("on" + n, t._events[n]), delete t._events[n]));
+      }, window.dispatchEvent = Window.prototype.dispatchEvent = Document.prototype.dispatchEvent = Element.prototype.dispatchEvent = function r(e) {
+        if (!arguments.length) throw new Error("Not enough arguments");
+        if (!e || "string" != typeof e.type) throw new Error("DOM Events Exception 0");
+        var t = this,
+            n = e.type;
+
+        try {
+          if (!e.bubbles) {
+            e.cancelBubble = !0;
+
+            var o = function o(e) {
+              e.cancelBubble = !0, (t || window).detachEvent("on" + n, o);
+            };
+
+            this.attachEvent("on" + n, o);
+          }
+
+          this.fireEvent("on" + n, e);
+        } catch (i) {
+          e.target = t;
+
+          do {
+            e.currentTarget = t, "_events" in t && "function" == typeof t._events[n] && t._events[n].call(t, e), "function" == typeof t["on" + n] && t["on" + n].call(t, e), t = 9 === t.nodeType ? t.parentWindow : t.parentNode;
+          } while (t && !e.cancelBubble);
+        }
+
+        return !0;
+      }, document.attachEvent("onreadystatechange", function () {
+        "complete" === document.readyState && document.dispatchEvent(new e("DOMContentLoaded", {
+          bubbles: !0
+        }));
+      }));
+    }
+  }();
+  self.CustomEvent = function e(t, n) {
+    if (!t) throw Error('TypeError: Failed to construct "CustomEvent": An event name must be provided.');
+    var l;
+    if (n = n || {
+      bubbles: !1,
+      cancelable: !1,
+      detail: null
+    }, "createEvent" in document) try {
+      l = document.createEvent("CustomEvent"), l.initCustomEvent(t, n.bubbles, n.cancelable, n.detail);
+    } catch (a) {
+      l = document.createEvent("Event"), l.initEvent(t, n.bubbles, n.cancelable), l.detail = n.detail;
+    } else l = new Event(t, n), l.detail = n && n.detail || null;
+    return l;
+  }, CustomEvent.prototype = Event.prototype;
+})('object' === (typeof window === "undefined" ? "undefined" : _typeof(window)) && window || 'object' === (typeof self === "undefined" ? "undefined" : _typeof(self)) && self || 'object' === (typeof global === "undefined" ? "undefined" : _typeof(global)) && global || {});
+
+require('./simple-lightbox');
+
+}).call(this)}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
+},{"./simple-lightbox":377,"core-js/stable":373,"regenerator-runtime/runtime":375}],377:[function(require,module,exports){
+(function (global){(function (){
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports["default"] = void 0;
+
+function _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
+
+function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
+
+function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
+
+function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
+
+function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
+
+var SimpleLightbox = /*#__PURE__*/function () {
+  function SimpleLightbox(elements, options) {
+    var _this = this;
+
+    _classCallCheck(this, SimpleLightbox);
+
+    _defineProperty(this, "defaultOptions", {
+      sourceAttr: 'href',
+      overlay: true,
+      spinner: true,
+      nav: true,
+      navText: ['&lsaquo;', '&rsaquo;'],
+      captions: true,
+      captionDelay: 0,
+      captionSelector: 'img',
+      captionType: 'attr',
+      captionsData: 'title',
+      captionPosition: 'bottom',
+      captionClass: '',
+      close: true,
+      closeText: '&times;',
+      swipeClose: true,
+      showCounter: true,
+      fileExt: 'png|jpg|jpeg|gif|webp',
+      animationSlide: true,
+      animationSpeed: 250,
+      preloading: true,
+      enableKeyboard: true,
+      loop: true,
+      rel: false,
+      docClose: true,
+      swipeTolerance: 50,
+      className: 'simple-lightbox',
+      widthRatio: 0.8,
+      heightRatio: 0.9,
+      scaleImageToRatio: false,
+      disableRightClick: false,
+      disableScroll: true,
+      alertError: true,
+      alertErrorMessage: 'Image not found, next image will be loaded',
+      additionalHtml: false,
+      history: true,
+      throttleInterval: 0,
+      doubleTapZoom: 2,
+      maxZoom: 10,
+      htmlClass: 'has-lightbox',
+      rtl: false,
+      fixedClass: 'sl-fixed',
+      fadeSpeed: 300,
+      uniqueImages: true,
+      focus: true
+    });
+
+    _defineProperty(this, "transitionPrefix", void 0);
+
+    _defineProperty(this, "transitionCapable", false);
+
+    _defineProperty(this, "isTouchDevice", 'ontouchstart' in window);
+
+    _defineProperty(this, "initialLocationHash", void 0);
+
+    _defineProperty(this, "pushStateSupport", 'pushState' in history);
+
+    _defineProperty(this, "isOpen", false);
+
+    _defineProperty(this, "isAnimating", false);
+
+    _defineProperty(this, "isClosing", false);
+
+    _defineProperty(this, "isFadeIn", false);
+
+    _defineProperty(this, "urlChangedOnce", false);
+
+    _defineProperty(this, "hashReseted", false);
+
+    _defineProperty(this, "historyHasChanges", false);
+
+    _defineProperty(this, "historyUpdateTimeout", null);
+
+    _defineProperty(this, "currentImage", void 0);
+
+    _defineProperty(this, "eventNamespace", 'simplelightbox');
+
+    _defineProperty(this, "domNodes", {});
+
+    _defineProperty(this, "loadedImages", []);
+
+    _defineProperty(this, "initialImageIndex", 0);
+
+    _defineProperty(this, "currentImageIndex", 0);
+
+    _defineProperty(this, "initialSelector", null);
+
+    _defineProperty(this, "globalScrollbarWidth", 0);
+
+    _defineProperty(this, "controlCoordinates", {
+      swipeDiff: 0,
+      swipeYDiff: 0,
+      swipeStart: 0,
+      swipeEnd: 0,
+      swipeYStart: 0,
+      swipeYEnd: 0,
+      mousedown: false,
+      imageLeft: 0,
+      zoomed: false,
+      containerHeight: 0,
+      containerWidth: 0,
+      containerOffsetX: 0,
+      containerOffsetY: 0,
+      imgHeight: 0,
+      imgWidth: 0,
+      capture: false,
+      initialOffsetX: 0,
+      initialOffsetY: 0,
+      initialPointerOffsetX: 0,
+      initialPointerOffsetY: 0,
+      initialPointerOffsetX2: 0,
+      initialPointerOffsetY2: 0,
+      initialScale: 1,
+      initialPinchDistance: 0,
+      pointerOffsetX: 0,
+      pointerOffsetY: 0,
+      pointerOffsetX2: 0,
+      pointerOffsetY2: 0,
+      targetOffsetX: 0,
+      targetOffsetY: 0,
+      targetScale: 0,
+      pinchOffsetX: 0,
+      pinchOffsetY: 0,
+      limitOffsetX: 0,
+      limitOffsetY: 0,
+      scaleDifference: 0,
+      targetPinchDistance: 0,
+      touchCount: 0,
+      doubleTapped: false,
+      touchmoveCount: 0
+    });
+
+    this.options = Object.assign(this.defaultOptions, options);
+
+    if (typeof elements === 'string') {
+      this.initialSelector = elements;
+      this.elements = Array.from(document.querySelectorAll(elements));
+    } else {
+      this.elements = typeof elements.length !== 'undefined' && elements.length > 0 ? Array.from(elements) : [elements];
+    }
+
+    this.relatedElements = [];
+    this.transitionPrefix = this.calculateTransitionPrefix();
+    this.transitionCapable = this.transitionPrefix !== false;
+    this.initialLocationHash = this.hash; // this should be handled by attribute selector IMHO! => 'a[rel=bla]'...
+
+    if (this.options.rel) {
+      this.elements = this.getRelated(this.options.rel);
+    }
+
+    if (this.options.uniqueImages) {
+      var imgArr = [];
+      this.elements = Array.from(this.elements).filter(function (element) {
+        var src = element.getAttribute(_this.options.sourceAttr);
+
+        if (imgArr.indexOf(src) === -1) {
+          imgArr.push(src);
+          return true;
+        }
+
+        return false;
+      });
+    }
+
+    this.createDomNodes();
+
+    if (this.options.close) {
+      this.domNodes.wrapper.appendChild(this.domNodes.closeButton);
+    }
+
+    if (this.options.nav) {
+      this.domNodes.wrapper.appendChild(this.domNodes.navigation);
+    }
+
+    if (this.options.spinner) {
+      this.domNodes.wrapper.appendChild(this.domNodes.spinner);
+    }
+
+    this.addEventListener(this.elements, 'click.' + this.eventNamespace, function (event) {
+      if (_this.isValidLink(event.currentTarget)) {
+        event.preventDefault();
+
+        if (_this.isAnimating) {
+          return false;
+        }
+
+        _this.initialImageIndex = _this.elements.indexOf(event.currentTarget);
+
+        _this.openImage(event.currentTarget);
+      }
+    }); // close addEventListener click addEventListener doc
+
+    if (this.options.docClose) {
+      this.addEventListener(this.domNodes.wrapper, ['click.' + this.eventNamespace, 'touchstart.' + this.eventNamespace], function (event) {
+        if (_this.isOpen && event.target === event.currentTarget) {
+          _this.close();
+        }
+      });
+    } // disable rightclick
+
+
+    if (this.options.disableRightClick) {
+      this.addEventListener(document.body, 'contextmenu.' + this.eventNamespace, function (event) {
+        if (event.target.classList.contains('sl-overlay')) {
+          event.preventDefault();
+        }
+      });
+    } // keyboard-control
+
+
+    if (this.options.enableKeyboard) {
+      this.addEventListener(document.body, 'keyup.' + this.eventNamespace, this.throttle(function (event) {
+        _this.controlCoordinates.swipeDiff = 0; // keyboard control only if lightbox is open
+
+        if (_this.isAnimating && event.key === 'Escape') {
+          _this.currentImage.setAttribute('src', '');
+
+          _this.isAnimating = false;
+          return _this.close();
+        }
+
+        if (_this.isOpen) {
+          event.preventDefault();
+
+          if (event.key === 'Escape') {
+            _this.close();
+          }
+
+          if (!_this.isAnimating && ['ArrowLeft', 'ArrowRight'].indexOf(event.key) > -1) {
+            _this.loadImage(event.key === 'ArrowRight' ? 1 : -1);
+          }
+        }
+      }, this.options.throttleInterval));
+    }
+
+    this.addEvents();
+  }
+
+  _createClass(SimpleLightbox, [{
+    key: "createDomNodes",
+    value: function createDomNodes() {
+      this.domNodes.overlay = document.createElement('div');
+      this.domNodes.overlay.classList.add('sl-overlay');
+      this.domNodes.overlay.dataset.opacityTarget = ".7";
+      this.domNodes.closeButton = document.createElement('button');
+      this.domNodes.closeButton.classList.add('sl-close');
+      this.domNodes.closeButton.innerHTML = this.options.closeText;
+      this.domNodes.spinner = document.createElement('div');
+      this.domNodes.spinner.classList.add('sl-spinner');
+      this.domNodes.spinner.innerHTML = '<div></div>';
+      this.domNodes.navigation = document.createElement('div');
+      this.domNodes.navigation.classList.add('sl-navigation');
+      this.domNodes.navigation.innerHTML = "<button class=\"sl-prev\">".concat(this.options.navText[0], "</button><button class=\"sl-next\">").concat(this.options.navText[1], "</button>");
+      this.domNodes.counter = document.createElement('div');
+      this.domNodes.counter.classList.add('sl-counter');
+      this.domNodes.counter.innerHTML = '<span class="sl-current"></span>/<span class="sl-total"></span>';
+      this.domNodes.caption = document.createElement('div');
+      this.domNodes.caption.classList.add('sl-caption', 'pos-' + this.options.captionPosition);
+
+      if (this.options.captionClass) {
+        this.domNodes.caption.classList.add(this.options.captionClass);
+      }
+
+      this.domNodes.image = document.createElement('div');
+      this.domNodes.image.classList.add('sl-image');
+      this.domNodes.wrapper = document.createElement('div');
+      this.domNodes.wrapper.classList.add('sl-wrapper');
+      this.domNodes.wrapper.setAttribute('tabindex', -1);
+      this.domNodes.wrapper.setAttribute('role', 'dialog');
+      this.domNodes.wrapper.setAttribute('aria-hidden', false);
+
+      if (this.options.className) {
+        this.domNodes.wrapper.classList.add(this.options.className);
+      }
+
+      if (this.options.rtl) {
+        this.domNodes.wrapper.classList.add('sl-dir-rtl');
+      }
+    }
+  }, {
+    key: "throttle",
+    value: function throttle(func, limit) {
+      var inThrottle;
+      return function () {
+        if (!inThrottle) {
+          func.apply(this, arguments);
+          inThrottle = true;
+          setTimeout(function () {
+            return inThrottle = false;
+          }, limit);
+        }
+      };
+    }
+  }, {
+    key: "isValidLink",
+    value: function isValidLink(element) {
+      return !this.options.fileExt || 'pathname' in element && new RegExp('(' + this.options.fileExt + ')$', 'i').test(element.pathname);
+    }
+  }, {
+    key: "calculateTransitionPrefix",
+    value: function calculateTransitionPrefix() {
+      var s = (document.body || document.documentElement).style;
+      return 'transition' in s ? '' : 'WebkitTransition' in s ? '-webkit-' : 'MozTransition' in s ? '-moz-' : 'OTransition' in s ? '-o' : false;
+    }
+  }, {
+    key: "toggleScrollbar",
+    value: function toggleScrollbar(type) {
+      var scrollbarWidth = 0;
+      var fixedElements = [].slice.call(document.querySelectorAll('.' + this.options.fixedClass));
+
+      if (type === 'hide') {
+        var fullWindowWidth = window.innerWidth;
+
+        if (!fullWindowWidth) {
+          var documentElementRect = document.documentElement.getBoundingClientRect();
+          fullWindowWidth = documentElementRect.right - Math.abs(documentElementRect.left);
+        }
+
+        if (document.body.clientWidth < fullWindowWidth) {
+          var scrollDiv = document.createElement('div'),
+              paddingRight = parseInt(document.body.style.paddingRight || 0, 10);
+          scrollDiv.classList.add('sl-scrollbar-measure');
+          document.body.appendChild(scrollDiv);
+          scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth;
+          document.body.removeChild(scrollDiv);
+          document.body.dataset.originalPaddingRight = paddingRight;
+
+          if (scrollbarWidth > 0) {
+            document.body.classList.add('hidden-scroll');
+            document.body.style.paddingRight = paddingRight + scrollbarWidth + 'px';
+            fixedElements.forEach(function (element) {
+              var actualPadding = element.style.paddingRight;
+              var calculatedPadding = window.getComputedStyle(element)['padding-right'];
+              element.dataset.originalPaddingRight = actualPadding;
+              element.style.paddingRight = "".concat(parseFloat(calculatedPadding) + scrollbarWidth, "px");
+            });
+          }
+        }
+      } else {
+        document.body.classList.remove('hidden-scroll');
+        document.body.style.paddingRight = document.body.dataset.originalPaddingRight;
+        fixedElements.forEach(function (element) {
+          var padding = element.dataset.originalPaddingRight;
+
+          if (typeof padding !== 'undefined') {
+            element.style.paddingRight = padding;
+          }
+        });
+      }
+
+      return scrollbarWidth;
+    }
+  }, {
+    key: "close",
+    value: function close() {
+      var _this2 = this;
+
+      if (!this.isOpen || this.isAnimating || this.isClosing) {
+        return false;
+      }
+
+      this.isClosing = true;
+      var element = this.relatedElements[this.currentImageIndex];
+      element.dispatchEvent(new Event('close.simplelightbox'));
+
+      if (this.options.history) {
+        this.historyHasChanges = false;
+
+        if (!this.hashReseted) {
+          this.resetHash();
+        }
+      }
+
+      this.removeEventListener(document, 'focusin.' + this.eventNamespace);
+      this.fadeOut(document.querySelectorAll('.sl-image img, .sl-overlay, .sl-close, .sl-navigation, .sl-image .sl-caption, .sl-counter'), this.options.fadeSpeed, function () {
+        if (_this2.options.disableScroll) {
+          _this2.toggleScrollbar('show');
+        }
+
+        if (_this2.options.htmlClass && _this2.options.htmlClass !== '') {
+          document.querySelector('html').classList.remove(_this2.options.htmlClass);
+        }
+
+        document.body.removeChild(_this2.domNodes.wrapper);
+        document.body.removeChild(_this2.domNodes.overlay);
+        _this2.domNodes.additionalHtml = null;
+        element.dispatchEvent(new Event('closed.simplelightbox'));
+        _this2.isClosing = false;
+      });
+      this.currentImage = null;
+      this.isOpen = false;
+      this.isAnimating = false; // reset touchcontrol coordinates
+
+      for (var key in this.controlCoordinates) {
+        this.controlCoordinates[key] = 0;
+      }
+
+      this.controlCoordinates.mousedown = false;
+      this.controlCoordinates.zoomed = false;
+      this.controlCoordinates.capture = false;
+      this.controlCoordinates.initialScale = this.minMax(1, 1, this.options.maxZoom);
+      this.controlCoordinates.doubleTapped = false;
+    }
+  }, {
+    key: "preload",
+    value: function preload() {
+      var _this3 = this;
+
+      var index = this.currentImageIndex,
+          length = this.relatedElements.length,
+          next = index + 1 < 0 ? length - 1 : index + 1 >= length - 1 ? 0 : index + 1,
+          prev = index - 1 < 0 ? length - 1 : index - 1 >= length - 1 ? 0 : index - 1,
+          nextImage = new Image(),
+          prevImage = new Image();
+      nextImage.addEventListener('load', function (event) {
+        var src = event.target.getAttribute('src');
+
+        if (_this3.loadedImages.indexOf(src) === -1) {
+          //is this condition even required... setting multiple times will not change usage...
+          _this3.loadedImages.push(src);
+        }
+
+        _this3.relatedElements[index].dispatchEvent(new Event('nextImageLoaded.' + _this3.eventNamespace));
+      });
+      nextImage.setAttribute('src', this.relatedElements[next].getAttribute(this.options.sourceAttr));
+      prevImage.addEventListener('load', function (event) {
+        var src = event.target.getAttribute('src');
+
+        if (_this3.loadedImages.indexOf(src) === -1) {
+          _this3.loadedImages.push(src);
+        }
+
+        _this3.relatedElements[index].dispatchEvent(new Event('prevImageLoaded.' + _this3.eventNamespace));
+      });
+      prevImage.setAttribute('src', this.relatedElements[prev].getAttribute(this.options.sourceAttr));
+    }
+  }, {
+    key: "loadImage",
+    value: function loadImage(direction) {
+      var _this4 = this;
+
+      var slideDirection = direction;
+
+      if (this.options.rtl) {
+        direction = -direction;
+      }
+
+      this.relatedElements[this.currentImageIndex].dispatchEvent(new Event('change.' + this.eventNamespace));
+      this.relatedElements[this.currentImageIndex].dispatchEvent(new Event((direction === 1 ? 'next' : 'prev') + '.' + this.eventNamespace));
+      var newIndex = this.currentImageIndex + direction;
+
+      if (this.isAnimating || (newIndex < 0 || newIndex >= this.relatedElements.length) && this.options.loop === false) {
+        return false;
+      }
+
+      this.currentImageIndex = newIndex < 0 ? this.relatedElements.length - 1 : newIndex > this.relatedElements.length - 1 ? 0 : newIndex;
+      this.domNodes.counter.querySelector('.sl-current').innerHTML = this.currentImageIndex + 1;
+
+      if (this.options.animationSlide) {
+        this.slide(this.options.animationSpeed / 1000, -100 * slideDirection - this.controlCoordinates.swipeDiff + 'px');
+      }
+
+      this.fadeOut(this.domNodes.image, this.options.fadeSpeed, function () {
+        _this4.isAnimating = true;
+
+        if (!_this4.isClosing) {
+          setTimeout(function () {
+            var element = _this4.relatedElements[_this4.currentImageIndex];
+
+            _this4.currentImage.setAttribute('src', element.getAttribute(_this4.options.sourceAttr));
+
+            if (_this4.loadedImages.indexOf(element.getAttribute(_this4.options.sourceAttr)) === -1) {
+              _this4.show(_this4.domNodes.spinner);
+            }
+
+            if (_this4.domNodes.image.contains(_this4.domNodes.caption)) {
+              _this4.domNodes.image.removeChild(_this4.domNodes.caption);
+            }
+
+            _this4.adjustImage(slideDirection);
+
+            if (_this4.options.preloading) _this4.preload();
+          }, 100);
+        } else {
+          _this4.isAnimating = false;
+        }
+      });
+    }
+  }, {
+    key: "adjustImage",
+    value: function adjustImage(direction) {
+      var _this5 = this;
+
+      if (!this.currentImage) {
+        return false;
+      }
+
+      var tmpImage = new Image(),
+          windowWidth = window.innerWidth * this.options.widthRatio,
+          windowHeight = window.innerHeight * this.options.heightRatio;
+      tmpImage.setAttribute('src', this.currentImage.getAttribute('src'));
+      this.currentImage.dataset.scale = 1;
+      this.currentImage.dataset.translateX = 0;
+      this.currentImage.dataset.translateY = 0;
+      this.zoomPanElement(0, 0, 1);
+      tmpImage.addEventListener('error', function (event) {
+        _this5.relatedElements[_this5.currentImageIndex].dispatchEvent(new Event('error.' + _this5.eventNamespace));
+
+        _this5.isAnimating = false;
+        _this5.isOpen = false;
+        _this5.domNodes.spinner.style.display = 'none';
+        var dirIsDefined = direction === 1 || direction === -1;
+
+        if (_this5.initialImageIndex === _this5.currentImageIndex && dirIsDefined) {
+          return _this5.close();
+        }
+
+        if (_this5.options.alertError) {
+          alert(_this5.options.alertErrorMessage);
+        }
+
+        _this5.loadImage(dirIsDefined ? direction : 1);
+      });
+      tmpImage.addEventListener('load', function (event) {
+        if (typeof direction !== 'undefined') {
+          _this5.relatedElements[_this5.currentImageIndex].dispatchEvent(new Event('changed.' + _this5.eventNamespace));
+
+          _this5.relatedElements[_this5.currentImageIndex].dispatchEvent(new Event((direction === 1 ? 'nextDone' : 'prevDone') + '.' + _this5.eventNamespace));
+        } // history
+
+
+        if (_this5.options.history) {
+          _this5.updateURL();
+        }
+
+        if (_this5.loadedImages.indexOf(_this5.currentImage.getAttribute('src')) === -1) {
+          _this5.loadedImages.push(_this5.currentImage.getAttribute('src'));
+        }
+
+        var imageWidth = event.target.width,
+            imageHeight = event.target.height;
+
+        if (_this5.options.scaleImageToRatio || imageWidth > windowWidth || imageHeight > windowHeight) {
+          var ratio = imageWidth / imageHeight > windowWidth / windowHeight ? imageWidth / windowWidth : imageHeight / windowHeight;
+          imageWidth /= ratio;
+          imageHeight /= ratio;
+        }
+
+        _this5.domNodes.image.style.top = (window.innerHeight - imageHeight) / 2 + 'px';
+        _this5.domNodes.image.style.left = (window.innerWidth - imageWidth - _this5.globalScrollbarWidth) / 2 + 'px';
+        _this5.domNodes.image.style.width = imageWidth + 'px';
+        _this5.domNodes.image.style.height = imageHeight + 'px';
+        _this5.domNodes.spinner.style.display = 'none';
+
+        if (_this5.options.focus) {
+          _this5.forceFocus();
+        }
+
+        _this5.fadeIn(_this5.currentImage, _this5.options.fadeSpeed, function () {
+          if (_this5.options.focus) {
+            _this5.domNodes.wrapper.focus();
+          }
+        });
+
+        _this5.isOpen = true;
+        var captionContainer, captionText;
+
+        if (typeof _this5.options.captionSelector === 'string') {
+          captionContainer = _this5.options.captionSelector === 'self' ? _this5.relatedElements[_this5.currentImageIndex] : _this5.relatedElements[_this5.currentImageIndex].querySelector(_this5.options.captionSelector);
+        } else if (typeof _this5.options.captionSelector === 'function') {
+          captionContainer = _this5.options.captionSelector(_this5.relatedElements[_this5.currentImageIndex]);
+        }
+
+        if (_this5.options.captions && captionContainer) {
+          if (_this5.options.captionType === 'data') {
+            captionText = captionContainer.dataset[_this5.options.captionsData];
+          } else if (_this5.options.captionType === 'text') {
+            captionText = captionContainer.innerHTML;
+          } else {
+            captionText = captionContainer.getAttribute(_this5.options.captionsData);
+          }
+        }
+
+        if (!_this5.options.loop) {
+          if (_this5.currentImageIndex === 0) {
+            _this5.hide(_this5.domNodes.navigation.querySelector('.sl-prev'));
+          }
+
+          if (_this5.currentImageIndex >= _this5.relatedElements.length - 1) {
+            _this5.hide(_this5.domNodes.navigation.querySelector('.sl-next'));
+          }
+
+          if (_this5.currentImageIndex > 0) {
+            _this5.show(_this5.domNodes.navigation.querySelector('.sl-prev'));
+          }
+
+          if (_this5.currentImageIndex < _this5.relatedElements.length - 1) {
+            _this5.show(_this5.domNodes.navigation.querySelector('.sl-next'));
+          }
+        }
+
+        if (_this5.relatedElements.length === 1) {
+          _this5.hide(_this5.domNodes.navigation.querySelectorAll('.sl-prev, .sl-next'));
+        } else {
+          _this5.show(_this5.domNodes.navigation.querySelectorAll('.sl-prev, .sl-next'));
+        }
+
+        if (direction === 1 || direction === -1) {
+          if (_this5.options.animationSlide) {
+            _this5.slide(0, 100 * direction + 'px');
+
+            setTimeout(function () {
+              _this5.slide(_this5.options.animationSpeed / 1000, 0 + 'px');
+            }, 50);
+          }
+
+          _this5.fadeIn(_this5.domNodes.image, _this5.options.fadeSpeed, function () {
+            _this5.isAnimating = false;
+
+            _this5.setCaption(captionText, imageWidth);
+          });
+        } else {
+          _this5.isAnimating = false;
+
+          _this5.setCaption(captionText, imageWidth);
+        }
+
+        if (_this5.options.additionalHtml && !_this5.domNodes.additionalHtml) {
+          _this5.domNodes.additionalHtml = document.createElement('div');
+
+          _this5.domNodes.additionalHtml.classList.add('sl-additional-html');
+
+          _this5.domNodes.additionalHtml.innerHTML = _this5.options.additionalHtml;
+
+          _this5.domNodes.image.appendChild(_this5.domNodes.additionalHtml);
+        }
+      });
+    }
+  }, {
+    key: "zoomPanElement",
+    value: function zoomPanElement(targetOffsetX, targetOffsetY, targetScale) {
+      this.currentImage.style[this.transitionPrefix + 'transform'] = 'translate(' + targetOffsetX + ',' + targetOffsetY + ') scale(' + targetScale + ')';
+    }
+  }, {
+    key: "minMax",
+    value: function minMax(value, min, max) {
+      return value < min ? min : value > max ? max : value;
+    }
+  }, {
+    key: "setZoomData",
+    value: function setZoomData(initialScale, targetOffsetX, targetOffsetY) {
+      this.currentImage.dataset.scale = initialScale;
+      this.currentImage.dataset.translateX = targetOffsetX;
+      this.currentImage.dataset.translateY = targetOffsetY;
+    }
+  }, {
+    key: "hashchangeHandler",
+    value: function hashchangeHandler() {
+      if (this.isOpen && this.hash === this.initialLocationHash) {
+        this.hashReseted = true;
+        this.close();
+      }
+    }
+  }, {
+    key: "addEvents",
+    value: function addEvents() {
+      var _this6 = this;
+
+      // resize/responsive
+      this.addEventListener(window, 'resize.' + this.eventNamespace, function (event) {
+        //this.adjustImage.bind(this)
+        if (_this6.isOpen) {
+          _this6.adjustImage();
+        }
+      });
+      this.addEventListener(this.domNodes.closeButton, ['click.' + this.eventNamespace, 'touchstart.' + this.eventNamespace], this.close.bind(this));
+
+      if (this.options.history) {
+        setTimeout(function () {
+          _this6.addEventListener(window, 'hashchange.' + _this6.eventNamespace, function (event) {
+            if (_this6.isOpen) {
+              _this6.hashchangeHandler();
+            }
+          });
+        }, 40);
+      }
+
+      this.addEventListener(this.domNodes.navigation.getElementsByTagName('button'), 'click.' + this.eventNamespace, function (event) {
+        if (!event.currentTarget.tagName.match(/button/i)) {
+          return true;
+        }
+
+        event.preventDefault();
+        _this6.controlCoordinates.swipeDiff = 0;
+
+        _this6.loadImage(event.currentTarget.classList.contains('sl-next') ? 1 : -1);
+      });
+      this.addEventListener(this.domNodes.image, ['touchstart.' + this.eventNamespace, 'mousedown.' + this.eventNamespace], function (event) {
+        if (event.target.tagName === 'A' && event.type === 'touchstart') {
+          return true;
+        }
+
+        if (event.type === 'mousedown') {
+          _this6.controlCoordinates.initialPointerOffsetX = event.clientX;
+          _this6.controlCoordinates.initialPointerOffsetY = event.clientY;
+          _this6.controlCoordinates.containerHeight = _this6.getDimensions(_this6.domNodes.image).height;
+          _this6.controlCoordinates.containerWidth = _this6.getDimensions(_this6.domNodes.image).width;
+          _this6.controlCoordinates.imgHeight = _this6.getDimensions(_this6.currentImage).height;
+          _this6.controlCoordinates.imgWidth = _this6.getDimensions(_this6.currentImage).width;
+          _this6.controlCoordinates.containerOffsetX = _this6.domNodes.image.offsetLeft;
+          _this6.controlCoordinates.containerOffsetY = _this6.domNodes.image.offsetTop;
+          _this6.controlCoordinates.initialOffsetX = parseFloat(_this6.currentImage.dataset.translateX);
+          _this6.controlCoordinates.initialOffsetY = parseFloat(_this6.currentImage.dataset.translateY);
+          _this6.controlCoordinates.capture = true;
+        } else {
+          _this6.controlCoordinates.touchCount = event.touches.length;
+          _this6.controlCoordinates.initialPointerOffsetX = event.touches[0].clientX;
+          _this6.controlCoordinates.initialPointerOffsetY = event.touches[0].clientY;
+          _this6.controlCoordinates.containerHeight = _this6.getDimensions(_this6.domNodes.image).height;
+          _this6.controlCoordinates.containerWidth = _this6.getDimensions(_this6.domNodes.image).width;
+          _this6.controlCoordinates.imgHeight = _this6.getDimensions(_this6.currentImage).height;
+          _this6.controlCoordinates.imgWidth = _this6.getDimensions(_this6.currentImage).width;
+          _this6.controlCoordinates.containerOffsetX = _this6.domNodes.image.offsetLeft;
+          _this6.controlCoordinates.containerOffsetY = _this6.domNodes.image.offsetTop;
+
+          if (_this6.controlCoordinates.touchCount === 1)
+            /* Single touch */
+            {
+              if (!_this6.controlCoordinates.doubleTapped) {
+                _this6.controlCoordinates.doubleTapped = true;
+                setTimeout(function () {
+                  _this6.controlCoordinates.doubleTapped = false;
+                }, 300);
+              } else {
+                _this6.currentImage.classList.add('sl-transition');
+
+                if (!_this6.controlCoordinates.zoomed) {
+                  _this6.controlCoordinates.initialScale = _this6.options.doubleTapZoom;
+
+                  _this6.setZoomData(_this6.controlCoordinates.initialScale, 0, 0);
+
+                  _this6.zoomPanElement(0 + "px", 0 + "px", _this6.controlCoordinates.initialScale);
+
+                  if (!_this6.domNodes.caption.style.opacity && _this6.domNodes.caption.style.display !== 'none') {
+                    _this6.fadeOut(_this6.domNodes.caption, _this6.options.fadeSpeed);
+                  }
+
+                  _this6.controlCoordinates.zoomed = true;
+                } else {
+                  _this6.controlCoordinates.initialScale = 1;
+
+                  _this6.setZoomData(_this6.controlCoordinates.initialScale, 0, 0);
+
+                  _this6.zoomPanElement(0 + "px", 0 + "px", _this6.controlCoordinates.initialScale);
+
+                  _this6.controlCoordinates.zoomed = false;
+                }
+
+                setTimeout(function () {
+                  if (_this6.currentImage) {
+                    _this6.currentImage.classList.remove('sl-transition');
+                  }
+                }, 200);
+                return false;
+              }
+
+              _this6.controlCoordinates.initialOffsetX = parseFloat(_this6.currentImage.dataset.translateX);
+              _this6.controlCoordinates.initialOffsetY = parseFloat(_this6.currentImage.dataset.translateY);
+            } else if (_this6.controlCoordinates.touchCount === 2)
+            /* Pinch */
+            {
+              _this6.controlCoordinates.initialPointerOffsetX2 = event.touches[1].clientX;
+              _this6.controlCoordinates.initialPointerOffsetY2 = event.touches[1].clientY;
+              _this6.controlCoordinates.initialOffsetX = parseFloat(_this6.currentImage.dataset.translateX);
+              _this6.controlCoordinates.initialOffsetY = parseFloat(_this6.currentImage.dataset.translateY);
+              _this6.controlCoordinates.pinchOffsetX = (_this6.controlCoordinates.initialPointerOffsetX + _this6.controlCoordinates.initialPointerOffsetX2) / 2;
+              _this6.controlCoordinates.pinchOffsetY = (_this6.controlCoordinates.initialPointerOffsetY + _this6.controlCoordinates.initialPointerOffsetY2) / 2;
+              _this6.controlCoordinates.initialPinchDistance = Math.sqrt((_this6.controlCoordinates.initialPointerOffsetX - _this6.controlCoordinates.initialPointerOffsetX2) * (_this6.controlCoordinates.initialPointerOffsetX - _this6.controlCoordinates.initialPointerOffsetX2) + (_this6.controlCoordinates.initialPointerOffsetY - _this6.controlCoordinates.initialPointerOffsetY2) * (_this6.controlCoordinates.initialPointerOffsetY - _this6.controlCoordinates.initialPointerOffsetY2));
+            }
+
+          _this6.controlCoordinates.capture = true;
+        }
+
+        if (_this6.controlCoordinates.mousedown) return true;
+
+        if (_this6.transitionCapable) {
+          _this6.controlCoordinates.imageLeft = parseInt(_this6.domNodes.image.style.left, 10);
+        }
+
+        _this6.controlCoordinates.mousedown = true;
+        _this6.controlCoordinates.swipeDiff = 0;
+        _this6.controlCoordinates.swipeYDiff = 0;
+        _this6.controlCoordinates.swipeStart = event.pageX || event.touches[0].pageX;
+        _this6.controlCoordinates.swipeYStart = event.pageY || event.touches[0].pageY;
+        return false;
+      });
+      this.addEventListener(this.domNodes.image, ['touchmove.' + this.eventNamespace, 'mousemove.' + this.eventNamespace, 'MSPointerMove'], function (event) {
+        if (!_this6.controlCoordinates.mousedown) {
+          return true;
+        }
+
+        event.preventDefault();
+
+        if (event.type === 'touchmove') {
+          if (_this6.controlCoordinates.capture === false) {
+            return false;
+          }
+
+          _this6.controlCoordinates.pointerOffsetX = event.touches[0].clientX;
+          _this6.controlCoordinates.pointerOffsetY = event.touches[0].clientY;
+          _this6.controlCoordinates.touchCount = event.touches.length;
+          _this6.controlCoordinates.touchmoveCount++;
+
+          if (_this6.controlCoordinates.touchCount > 1)
+            /* Pinch */
+            {
+              _this6.controlCoordinates.pointerOffsetX2 = event.touches[1].clientX;
+              _this6.controlCoordinates.pointerOffsetY2 = event.touches[1].clientY;
+              _this6.controlCoordinates.targetPinchDistance = Math.sqrt((_this6.controlCoordinates.pointerOffsetX - _this6.controlCoordinates.pointerOffsetX2) * (_this6.controlCoordinates.pointerOffsetX - _this6.controlCoordinates.pointerOffsetX2) + (_this6.controlCoordinates.pointerOffsetY - _this6.controlCoordinates.pointerOffsetY2) * (_this6.controlCoordinates.pointerOffsetY - _this6.controlCoordinates.pointerOffsetY2));
+
+              if (_this6.controlCoordinates.initialPinchDistance === null) {
+                _this6.controlCoordinates.initialPinchDistance = _this6.controlCoordinates.targetPinchDistance;
+              }
+
+              if (Math.abs(_this6.controlCoordinates.initialPinchDistance - _this6.controlCoordinates.targetPinchDistance) >= 1) {
+                /* Initialize helpers */
+                _this6.controlCoordinates.targetScale = _this6.minMax(_this6.controlCoordinates.targetPinchDistance / _this6.controlCoordinates.initialPinchDistance * _this6.controlCoordinates.initialScale, 1, _this6.options.maxZoom);
+                _this6.controlCoordinates.limitOffsetX = (_this6.controlCoordinates.imgWidth * _this6.controlCoordinates.targetScale - _this6.controlCoordinates.containerWidth) / 2;
+                _this6.controlCoordinates.limitOffsetY = (_this6.controlCoordinates.imgHeight * _this6.controlCoordinates.targetScale - _this6.controlCoordinates.containerHeight) / 2;
+                _this6.controlCoordinates.scaleDifference = _this6.controlCoordinates.targetScale - _this6.controlCoordinates.initialScale;
+                _this6.controlCoordinates.targetOffsetX = _this6.controlCoordinates.imgWidth * _this6.controlCoordinates.targetScale <= _this6.controlCoordinates.containerWidth ? 0 : _this6.minMax(_this6.controlCoordinates.initialOffsetX - (_this6.controlCoordinates.pinchOffsetX - _this6.controlCoordinates.containerOffsetX - _this6.controlCoordinates.containerWidth / 2 - _this6.controlCoordinates.initialOffsetX) / (_this6.controlCoordinates.targetScale - _this6.controlCoordinates.scaleDifference) * _this6.controlCoordinates.scaleDifference, _this6.controlCoordinates.limitOffsetX * -1, _this6.controlCoordinates.limitOffsetX);
+                _this6.controlCoordinates.targetOffsetY = _this6.controlCoordinates.imgHeight * _this6.controlCoordinates.targetScale <= _this6.controlCoordinates.containerHeight ? 0 : _this6.minMax(_this6.controlCoordinates.initialOffsetY - (_this6.controlCoordinates.pinchOffsetY - _this6.controlCoordinates.containerOffsetY - _this6.controlCoordinates.containerHeight / 2 - _this6.controlCoordinates.initialOffsetY) / (_this6.controlCoordinates.targetScale - _this6.controlCoordinates.scaleDifference) * _this6.controlCoordinates.scaleDifference, _this6.controlCoordinates.limitOffsetY * -1, _this6.controlCoordinates.limitOffsetY);
+
+                _this6.zoomPanElement(_this6.controlCoordinates.targetOffsetX + "px", _this6.controlCoordinates.targetOffsetY + "px", _this6.controlCoordinates.targetScale);
+
+                if (_this6.controlCoordinates.targetScale > 1) {
+                  _this6.controlCoordinates.zoomed = true;
+
+                  if (!_this6.domNodes.caption.style.opacity && _this6.domNodes.caption.style.display !== 'none') {
+                    _this6.fadeOut(_this6.domNodes.caption, _this6.options.fadeSpeed);
+                  }
+                }
+
+                _this6.controlCoordinates.initialPinchDistance = _this6.controlCoordinates.targetPinchDistance;
+                _this6.controlCoordinates.initialScale = _this6.controlCoordinates.targetScale;
+                _this6.controlCoordinates.initialOffsetX = _this6.controlCoordinates.targetOffsetX;
+                _this6.controlCoordinates.initialOffsetY = _this6.controlCoordinates.targetOffsetY;
+              }
+            } else {
+            _this6.controlCoordinates.targetScale = _this6.controlCoordinates.initialScale;
+            _this6.controlCoordinates.limitOffsetX = (_this6.controlCoordinates.imgWidth * _this6.controlCoordinates.targetScale - _this6.controlCoordinates.containerWidth) / 2;
+            _this6.controlCoordinates.limitOffsetY = (_this6.controlCoordinates.imgHeight * _this6.controlCoordinates.targetScale - _this6.controlCoordinates.containerHeight) / 2;
+            _this6.controlCoordinates.targetOffsetX = _this6.controlCoordinates.imgWidth * _this6.controlCoordinates.targetScale <= _this6.controlCoordinates.containerWidth ? 0 : _this6.minMax(_this6.controlCoordinates.pointerOffsetX - (_this6.controlCoordinates.initialPointerOffsetX - _this6.controlCoordinates.initialOffsetX), _this6.controlCoordinates.limitOffsetX * -1, _this6.controlCoordinates.limitOffsetX);
+            _this6.controlCoordinates.targetOffsetY = _this6.controlCoordinates.imgHeight * _this6.controlCoordinates.targetScale <= _this6.controlCoordinates.containerHeight ? 0 : _this6.minMax(_this6.controlCoordinates.pointerOffsetY - (_this6.controlCoordinates.initialPointerOffsetY - _this6.controlCoordinates.initialOffsetY), _this6.controlCoordinates.limitOffsetY * -1, _this6.controlCoordinates.limitOffsetY);
+
+            if (Math.abs(_this6.controlCoordinates.targetOffsetX) === Math.abs(_this6.controlCoordinates.limitOffsetX)) {
+              _this6.controlCoordinates.initialOffsetX = _this6.controlCoordinates.targetOffsetX;
+              _this6.controlCoordinates.initialPointerOffsetX = _this6.controlCoordinates.pointerOffsetX;
+            }
+
+            if (Math.abs(_this6.controlCoordinates.targetOffsetY) === Math.abs(_this6.controlCoordinates.limitOffsetY)) {
+              _this6.controlCoordinates.initialOffsetY = _this6.controlCoordinates.targetOffsetY;
+              _this6.controlCoordinates.initialPointerOffsetY = _this6.controlCoordinates.pointerOffsetY;
+            }
+
+            _this6.setZoomData(_this6.controlCoordinates.initialScale, _this6.controlCoordinates.targetOffsetX, _this6.controlCoordinates.targetOffsetY);
+
+            _this6.zoomPanElement(_this6.controlCoordinates.targetOffsetX + "px", _this6.controlCoordinates.targetOffsetY + "px", _this6.controlCoordinates.targetScale);
+          }
+        }
+        /* Mouse Move implementation */
+
+
+        if (event.type === 'mousemove' && _this6.controlCoordinates.mousedown) {
+          if (event.type == 'touchmove') return true;
+          if (_this6.controlCoordinates.capture === false) return false;
+          _this6.controlCoordinates.pointerOffsetX = event.clientX;
+          _this6.controlCoordinates.pointerOffsetY = event.clientY;
+          _this6.controlCoordinates.targetScale = _this6.controlCoordinates.initialScale;
+          _this6.controlCoordinates.limitOffsetX = (_this6.controlCoordinates.imgWidth * _this6.controlCoordinates.targetScale - _this6.controlCoordinates.containerWidth) / 2;
+          _this6.controlCoordinates.limitOffsetY = (_this6.controlCoordinates.imgHeight * _this6.controlCoordinates.targetScale - _this6.controlCoordinates.containerHeight) / 2;
+          _this6.controlCoordinates.targetOffsetX = _this6.controlCoordinates.imgWidth * _this6.controlCoordinates.targetScale <= _this6.controlCoordinates.containerWidth ? 0 : _this6.minMax(_this6.controlCoordinates.pointerOffsetX - (_this6.controlCoordinates.initialPointerOffsetX - _this6.controlCoordinates.initialOffsetX), _this6.controlCoordinates.limitOffsetX * -1, _this6.controlCoordinates.limitOffsetX);
+          _this6.controlCoordinates.targetOffsetY = _this6.controlCoordinates.imgHeight * _this6.controlCoordinates.targetScale <= _this6.controlCoordinates.containerHeight ? 0 : _this6.minMax(_this6.controlCoordinates.pointerOffsetY - (_this6.controlCoordinates.initialPointerOffsetY - _this6.controlCoordinates.initialOffsetY), _this6.controlCoordinates.limitOffsetY * -1, _this6.controlCoordinates.limitOffsetY);
+
+          if (Math.abs(_this6.controlCoordinates.targetOffsetX) === Math.abs(_this6.controlCoordinates.limitOffsetX)) {
+            _this6.controlCoordinates.initialOffsetX = _this6.controlCoordinates.targetOffsetX;
+            _this6.controlCoordinates.initialPointerOffsetX = _this6.controlCoordinates.pointerOffsetX;
+          }
+
+          if (Math.abs(_this6.controlCoordinates.targetOffsetY) === Math.abs(_this6.controlCoordinates.limitOffsetY)) {
+            _this6.controlCoordinates.initialOffsetY = _this6.controlCoordinates.targetOffsetY;
+            _this6.controlCoordinates.initialPointerOffsetY = _this6.controlCoordinates.pointerOffsetY;
+          }
+
+          _this6.setZoomData(_this6.controlCoordinates.initialScale, _this6.controlCoordinates.targetOffsetX, _this6.controlCoordinates.targetOffsetY);
+
+          _this6.zoomPanElement(_this6.controlCoordinates.targetOffsetX + "px", _this6.controlCoordinates.targetOffsetY + "px", _this6.controlCoordinates.targetScale);
+        }
+
+        if (!_this6.controlCoordinates.zoomed) {
+          _this6.controlCoordinates.swipeEnd = event.pageX || event.touches[0].pageX;
+          _this6.controlCoordinates.swipeYEnd = event.pageY || event.touches[0].pageY;
+          _this6.controlCoordinates.swipeDiff = _this6.controlCoordinates.swipeStart - _this6.controlCoordinates.swipeEnd;
+          _this6.controlCoordinates.swipeYDiff = _this6.controlCoordinates.swipeYStart - _this6.controlCoordinates.swipeYEnd;
+
+          if (_this6.options.animationSlide) {
+            _this6.slide(0, -_this6.controlCoordinates.swipeDiff + 'px');
+          }
+        }
+      });
+      this.addEventListener(this.domNodes.image, ['touchend.' + this.eventNamespace, 'mouseup.' + this.eventNamespace, 'touchcancel.' + this.eventNamespace, 'mouseleave.' + this.eventNamespace, 'pointerup', 'pointercancel', 'MSPointerUp', 'MSPointerCancel'], function (event) {
+        if (_this6.isTouchDevice && event.type === 'touchend') {
+          _this6.controlCoordinates.touchCount = event.touches.length;
+
+          if (_this6.controlCoordinates.touchCount === 0)
+            /* No touch */
+            {
+              /* Set attributes */
+              if (_this6.currentImage) {
+                _this6.setZoomData(_this6.controlCoordinates.initialScale, _this6.controlCoordinates.targetOffsetX, _this6.controlCoordinates.targetOffsetY);
+              }
+
+              if (_this6.controlCoordinates.initialScale === 1) {
+                _this6.controlCoordinates.zoomed = false;
+
+                if (_this6.domNodes.caption.style.display === 'none') {
+                  _this6.fadeIn(_this6.domNodes.caption, _this6.options.fadeSpeed);
+                }
+              }
+
+              _this6.controlCoordinates.initialPinchDistance = null;
+              _this6.controlCoordinates.capture = false;
+            } else if (_this6.controlCoordinates.touchCount === 1)
+            /* Single touch */
+            {
+              _this6.controlCoordinates.initialPointerOffsetX = event.touches[0].clientX;
+              _this6.controlCoordinates.initialPointerOffsetY = event.touches[0].clientY;
+            } else if (_this6.controlCoordinates.touchCount > 1)
+            /* Pinch */
+            {
+              _this6.controlCoordinates.initialPinchDistance = null;
+            }
+        }
+
+        if (_this6.controlCoordinates.mousedown) {
+          _this6.controlCoordinates.mousedown = false;
+          var possibleDir = true;
+
+          if (!_this6.options.loop) {
+            if (_this6.currentImageIndex === 0 && _this6.controlCoordinates.swipeDiff < 0) {
+              possibleDir = false;
+            }
+
+            if (_this6.currentImageIndex >= _this6.relatedElements.length - 1 && _this6.controlCoordinates.swipeDiff > 0) {
+              possibleDir = false;
+            }
+          }
+
+          if (Math.abs(_this6.controlCoordinates.swipeDiff) > _this6.options.swipeTolerance && possibleDir) {
+            _this6.loadImage(_this6.controlCoordinates.swipeDiff > 0 ? 1 : -1);
+          } else if (_this6.options.animationSlide) {
+            _this6.slide(_this6.options.animationSpeed / 1000, 0 + 'px');
+          }
+
+          if (_this6.options.swipeClose && Math.abs(_this6.controlCoordinates.swipeYDiff) > 50 && Math.abs(_this6.controlCoordinates.swipeDiff) < _this6.options.swipeTolerance) {
+            _this6.close();
+          }
+        }
+      });
+      this.addEventListener(this.domNodes.image, ['dblclick'], function (event) {
+        if (_this6.isTouchDevice) return;
+        _this6.controlCoordinates.initialPointerOffsetX = event.clientX;
+        _this6.controlCoordinates.initialPointerOffsetY = event.clientY;
+        _this6.controlCoordinates.containerHeight = _this6.getDimensions(_this6.domNodes.image).height;
+        _this6.controlCoordinates.containerWidth = _this6.getDimensions(_this6.domNodes.image).width;
+        _this6.controlCoordinates.imgHeight = _this6.getDimensions(_this6.currentImage).height;
+        _this6.controlCoordinates.imgWidth = _this6.getDimensions(_this6.currentImage).width;
+        _this6.controlCoordinates.containerOffsetX = _this6.domNodes.image.offsetLeft;
+        _this6.controlCoordinates.containerOffsetY = _this6.domNodes.image.offsetTop;
+
+        _this6.currentImage.classList.add('sl-transition');
+
+        if (!_this6.controlCoordinates.zoomed) {
+          _this6.controlCoordinates.initialScale = _this6.options.doubleTapZoom;
+
+          _this6.setZoomData(_this6.controlCoordinates.initialScale, 0, 0);
+
+          _this6.zoomPanElement(0 + "px", 0 + "px", _this6.controlCoordinates.initialScale);
+
+          if (!_this6.domNodes.caption.style.opacity && _this6.domNodes.caption.style.display !== 'none') {
+            _this6.fadeOut(_this6.domNodes.caption, _this6.options.fadeSpeed);
+          }
+
+          _this6.controlCoordinates.zoomed = true;
+        } else {
+          _this6.controlCoordinates.initialScale = 1;
+
+          _this6.setZoomData(_this6.controlCoordinates.initialScale, 0, 0);
+
+          _this6.zoomPanElement(0 + "px", 0 + "px", _this6.controlCoordinates.initialScale);
+
+          _this6.controlCoordinates.zoomed = false;
+
+          if (_this6.domNodes.caption.style.display === 'none') {
+            _this6.fadeIn(_this6.domNodes.caption, _this6.options.fadeSpeed);
+          }
+        }
+
+        setTimeout(function () {
+          if (_this6.currentImage) {
+            _this6.currentImage.classList.remove('sl-transition');
+          }
+        }, 200);
+        _this6.controlCoordinates.capture = true;
+        return false;
+      });
+    }
+  }, {
+    key: "getDimensions",
+    value: function getDimensions(element) {
+      var styles = window.getComputedStyle(element),
+          height = element.offsetHeight,
+          width = element.offsetWidth,
+          borderTopWidth = parseFloat(styles.borderTopWidth),
+          borderBottomWidth = parseFloat(styles.borderBottomWidth),
+          paddingTop = parseFloat(styles.paddingTop),
+          paddingBottom = parseFloat(styles.paddingBottom),
+          borderLeftWidth = parseFloat(styles.borderLeftWidth),
+          borderRightWidth = parseFloat(styles.borderRightWidth),
+          paddingLeft = parseFloat(styles.paddingLeft),
+          paddingRight = parseFloat(styles.paddingRight);
+      return {
+        height: height - borderBottomWidth - borderTopWidth - paddingTop - paddingBottom,
+        width: width - borderLeftWidth - borderRightWidth - paddingLeft - paddingRight
+      };
+    }
+  }, {
+    key: "updateHash",
+    value: function updateHash() {
+      var newHash = 'pid=' + (this.currentImageIndex + 1),
+          newURL = window.location.href.split('#')[0] + '#' + newHash;
+      this.hashReseted = false;
+
+      if (this.pushStateSupport) {
+        window.history[this.historyHasChanges ? 'replaceState' : 'pushState']('', document.title, newURL);
+      } else {
+        // what is the browser target of this?
+        if (this.historyHasChanges) {
+          window.location.replace(newURL);
+        } else {
+          window.location.hash = newHash;
+        }
+      }
+
+      if (!this.historyHasChanges) {
+        this.urlChangedOnce = true;
+      }
+
+      this.historyHasChanges = true;
+    }
+  }, {
+    key: "resetHash",
+    value: function resetHash() {
+      this.hashReseted = true;
+
+      if (this.urlChangedOnce) {
+        history.back();
+      } else {
+        if (this.pushStateSupport) {
+          history.pushState('', document.title, window.location.pathname + window.location.search);
+        } else {
+          window.location.hash = '';
+        }
+      } //
+      //in case an history operation is still pending
+
+
+      clearTimeout(this.historyUpdateTimeout);
+    }
+  }, {
+    key: "updateURL",
+    value: function updateURL() {
+      clearTimeout(this.historyUpdateTimeout);
+
+      if (!this.historyHasChanges) {
+        this.updateHash(); // first time
+      } else {
+        this.historyUpdateTimeout = setTimeout(this.updateHash.bind(this), 800);
+      }
+    }
+  }, {
+    key: "setCaption",
+    value: function setCaption(captionText, imageWidth) {
+      var _this7 = this;
+
+      if (this.options.captions && captionText && captionText !== '' && typeof captionText !== "undefined") {
+        this.hide(this.domNodes.caption);
+        this.domNodes.caption.style.width = imageWidth + 'px';
+        this.domNodes.caption.innerHTML = captionText;
+        this.domNodes.image.appendChild(this.domNodes.caption);
+        setTimeout(function () {
+          _this7.fadeIn(_this7.domNodes.caption, _this7.options.fadeSpeed);
+        }, this.options.captionDelay);
+      }
+    }
+  }, {
+    key: "slide",
+    value: function slide(speed, pos) {
+      if (!this.transitionCapable) {
+        return this.domNodes.image.style.left = pos;
+      }
+
+      this.domNodes.image.style[this.transitionPrefix + 'transform'] = 'translateX(' + pos + ')';
+      this.domNodes.image.style[this.transitionPrefix + 'transition'] = this.transitionPrefix + 'transform ' + speed + 's linear';
+    }
+  }, {
+    key: "getRelated",
+    value: function getRelated(rel) {
+      var elems;
+
+      if (rel && rel !== false && rel !== 'nofollow') {
+        elems = Array.from(this.elements).filter(function (element) {
+          return element.getAttribute('rel') === rel;
+        });
+      } else {
+        elems = this.elements;
+      }
+
+      return elems;
+    }
+  }, {
+    key: "openImage",
+    value: function openImage(element) {
+      var _this8 = this;
+
+      element.dispatchEvent(new Event('show.' + this.eventNamespace));
+
+      if (this.options.disableScroll) {
+        this.globalScrollbarWidth = this.toggleScrollbar('hide');
+      }
+
+      if (this.options.htmlClass && this.options.htmlClass !== '') {
+        document.querySelector('html').classList.add(this.options.htmlClass);
+      }
+
+      document.body.appendChild(this.domNodes.wrapper);
+      this.domNodes.wrapper.appendChild(this.domNodes.image);
+
+      if (this.options.overlay) {
+        document.body.appendChild(this.domNodes.overlay);
+      }
+
+      this.relatedElements = this.getRelated(element.rel);
+
+      if (this.options.showCounter) {
+        if (this.relatedElements.length == 1 && this.domNodes.wrapper.contains(this.domNodes.counter)) {
+          this.domNodes.wrapper.removeChild(this.domNodes.counter);
+        } else if (this.relatedElements.length > 1 && !this.domNodes.wrapper.contains(this.domNodes.counter)) {
+          this.domNodes.wrapper.appendChild(this.domNodes.counter);
+        }
+      }
+
+      this.isAnimating = true;
+      this.currentImageIndex = this.relatedElements.indexOf(element);
+      var targetURL = element.getAttribute(this.options.sourceAttr);
+      this.currentImage = document.createElement('img');
+      this.currentImage.style.display = 'none';
+      this.currentImage.setAttribute('src', targetURL);
+      this.currentImage.dataset.scale = 1;
+      this.currentImage.dataset.translateX = 0;
+      this.currentImage.dataset.translateY = 0;
+
+      if (this.loadedImages.indexOf(targetURL) === -1) {
+        this.loadedImages.push(targetURL);
+      }
+
+      this.domNodes.image.innerHTML = '';
+      this.domNodes.image.setAttribute('style', '');
+      this.domNodes.image.appendChild(this.currentImage);
+      this.fadeIn(this.domNodes.overlay, this.options.fadeSpeed);
+      this.fadeIn([this.domNodes.counter, this.domNodes.navigation, this.domNodes.closeButton], this.options.fadeSpeed);
+      this.show(this.domNodes.spinner);
+      this.domNodes.counter.querySelector('.sl-current').innerHTML = this.currentImageIndex + 1;
+      this.domNodes.counter.querySelector('.sl-total').innerHTML = this.relatedElements.length;
+      this.adjustImage();
+
+      if (this.options.preloading) {
+        this.preload();
+      }
+
+      setTimeout(function () {
+        element.dispatchEvent(new Event('shown.' + _this8.eventNamespace));
+      }, this.options.animationSpeed);
+    }
+  }, {
+    key: "forceFocus",
+    value: function forceFocus() {
+      var _this9 = this;
+
+      this.removeEventListener(document, 'focusin.' + this.eventNamespace);
+      this.addEventListener(document, 'focusin.' + this.eventNamespace, function (event) {
+        if (document !== event.target && _this9.domNodes.wrapper !== event.target && !_this9.domNodes.wrapper.contains(event.target)) {
+          _this9.domNodes.wrapper.focus();
+        }
+      });
+    } // utility
+
+  }, {
+    key: "addEventListener",
+    value: function addEventListener(elements, events, callback, opts) {
+      elements = this.wrap(elements);
+      events = this.wrap(events);
+
+      var _iterator = _createForOfIteratorHelper(elements),
+          _step;
+
+      try {
+        for (_iterator.s(); !(_step = _iterator.n()).done;) {
+          var element = _step.value;
+
+          if (!element.namespaces) {
+            element.namespaces = {};
+          } // save the namespaces addEventListener the DOM element itself
+
+
+          var _iterator2 = _createForOfIteratorHelper(events),
+              _step2;
+
+          try {
+            for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
+              var event = _step2.value;
+              var options = opts || false;
+              element.namespaces[event] = callback;
+              element.addEventListener(event.split('.')[0], callback, options);
+            }
+          } catch (err) {
+            _iterator2.e(err);
+          } finally {
+            _iterator2.f();
+          }
+        }
+      } catch (err) {
+        _iterator.e(err);
+      } finally {
+        _iterator.f();
+      }
+    }
+  }, {
+    key: "removeEventListener",
+    value: function removeEventListener(elements, events) {
+      elements = this.wrap(elements);
+      events = this.wrap(events);
+
+      var _iterator3 = _createForOfIteratorHelper(elements),
+          _step3;
+
+      try {
+        for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
+          var element = _step3.value;
+
+          var _iterator4 = _createForOfIteratorHelper(events),
+              _step4;
+
+          try {
+            for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
+              var event = _step4.value;
+
+              if (element.namespaces && element.namespaces[event]) {
+                element.removeEventListener(event.split('.')[0], element.namespaces[event]);
+                delete element.namespaces[event];
+              }
+            }
+          } catch (err) {
+            _iterator4.e(err);
+          } finally {
+            _iterator4.f();
+          }
+        }
+      } catch (err) {
+        _iterator3.e(err);
+      } finally {
+        _iterator3.f();
+      }
+    }
+  }, {
+    key: "fadeOut",
+    value: function fadeOut(elements, duration, callback) {
+      var _this10 = this;
+
+      elements = this.wrap(elements);
+
+      var _iterator5 = _createForOfIteratorHelper(elements),
+          _step5;
+
+      try {
+        for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {
+          var element = _step5.value;
+          element.style.opacity = 1;
+        }
+      } catch (err) {
+        _iterator5.e(err);
+      } finally {
+        _iterator5.f();
+      }
+
+      this.isFadeIn = false;
+
+      var step = 16.66666 / (duration || this.options.fadeSpeed),
+          fade = function fade() {
+        var currentOpacity = parseFloat(elements[0].style.opacity);
+
+        if ((currentOpacity -= step) < 0) {
+          var _iterator6 = _createForOfIteratorHelper(elements),
+              _step6;
+
+          try {
+            for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {
+              var element = _step6.value;
+              element.style.display = "none";
+              element.style.opacity = '';
+            }
+          } catch (err) {
+            _iterator6.e(err);
+          } finally {
+            _iterator6.f();
+          }
+
+          callback && callback.call(_this10, elements);
+        } else {
+          var _iterator7 = _createForOfIteratorHelper(elements),
+              _step7;
+
+          try {
+            for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) {
+              var _element = _step7.value;
+              _element.style.opacity = currentOpacity;
+            }
+          } catch (err) {
+            _iterator7.e(err);
+          } finally {
+            _iterator7.f();
+          }
+
+          requestAnimationFrame(fade);
+        }
+      };
+
+      fade();
+    }
+  }, {
+    key: "fadeIn",
+    value: function fadeIn(elements, duration, callback, display) {
+      var _this11 = this;
+
+      elements = this.wrap(elements);
+
+      var _iterator8 = _createForOfIteratorHelper(elements),
+          _step8;
+
+      try {
+        for (_iterator8.s(); !(_step8 = _iterator8.n()).done;) {
+          var element = _step8.value;
+          element.style.opacity = 0;
+          element.style.display = display || "block";
+        }
+      } catch (err) {
+        _iterator8.e(err);
+      } finally {
+        _iterator8.f();
+      }
+
+      this.isFadeIn = true;
+
+      var opacityTarget = parseFloat(elements[0].dataset.opacityTarget || 1),
+          step = 16.66666 * opacityTarget / (duration || this.options.fadeSpeed),
+          fade = function fade() {
+        var currentOpacity = parseFloat(elements[0].style.opacity);
+
+        if (!((currentOpacity += step) > opacityTarget)) {
+          var _iterator9 = _createForOfIteratorHelper(elements),
+              _step9;
+
+          try {
+            for (_iterator9.s(); !(_step9 = _iterator9.n()).done;) {
+              var element = _step9.value;
+              element.style.opacity = currentOpacity;
+            }
+          } catch (err) {
+            _iterator9.e(err);
+          } finally {
+            _iterator9.f();
+          }
+
+          if (!_this11.isFadeIn) return;
+          requestAnimationFrame(fade);
+        } else {
+          var _iterator10 = _createForOfIteratorHelper(elements),
+              _step10;
+
+          try {
+            for (_iterator10.s(); !(_step10 = _iterator10.n()).done;) {
+              var _element2 = _step10.value;
+              _element2.style.opacity = '';
+            }
+          } catch (err) {
+            _iterator10.e(err);
+          } finally {
+            _iterator10.f();
+          }
+
+          callback && callback.call(_this11, elements);
+        }
+      };
+
+      fade();
+    }
+  }, {
+    key: "hide",
+    value: function hide(elements) {
+      elements = this.wrap(elements);
+
+      var _iterator11 = _createForOfIteratorHelper(elements),
+          _step11;
+
+      try {
+        for (_iterator11.s(); !(_step11 = _iterator11.n()).done;) {
+          var element = _step11.value;
+          element.dataset.initialDisplay = element.style.display;
+          element.style.display = 'none';
+        }
+      } catch (err) {
+        _iterator11.e(err);
+      } finally {
+        _iterator11.f();
+      }
+    }
+  }, {
+    key: "show",
+    value: function show(elements, display) {
+      elements = this.wrap(elements);
+
+      var _iterator12 = _createForOfIteratorHelper(elements),
+          _step12;
+
+      try {
+        for (_iterator12.s(); !(_step12 = _iterator12.n()).done;) {
+          var element = _step12.value;
+          element.style.display = element.dataset.initialDisplay || display || 'block';
+        }
+      } catch (err) {
+        _iterator12.e(err);
+      } finally {
+        _iterator12.f();
+      }
+    }
+  }, {
+    key: "wrap",
+    value: function wrap(input) {
+      return typeof input[Symbol.iterator] === 'function' && typeof input !== 'string' ? input : [input];
+    }
+  }, {
+    key: "on",
+    value: function on(events, callback) {
+      events = this.wrap(events);
+
+      var _iterator13 = _createForOfIteratorHelper(this.elements),
+          _step13;
+
+      try {
+        for (_iterator13.s(); !(_step13 = _iterator13.n()).done;) {
+          var element = _step13.value;
+
+          if (!element.fullyNamespacedEvents) {
+            element.fullyNamespacedEvents = {};
+          }
+
+          var _iterator14 = _createForOfIteratorHelper(events),
+              _step14;
+
+          try {
+            for (_iterator14.s(); !(_step14 = _iterator14.n()).done;) {
+              var event = _step14.value;
+              element.fullyNamespacedEvents[event] = callback;
+              element.addEventListener(event, callback);
+            }
+          } catch (err) {
+            _iterator14.e(err);
+          } finally {
+            _iterator14.f();
+          }
+        }
+      } catch (err) {
+        _iterator13.e(err);
+      } finally {
+        _iterator13.f();
+      }
+
+      return this;
+    }
+  }, {
+    key: "off",
+    value: function off(events) {
+      events = this.wrap(events);
+
+      var _iterator15 = _createForOfIteratorHelper(this.elements),
+          _step15;
+
+      try {
+        for (_iterator15.s(); !(_step15 = _iterator15.n()).done;) {
+          var element = _step15.value;
+
+          var _iterator16 = _createForOfIteratorHelper(events),
+              _step16;
+
+          try {
+            for (_iterator16.s(); !(_step16 = _iterator16.n()).done;) {
+              var event = _step16.value;
+
+              if (typeof element.fullyNamespacedEvents !== 'undefined' && event in element.fullyNamespacedEvents) {
+                element.removeEventListener(event, element.fullyNamespacedEvents[event]);
+              }
+            }
+          } catch (err) {
+            _iterator16.e(err);
+          } finally {
+            _iterator16.f();
+          }
+        }
+      } catch (err) {
+        _iterator15.e(err);
+      } finally {
+        _iterator15.f();
+      }
+
+      return this;
+    } // api
+
+  }, {
+    key: "open",
+    value: function open(elem) {
+      elem = elem || this.elements[0];
+
+      if (typeof jQuery !== "undefined" && elem instanceof jQuery) {
+        elem = elem.get(0);
+      }
+
+      this.initialImageIndex = this.elements.indexOf(elem);
+
+      if (this.initialImageIndex > -1) {
+        this.openImage(elem);
+      }
+    }
+  }, {
+    key: "next",
+    value: function next() {
+      this.loadImage(1);
+    }
+  }, {
+    key: "prev",
+    value: function prev() {
+      this.loadImage(-1);
+    } //close is exposed anyways..
+
+  }, {
+    key: "destroy",
+    value: function destroy() {
+      //remove all custom event listeners from elements
+      this.off(['close.' + this.eventNamespace, 'closed.' + this.eventNamespace, 'nextImageLoaded.' + this.eventNamespace, 'prevImageLoaded.' + this.eventNamespace, 'change.' + this.eventNamespace, 'nextDone.' + this.eventNamespace, 'prevDone.' + this.eventNamespace, 'error.' + this.eventNamespace, 'changed.' + this.eventNamespace, 'next.' + this.eventNamespace, 'prev.' + this.eventNamespace, 'show.' + this.eventNamespace, 'shown.' + this.eventNamespace]);
+      this.removeEventListener(this.elements, 'click.' + this.eventNamespace);
+      this.removeEventListener(document, 'focusin.' + this.eventNamespace);
+      this.removeEventListener(document.body, 'contextmenu.' + this.eventNamespace);
+      this.removeEventListener(document.body, 'keyup.' + this.eventNamespace);
+      this.removeEventListener(this.domNodes.navigation.getElementsByTagName('button'), 'click.' + this.eventNamespace);
+      this.removeEventListener(this.domNodes.closeButton, 'click.' + this.eventNamespace);
+      this.removeEventListener(window, 'resize.' + this.eventNamespace);
+      this.removeEventListener(window, 'hashchange.' + this.eventNamespace);
+      this.close();
+
+      if (this.isOpen) {
+        document.body.removeChild(this.domNodes.wrapper);
+        document.body.removeChild(this.domNodes.overlay);
+      }
+
+      this.elements = null;
+    }
+  }, {
+    key: "refresh",
+    value: function refresh() {
+      if (!this.initialSelector) {
+        throw 'refreshing only works when you initialize using a selector!';
+      }
+
+      var options = this.options,
+          selector = this.initialSelector;
+      this.destroy();
+      this.constructor(selector, options);
+      return this;
+    }
+  }, {
+    key: "hash",
+    get: function get() {
+      return window.location.hash.substring(1);
+    }
+  }]);
+
+  return SimpleLightbox;
+}();
+
+var _default = SimpleLightbox;
+exports["default"] = _default;
+global.SimpleLightbox = SimpleLightbox;
+
+}).call(this)}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
+},{}]},{},[376]);
diff --git a/photos/simplelightbox-master/dist/simple-lightbox.legacy.min.js b/photos/simplelightbox-master/dist/simple-lightbox.legacy.min.js
new file mode 100644
index 0000000000000000000000000000000000000000..40c0220953261fd91ad8b0850caf813a0b86e6b7
--- /dev/null
+++ b/photos/simplelightbox-master/dist/simple-lightbox.legacy.min.js
@@ -0,0 +1 @@
+!function o(a,s,l){function c(t,e){if(!s[t]){if(!a[t]){var n="function"==typeof require&&require;if(!e&&n)return n(t,!0);if(u)return u(t,!0);var r=new Error("Cannot find module '"+t+"'");throw r.code="MODULE_NOT_FOUND",r}var i=s[t]={exports:{}};a[t][0].call(i.exports,function(e){return c(a[t][1][e]||e)},i,i.exports,o,a,s,l)}return s[t].exports}for(var u="function"==typeof require&&require,e=0;e<l.length;e++)c(l[e]);return c}({1:[function(e,t,n){e("../modules/es.symbol"),e("../modules/es.symbol.async-iterator"),e("../modules/es.symbol.description"),e("../modules/es.symbol.has-instance"),e("../modules/es.symbol.is-concat-spreadable"),e("../modules/es.symbol.iterator"),e("../modules/es.symbol.match"),e("../modules/es.symbol.match-all"),e("../modules/es.symbol.replace"),e("../modules/es.symbol.search"),e("../modules/es.symbol.species"),e("../modules/es.symbol.split"),e("../modules/es.symbol.to-primitive"),e("../modules/es.symbol.to-string-tag"),e("../modules/es.symbol.unscopables"),e("../modules/es.object.assign"),e("../modules/es.object.create"),e("../modules/es.object.define-property"),e("../modules/es.object.define-properties"),e("../modules/es.object.entries"),e("../modules/es.object.freeze"),e("../modules/es.object.from-entries"),e("../modules/es.object.get-own-property-descriptor"),e("../modules/es.object.get-own-property-descriptors"),e("../modules/es.object.get-own-property-names"),e("../modules/es.object.get-prototype-of"),e("../modules/es.object.is"),e("../modules/es.object.is-extensible"),e("../modules/es.object.is-frozen"),e("../modules/es.object.is-sealed"),e("../modules/es.object.keys"),e("../modules/es.object.prevent-extensions"),e("../modules/es.object.seal"),e("../modules/es.object.set-prototype-of"),e("../modules/es.object.values"),e("../modules/es.object.to-string"),e("../modules/es.object.define-getter"),e("../modules/es.object.define-setter"),e("../modules/es.object.lookup-getter"),e("../modules/es.object.lookup-setter"),e("../modules/es.function.bind"),e("../modules/es.function.name"),e("../modules/es.function.has-instance"),e("../modules/es.global-this"),e("../modules/es.array.from"),e("../modules/es.array.is-array"),e("../modules/es.array.of"),e("../modules/es.array.concat"),e("../modules/es.array.copy-within"),e("../modules/es.array.every"),e("../modules/es.array.fill"),e("../modules/es.array.filter"),e("../modules/es.array.find"),e("../modules/es.array.find-index"),e("../modules/es.array.flat"),e("../modules/es.array.flat-map"),e("../modules/es.array.for-each"),e("../modules/es.array.includes"),e("../modules/es.array.index-of"),e("../modules/es.array.join"),e("../modules/es.array.last-index-of"),e("../modules/es.array.map"),e("../modules/es.array.reduce"),e("../modules/es.array.reduce-right"),e("../modules/es.array.reverse"),e("../modules/es.array.slice"),e("../modules/es.array.some"),e("../modules/es.array.sort"),e("../modules/es.array.splice"),e("../modules/es.array.species"),e("../modules/es.array.unscopables.flat"),e("../modules/es.array.unscopables.flat-map"),e("../modules/es.array.iterator"),e("../modules/es.string.from-code-point"),e("../modules/es.string.raw"),e("../modules/es.string.code-point-at"),e("../modules/es.string.ends-with"),e("../modules/es.string.includes"),e("../modules/es.string.match"),e("../modules/es.string.match-all"),e("../modules/es.string.pad-end"),e("../modules/es.string.pad-start"),e("../modules/es.string.repeat"),e("../modules/es.string.replace"),e("../modules/es.string.search"),e("../modules/es.string.split"),e("../modules/es.string.starts-with"),e("../modules/es.string.trim"),e("../modules/es.string.trim-start"),e("../modules/es.string.trim-end"),e("../modules/es.string.iterator"),e("../modules/es.string.anchor"),e("../modules/es.string.big"),e("../modules/es.string.blink"),e("../modules/es.string.bold"),e("../modules/es.string.fixed"),e("../modules/es.string.fontcolor"),e("../modules/es.string.fontsize"),e("../modules/es.string.italics"),e("../modules/es.string.link"),e("../modules/es.string.small"),e("../modules/es.string.strike"),e("../modules/es.string.sub"),e("../modules/es.string.sup"),e("../modules/es.regexp.constructor"),e("../modules/es.regexp.exec"),e("../modules/es.regexp.flags"),e("../modules/es.regexp.sticky"),e("../modules/es.regexp.test"),e("../modules/es.regexp.to-string"),e("../modules/es.parse-int"),e("../modules/es.parse-float"),e("../modules/es.number.constructor"),e("../modules/es.number.epsilon"),e("../modules/es.number.is-finite"),e("../modules/es.number.is-integer"),e("../modules/es.number.is-nan"),e("../modules/es.number.is-safe-integer"),e("../modules/es.number.max-safe-integer"),e("../modules/es.number.min-safe-integer"),e("../modules/es.number.parse-float"),e("../modules/es.number.parse-int"),e("../modules/es.number.to-fixed"),e("../modules/es.number.to-precision"),e("../modules/es.math.acosh"),e("../modules/es.math.asinh"),e("../modules/es.math.atanh"),e("../modules/es.math.cbrt"),e("../modules/es.math.clz32"),e("../modules/es.math.cosh"),e("../modules/es.math.expm1"),e("../modules/es.math.fround"),e("../modules/es.math.hypot"),e("../modules/es.math.imul"),e("../modules/es.math.log10"),e("../modules/es.math.log1p"),e("../modules/es.math.log2"),e("../modules/es.math.sign"),e("../modules/es.math.sinh"),e("../modules/es.math.tanh"),e("../modules/es.math.to-string-tag"),e("../modules/es.math.trunc"),e("../modules/es.date.now"),e("../modules/es.date.to-json"),e("../modules/es.date.to-iso-string"),e("../modules/es.date.to-string"),e("../modules/es.date.to-primitive"),e("../modules/es.json.stringify"),e("../modules/es.json.to-string-tag"),e("../modules/es.promise"),e("../modules/es.promise.all-settled"),e("../modules/es.promise.finally"),e("../modules/es.map"),e("../modules/es.set"),e("../modules/es.weak-map"),e("../modules/es.weak-set"),e("../modules/es.array-buffer.constructor"),e("../modules/es.array-buffer.is-view"),e("../modules/es.array-buffer.slice"),e("../modules/es.data-view"),e("../modules/es.typed-array.int8-array"),e("../modules/es.typed-array.uint8-array"),e("../modules/es.typed-array.uint8-clamped-array"),e("../modules/es.typed-array.int16-array"),e("../modules/es.typed-array.uint16-array"),e("../modules/es.typed-array.int32-array"),e("../modules/es.typed-array.uint32-array"),e("../modules/es.typed-array.float32-array"),e("../modules/es.typed-array.float64-array"),e("../modules/es.typed-array.from"),e("../modules/es.typed-array.of"),e("../modules/es.typed-array.copy-within"),e("../modules/es.typed-array.every"),e("../modules/es.typed-array.fill"),e("../modules/es.typed-array.filter"),e("../modules/es.typed-array.find"),e("../modules/es.typed-array.find-index"),e("../modules/es.typed-array.for-each"),e("../modules/es.typed-array.includes"),e("../modules/es.typed-array.index-of"),e("../modules/es.typed-array.iterator"),e("../modules/es.typed-array.join"),e("../modules/es.typed-array.last-index-of"),e("../modules/es.typed-array.map"),e("../modules/es.typed-array.reduce"),e("../modules/es.typed-array.reduce-right"),e("../modules/es.typed-array.reverse"),e("../modules/es.typed-array.set"),e("../modules/es.typed-array.slice"),e("../modules/es.typed-array.some"),e("../modules/es.typed-array.sort"),e("../modules/es.typed-array.subarray"),e("../modules/es.typed-array.to-locale-string"),e("../modules/es.typed-array.to-string"),e("../modules/es.reflect.apply"),e("../modules/es.reflect.construct"),e("../modules/es.reflect.define-property"),e("../modules/es.reflect.delete-property"),e("../modules/es.reflect.get"),e("../modules/es.reflect.get-own-property-descriptor"),e("../modules/es.reflect.get-prototype-of"),e("../modules/es.reflect.has"),e("../modules/es.reflect.is-extensible"),e("../modules/es.reflect.own-keys"),e("../modules/es.reflect.prevent-extensions"),e("../modules/es.reflect.set"),e("../modules/es.reflect.set-prototype-of");var r=e("../internals/path");t.exports=r},{"../internals/path":112,"../modules/es.array-buffer.constructor":158,"../modules/es.array-buffer.is-view":159,"../modules/es.array-buffer.slice":160,"../modules/es.array.concat":161,"../modules/es.array.copy-within":162,"../modules/es.array.every":163,"../modules/es.array.fill":164,"../modules/es.array.filter":165,"../modules/es.array.find":167,"../modules/es.array.find-index":166,"../modules/es.array.flat":169,"../modules/es.array.flat-map":168,"../modules/es.array.for-each":170,"../modules/es.array.from":171,"../modules/es.array.includes":172,"../modules/es.array.index-of":173,"../modules/es.array.is-array":174,"../modules/es.array.iterator":175,"../modules/es.array.join":176,"../modules/es.array.last-index-of":177,"../modules/es.array.map":178,"../modules/es.array.of":179,"../modules/es.array.reduce":181,"../modules/es.array.reduce-right":180,"../modules/es.array.reverse":182,"../modules/es.array.slice":183,"../modules/es.array.some":184,"../modules/es.array.sort":185,"../modules/es.array.species":186,"../modules/es.array.splice":187,"../modules/es.array.unscopables.flat":189,"../modules/es.array.unscopables.flat-map":188,"../modules/es.data-view":190,"../modules/es.date.now":191,"../modules/es.date.to-iso-string":192,"../modules/es.date.to-json":193,"../modules/es.date.to-primitive":194,"../modules/es.date.to-string":195,"../modules/es.function.bind":196,"../modules/es.function.has-instance":197,"../modules/es.function.name":198,"../modules/es.global-this":199,"../modules/es.json.stringify":200,"../modules/es.json.to-string-tag":201,"../modules/es.map":202,"../modules/es.math.acosh":203,"../modules/es.math.asinh":204,"../modules/es.math.atanh":205,"../modules/es.math.cbrt":206,"../modules/es.math.clz32":207,"../modules/es.math.cosh":208,"../modules/es.math.expm1":209,"../modules/es.math.fround":210,"../modules/es.math.hypot":211,"../modules/es.math.imul":212,"../modules/es.math.log10":213,"../modules/es.math.log1p":214,"../modules/es.math.log2":215,"../modules/es.math.sign":216,"../modules/es.math.sinh":217,"../modules/es.math.tanh":218,"../modules/es.math.to-string-tag":219,"../modules/es.math.trunc":220,"../modules/es.number.constructor":221,"../modules/es.number.epsilon":222,"../modules/es.number.is-finite":223,"../modules/es.number.is-integer":224,"../modules/es.number.is-nan":225,"../modules/es.number.is-safe-integer":226,"../modules/es.number.max-safe-integer":227,"../modules/es.number.min-safe-integer":228,"../modules/es.number.parse-float":229,"../modules/es.number.parse-int":230,"../modules/es.number.to-fixed":231,"../modules/es.number.to-precision":232,"../modules/es.object.assign":233,"../modules/es.object.create":234,"../modules/es.object.define-getter":235,"../modules/es.object.define-properties":236,"../modules/es.object.define-property":237,"../modules/es.object.define-setter":238,"../modules/es.object.entries":239,"../modules/es.object.freeze":240,"../modules/es.object.from-entries":241,"../modules/es.object.get-own-property-descriptor":242,"../modules/es.object.get-own-property-descriptors":243,"../modules/es.object.get-own-property-names":244,"../modules/es.object.get-prototype-of":245,"../modules/es.object.is":249,"../modules/es.object.is-extensible":246,"../modules/es.object.is-frozen":247,"../modules/es.object.is-sealed":248,"../modules/es.object.keys":250,"../modules/es.object.lookup-getter":251,"../modules/es.object.lookup-setter":252,"../modules/es.object.prevent-extensions":253,"../modules/es.object.seal":254,"../modules/es.object.set-prototype-of":255,"../modules/es.object.to-string":256,"../modules/es.object.values":257,"../modules/es.parse-float":258,"../modules/es.parse-int":259,"../modules/es.promise":262,"../modules/es.promise.all-settled":260,"../modules/es.promise.finally":261,"../modules/es.reflect.apply":263,"../modules/es.reflect.construct":264,"../modules/es.reflect.define-property":265,"../modules/es.reflect.delete-property":266,"../modules/es.reflect.get":269,"../modules/es.reflect.get-own-property-descriptor":267,"../modules/es.reflect.get-prototype-of":268,"../modules/es.reflect.has":270,"../modules/es.reflect.is-extensible":271,"../modules/es.reflect.own-keys":272,"../modules/es.reflect.prevent-extensions":273,"../modules/es.reflect.set":275,"../modules/es.reflect.set-prototype-of":274,"../modules/es.regexp.constructor":276,"../modules/es.regexp.exec":277,"../modules/es.regexp.flags":278,"../modules/es.regexp.sticky":279,"../modules/es.regexp.test":280,"../modules/es.regexp.to-string":281,"../modules/es.set":282,"../modules/es.string.anchor":283,"../modules/es.string.big":284,"../modules/es.string.blink":285,"../modules/es.string.bold":286,"../modules/es.string.code-point-at":287,"../modules/es.string.ends-with":288,"../modules/es.string.fixed":289,"../modules/es.string.fontcolor":290,"../modules/es.string.fontsize":291,"../modules/es.string.from-code-point":292,"../modules/es.string.includes":293,"../modules/es.string.italics":294,"../modules/es.string.iterator":295,"../modules/es.string.link":296,"../modules/es.string.match":298,"../modules/es.string.match-all":297,"../modules/es.string.pad-end":299,"../modules/es.string.pad-start":300,"../modules/es.string.raw":301,"../modules/es.string.repeat":302,"../modules/es.string.replace":303,"../modules/es.string.search":304,"../modules/es.string.small":305,"../modules/es.string.split":306,"../modules/es.string.starts-with":307,"../modules/es.string.strike":308,"../modules/es.string.sub":309,"../modules/es.string.sup":310,"../modules/es.string.trim":313,"../modules/es.string.trim-end":311,"../modules/es.string.trim-start":312,"../modules/es.symbol":319,"../modules/es.symbol.async-iterator":314,"../modules/es.symbol.description":315,"../modules/es.symbol.has-instance":316,"../modules/es.symbol.is-concat-spreadable":317,"../modules/es.symbol.iterator":318,"../modules/es.symbol.match":321,"../modules/es.symbol.match-all":320,"../modules/es.symbol.replace":322,"../modules/es.symbol.search":323,"../modules/es.symbol.species":324,"../modules/es.symbol.split":325,"../modules/es.symbol.to-primitive":326,"../modules/es.symbol.to-string-tag":327,"../modules/es.symbol.unscopables":328,"../modules/es.typed-array.copy-within":329,"../modules/es.typed-array.every":330,"../modules/es.typed-array.fill":331,"../modules/es.typed-array.filter":332,"../modules/es.typed-array.find":334,"../modules/es.typed-array.find-index":333,"../modules/es.typed-array.float32-array":335,"../modules/es.typed-array.float64-array":336,"../modules/es.typed-array.for-each":337,"../modules/es.typed-array.from":338,"../modules/es.typed-array.includes":339,"../modules/es.typed-array.index-of":340,"../modules/es.typed-array.int16-array":341,"../modules/es.typed-array.int32-array":342,"../modules/es.typed-array.int8-array":343,"../modules/es.typed-array.iterator":344,"../modules/es.typed-array.join":345,"../modules/es.typed-array.last-index-of":346,"../modules/es.typed-array.map":347,"../modules/es.typed-array.of":348,"../modules/es.typed-array.reduce":350,"../modules/es.typed-array.reduce-right":349,"../modules/es.typed-array.reverse":351,"../modules/es.typed-array.set":352,"../modules/es.typed-array.slice":353,"../modules/es.typed-array.some":354,"../modules/es.typed-array.sort":355,"../modules/es.typed-array.subarray":356,"../modules/es.typed-array.to-locale-string":357,"../modules/es.typed-array.to-string":358,"../modules/es.typed-array.uint16-array":359,"../modules/es.typed-array.uint32-array":360,"../modules/es.typed-array.uint8-array":361,"../modules/es.typed-array.uint8-clamped-array":362,"../modules/es.weak-map":363,"../modules/es.weak-set":364}],2:[function(e,t,n){t.exports=function(e){if("function"!=typeof e)throw TypeError(String(e)+" is not a function");return e}},{}],3:[function(e,t,n){var r=e("../internals/is-object");t.exports=function(e){if(!r(e)&&null!==e)throw TypeError("Can't set "+String(e)+" as a prototype");return e}},{"../internals/is-object":75}],4:[function(e,t,n){var r=e("../internals/well-known-symbol"),i=e("../internals/object-create"),o=e("../internals/object-define-property"),a=r("unscopables"),s=Array.prototype;null==s[a]&&o.f(s,a,{configurable:!0,value:i(null)}),t.exports=function(e){s[a][e]=!0}},{"../internals/object-create":96,"../internals/object-define-property":98,"../internals/well-known-symbol":156}],5:[function(e,t,n){"use strict";var r=e("../internals/string-multibyte").charAt;t.exports=function(e,t,n){return t+(n?r(e,t).length:1)}},{"../internals/string-multibyte":131}],6:[function(e,t,n){t.exports=function(e,t,n){if(!(e instanceof t))throw TypeError("Incorrect "+(n?n+" ":"")+"invocation");return e}},{}],7:[function(e,t,n){var r=e("../internals/is-object");t.exports=function(e){if(!r(e))throw TypeError(String(e)+" is not an object");return e}},{"../internals/is-object":75}],8:[function(e,t,n){t.exports="undefined"!=typeof ArrayBuffer&&"undefined"!=typeof DataView},{}],9:[function(e,t,n){"use strict";function r(e){return l(e)&&c(N,u(e))}var i,o=e("../internals/array-buffer-native"),a=e("../internals/descriptors"),s=e("../internals/global"),l=e("../internals/is-object"),c=e("../internals/has"),u=e("../internals/classof"),f=e("../internals/create-non-enumerable-property"),d=e("../internals/redefine"),p=e("../internals/object-define-property").f,h=e("../internals/object-get-prototype-of"),m=e("../internals/object-set-prototype-of"),g=e("../internals/well-known-symbol"),y=e("../internals/uid"),b=s.Int8Array,v=b&&b.prototype,x=s.Uint8ClampedArray,w=x&&x.prototype,j=b&&h(b),C=v&&h(v),E=Object.prototype,S=E.isPrototypeOf,O=g("toStringTag"),k=y("TYPED_ARRAY_TAG"),A=o&&!!m&&"Opera"!==u(s.opera),I=!1,N={Int8Array:1,Uint8Array:1,Uint8ClampedArray:1,Int16Array:2,Uint16Array:2,Int32Array:4,Uint32Array:4,Float32Array:4,Float64Array:8};for(i in N)s[i]||(A=!1);if((!A||"function"!=typeof j||j===Function.prototype)&&(j=function(){throw TypeError("Incorrect invocation")},A))for(i in N)s[i]&&m(s[i],j);if((!A||!C||C===E)&&(C=j.prototype,A))for(i in N)s[i]&&m(s[i].prototype,C);if(A&&h(w)!==C&&m(w,C),a&&!c(C,O))for(i in I=!0,p(C,O,{get:function(){return l(this)?this[k]:void 0}}),N)s[i]&&f(s[i],k,i);t.exports={NATIVE_ARRAY_BUFFER_VIEWS:A,TYPED_ARRAY_TAG:I&&k,aTypedArray:function(e){if(r(e))return e;throw TypeError("Target is not a typed array")},aTypedArrayConstructor:function(e){if(m){if(S.call(j,e))return e}else for(var t in N)if(c(N,i)){var n=s[t];if(n&&(e===n||S.call(n,e)))return e}throw TypeError("Target is not a typed array constructor")},exportTypedArrayMethod:function(e,t,n){if(a){if(n)for(var r in N){var i=s[r];i&&c(i.prototype,e)&&delete i.prototype[e]}C[e]&&!n||d(C,e,n?t:A&&v[e]||t)}},exportTypedArrayStaticMethod:function(e,t,n){var r,i;if(a){if(m){if(n)for(r in N)(i=s[r])&&c(i,e)&&delete i[e];if(j[e]&&!n)return;try{return d(j,e,n?t:A&&b[e]||t)}catch(e){}}for(r in N)!(i=s[r])||i[e]&&!n||d(i,e,t)}},isView:function(e){var t=u(e);return"DataView"===t||c(N,t)},isTypedArray:r,TypedArray:j,TypedArrayPrototype:C}},{"../internals/array-buffer-native":8,"../internals/classof":26,"../internals/create-non-enumerable-property":35,"../internals/descriptors":42,"../internals/global":59,"../internals/has":60,"../internals/is-object":75,"../internals/object-define-property":98,"../internals/object-get-prototype-of":103,"../internals/object-set-prototype-of":108,"../internals/redefine":116,"../internals/uid":153,"../internals/well-known-symbol":156}],10:[function(e,t,n){"use strict";function r(e){return[255&e]}function i(e){return[255&e,e>>8&255]}function o(e){return[255&e,e>>8&255,e>>16&255,e>>24&255]}function a(e){return e[3]<<24|e[2]<<16|e[1]<<8|e[0]}function s(e){return X(e,23,4)}function l(e){return X(e,52,8)}function c(e,t){O(e[P],t,{get:function(){return N(this)[t]}})}function u(e,t,n,r){var i=w(n),o=N(e);if(i+t>o.byteLength)throw q(M);var a=N(o.buffer).bytes,s=i+o.byteOffset,l=a.slice(s,s+t);return r?l:l.reverse()}function f(e,t,n,r,i,o){var a=w(n),s=N(e);if(a+t>s.byteLength)throw q(M);for(var l=N(s.buffer).bytes,c=a+s.byteOffset,u=r(+i),f=0;f<t;f++)l[c+f]=u[o?f:t-f-1]}var d=e("../internals/global"),p=e("../internals/descriptors"),h=e("../internals/array-buffer-native"),m=e("../internals/create-non-enumerable-property"),g=e("../internals/redefine-all"),y=e("../internals/fails"),b=e("../internals/an-instance"),v=e("../internals/to-integer"),x=e("../internals/to-length"),w=e("../internals/to-index"),j=e("../internals/ieee754"),C=e("../internals/object-get-prototype-of"),E=e("../internals/object-set-prototype-of"),S=e("../internals/object-get-own-property-names").f,O=e("../internals/object-define-property").f,k=e("../internals/array-fill"),A=e("../internals/set-to-string-tag"),I=e("../internals/internal-state"),N=I.get,T=I.set,L="ArrayBuffer",R="DataView",P="prototype",M="Wrong index",D=d[L],_=D,F=d[R],Y=F&&F[P],U=Object.prototype,q=d.RangeError,X=j.pack,z=j.unpack;if(h){if(!y(function(){D(1)})||!y(function(){new D(-1)})||y(function(){return new D,new D(1.5),new D(NaN),D.name!=L})){for(var W,B=(_=function(e){return b(this,_),new D(w(e))})[P]=D[P],H=S(D),G=0;H.length>G;)(W=H[G++])in _||m(_,W,D[W]);B.constructor=_}E&&C(Y)!==U&&E(Y,U);var V=new F(new _(2)),$=Y.setInt8;V.setInt8(0,2147483648),V.setInt8(1,2147483649),!V.getInt8(0)&&V.getInt8(1)||g(Y,{setInt8:function(e,t){$.call(this,e,t<<24>>24)},setUint8:function(e,t){$.call(this,e,t<<24>>24)}},{unsafe:!0})}else _=function(e){b(this,_,L);var t=w(e);T(this,{bytes:k.call(new Array(t),0),byteLength:t}),p||(this.byteLength=t)},F=function(e,t,n){b(this,F,R),b(e,_,R);var r=N(e).byteLength,i=v(t);if(i<0||r<i)throw q("Wrong offset");if(r<i+(n=void 0===n?r-i:x(n)))throw q("Wrong length");T(this,{buffer:e,byteLength:n,byteOffset:i}),p||(this.buffer=e,this.byteLength=n,this.byteOffset=i)},p&&(c(_,"byteLength"),c(F,"buffer"),c(F,"byteLength"),c(F,"byteOffset")),g(F[P],{getInt8:function(e){return u(this,1,e)[0]<<24>>24},getUint8:function(e){return u(this,1,e)[0]},getInt16:function(e,t){var n=u(this,2,e,1<arguments.length?t:void 0);return(n[1]<<8|n[0])<<16>>16},getUint16:function(e,t){var n=u(this,2,e,1<arguments.length?t:void 0);return n[1]<<8|n[0]},getInt32:function(e,t){return a(u(this,4,e,1<arguments.length?t:void 0))},getUint32:function(e,t){return a(u(this,4,e,1<arguments.length?t:void 0))>>>0},getFloat32:function(e,t){return z(u(this,4,e,1<arguments.length?t:void 0),23)},getFloat64:function(e,t){return z(u(this,8,e,1<arguments.length?t:void 0),52)},setInt8:function(e,t){f(this,1,e,r,t)},setUint8:function(e,t){f(this,1,e,r,t)},setInt16:function(e,t,n){f(this,2,e,i,t,2<arguments.length?n:void 0)},setUint16:function(e,t,n){f(this,2,e,i,t,2<arguments.length?n:void 0)},setInt32:function(e,t,n){f(this,4,e,o,t,2<arguments.length?n:void 0)},setUint32:function(e,t,n){f(this,4,e,o,t,2<arguments.length?n:void 0)},setFloat32:function(e,t,n){f(this,4,e,s,t,2<arguments.length?n:void 0)},setFloat64:function(e,t,n){f(this,8,e,l,t,2<arguments.length?n:void 0)}});A(_,L),A(F,R),t.exports={ArrayBuffer:_,DataView:F}},{"../internals/an-instance":6,"../internals/array-buffer-native":8,"../internals/array-fill":12,"../internals/create-non-enumerable-property":35,"../internals/descriptors":42,"../internals/fails":50,"../internals/global":59,"../internals/ieee754":65,"../internals/internal-state":70,"../internals/object-define-property":98,"../internals/object-get-own-property-names":101,"../internals/object-get-prototype-of":103,"../internals/object-set-prototype-of":108,"../internals/redefine-all":115,"../internals/set-to-string-tag":125,"../internals/to-index":141,"../internals/to-integer":143,"../internals/to-length":144}],11:[function(e,t,n){"use strict";var u=e("../internals/to-object"),f=e("../internals/to-absolute-index"),d=e("../internals/to-length"),p=Math.min;t.exports=[].copyWithin||function(e,t,n){var r=u(this),i=d(r.length),o=f(e,i),a=f(t,i),s=2<arguments.length?n:void 0,l=p((void 0===s?i:f(s,i))-a,i-o),c=1;for(a<o&&o<a+l&&(c=-1,a+=l-1,o+=l-1);0<l--;)a in r?r[o]=r[a]:delete r[o],o+=c,a+=c;return r}},{"../internals/to-absolute-index":140,"../internals/to-length":144,"../internals/to-object":145}],12:[function(e,t,n){"use strict";var c=e("../internals/to-object"),u=e("../internals/to-absolute-index"),f=e("../internals/to-length");t.exports=function(e,t,n){for(var r=c(this),i=f(r.length),o=arguments.length,a=u(1<o?t:void 0,i),s=2<o?n:void 0,l=void 0===s?i:u(s,i);a<l;)r[a++]=e;return r}},{"../internals/to-absolute-index":140,"../internals/to-length":144,"../internals/to-object":145}],13:[function(e,t,n){"use strict";var r=e("../internals/array-iteration").forEach,i=e("../internals/array-method-is-strict"),o=e("../internals/array-method-uses-to-length"),a=i("forEach"),s=o("forEach");t.exports=a&&s?[].forEach:function(e,t){return r(this,e,1<arguments.length?t:void 0)}},{"../internals/array-iteration":16,"../internals/array-method-is-strict":19,"../internals/array-method-uses-to-length":20}],14:[function(e,t,n){"use strict";var g=e("../internals/function-bind-context"),y=e("../internals/to-object"),b=e("../internals/call-with-safe-iteration-closing"),v=e("../internals/is-array-iterator-method"),x=e("../internals/to-length"),w=e("../internals/create-property"),j=e("../internals/get-iterator-method");t.exports=function(e,t,n){var r,i,o,a,s,l,c=y(e),u="function"==typeof this?this:Array,f=arguments.length,d=1<f?t:void 0,p=void 0!==d,h=j(c),m=0;if(p&&(d=g(d,2<f?n:void 0,2)),null==h||u==Array&&v(h))for(i=new u(r=x(c.length));m<r;m++)l=p?d(c[m],m):c[m],w(i,m,l);else for(s=(a=h.call(c)).next,i=new u;!(o=s.call(a)).done;m++)l=p?b(a,d,[o.value,m],!0):o.value,w(i,m,l);return i.length=m,i}},{"../internals/call-with-safe-iteration-closing":23,"../internals/create-property":37,"../internals/function-bind-context":54,"../internals/get-iterator-method":57,"../internals/is-array-iterator-method":71,"../internals/to-length":144,"../internals/to-object":145}],15:[function(e,t,n){function r(s){return function(e,t,n){var r,i=l(e),o=c(i.length),a=u(n,o);if(s&&t!=t){for(;a<o;)if((r=i[a++])!=r)return!0}else for(;a<o;a++)if((s||a in i)&&i[a]===t)return s||a||0;return!s&&-1}}var l=e("../internals/to-indexed-object"),c=e("../internals/to-length"),u=e("../internals/to-absolute-index");t.exports={includes:r(!0),indexOf:r(!1)}},{"../internals/to-absolute-index":140,"../internals/to-indexed-object":142,"../internals/to-length":144}],16:[function(e,t,n){function r(p){var h=1==p,m=2==p,g=3==p,y=4==p,b=6==p,v=5==p||b;return function(e,t,n,r){for(var i,o,a=j(e),s=w(a),l=x(t,n,3),c=C(s.length),u=0,f=r||E,d=h?f(e,c):m?f(e,0):void 0;u<c;u++)if((v||u in s)&&(o=l(i=s[u],u,a),p))if(h)d[u]=o;else if(o)switch(p){case 3:return!0;case 5:return i;case 6:return u;case 2:S.call(d,i)}else if(y)return!1;return b?-1:g||y?y:d}}var x=e("../internals/function-bind-context"),w=e("../internals/indexed-object"),j=e("../internals/to-object"),C=e("../internals/to-length"),E=e("../internals/array-species-create"),S=[].push;t.exports={forEach:r(0),map:r(1),filter:r(2),some:r(3),every:r(4),find:r(5),findIndex:r(6)}},{"../internals/array-species-create":22,"../internals/function-bind-context":54,"../internals/indexed-object":66,"../internals/to-length":144,"../internals/to-object":145}],17:[function(e,t,n){"use strict";var o=e("../internals/to-indexed-object"),a=e("../internals/to-integer"),s=e("../internals/to-length"),r=e("../internals/array-method-is-strict"),i=e("../internals/array-method-uses-to-length"),l=Math.min,c=[].lastIndexOf,u=!!c&&1/[1].lastIndexOf(1,-0)<0,f=r("lastIndexOf"),d=i("indexOf",{ACCESSORS:!0,1:0}),p=u||!f||!d;t.exports=p?function(e,t){if(u)return c.apply(this,arguments)||0;var n=o(this),r=s(n.length),i=r-1;for(1<arguments.length&&(i=l(i,a(t))),i<0&&(i=r+i);0<=i;i--)if(i in n&&n[i]===e)return i||0;return-1}:c},{"../internals/array-method-is-strict":19,"../internals/array-method-uses-to-length":20,"../internals/to-indexed-object":142,"../internals/to-integer":143,"../internals/to-length":144}],18:[function(e,t,n){var r=e("../internals/fails"),i=e("../internals/well-known-symbol"),o=e("../internals/engine-v8-version"),a=i("species");t.exports=function(t){return 51<=o||!r(function(){var e=[];return(e.constructor={})[a]=function(){return{foo:1}},1!==e[t](Boolean).foo})}},{"../internals/engine-v8-version":47,"../internals/fails":50,"../internals/well-known-symbol":156}],19:[function(e,t,n){"use strict";var r=e("../internals/fails");t.exports=function(e,t){var n=[][e];return!!n&&r(function(){n.call(null,t||function(){throw 1},1)})}},{"../internals/fails":50}],20:[function(e,t,n){function a(e){throw e}var s=e("../internals/descriptors"),l=e("../internals/fails"),c=e("../internals/has"),u=Object.defineProperty,f={};t.exports=function(e,t){if(c(f,e))return f[e];var n=[][e],r=!!c(t=t||{},"ACCESSORS")&&t.ACCESSORS,i=c(t,0)?t[0]:a,o=c(t,1)?t[1]:void 0;return f[e]=!!n&&!l(function(){if(r&&!s)return!0;var e={length:-1};r?u(e,1,{enumerable:!0,get:a}):e[1]=1,n.call(e,i,o)})}},{"../internals/descriptors":42,"../internals/fails":50,"../internals/has":60}],21:[function(e,t,n){function r(c){return function(e,t,n,r){u(t);var i=f(e),o=d(i),a=p(i.length),s=c?a-1:0,l=c?-1:1;if(n<2)for(;;){if(s in o){r=o[s],s+=l;break}if(s+=l,c?s<0:a<=s)throw TypeError("Reduce of empty array with no initial value")}for(;c?0<=s:s<a;s+=l)s in o&&(r=t(r,o[s],s,i));return r}}var u=e("../internals/a-function"),f=e("../internals/to-object"),d=e("../internals/indexed-object"),p=e("../internals/to-length");t.exports={left:r(!1),right:r(!0)}},{"../internals/a-function":2,"../internals/indexed-object":66,"../internals/to-length":144,"../internals/to-object":145}],22:[function(e,t,n){var r=e("../internals/is-object"),i=e("../internals/is-array"),o=e("../internals/well-known-symbol")("species");t.exports=function(e,t){var n;return i(e)&&("function"!=typeof(n=e.constructor)||n!==Array&&!i(n.prototype)?r(n)&&null===(n=n[o])&&(n=void 0):n=void 0),new(void 0===n?Array:n)(0===t?0:t)}},{"../internals/is-array":72,"../internals/is-object":75,"../internals/well-known-symbol":156}],23:[function(e,t,n){var o=e("../internals/an-object");t.exports=function(t,e,n,r){try{return r?e(o(n)[0],n[1]):e(n)}catch(e){var i=t.return;throw void 0!==i&&o(i.call(t)),e}}},{"../internals/an-object":7}],24:[function(e,t,n){var i=e("../internals/well-known-symbol")("iterator"),o=!1;try{var r=0,a={next:function(){return{done:!!r++}},return:function(){o=!0}};a[i]=function(){return this},Array.from(a,function(){throw 2})}catch(e){}t.exports=function(e,t){if(!t&&!o)return!1;var n=!1;try{var r={};r[i]=function(){return{next:function(){return{done:n=!0}}}},e(r)}catch(e){}return n}},{"../internals/well-known-symbol":156}],25:[function(e,t,n){var r={}.toString;t.exports=function(e){return r.call(e).slice(8,-1)}},{}],26:[function(e,t,n){var r=e("../internals/to-string-tag-support"),i=e("../internals/classof-raw"),o=e("../internals/well-known-symbol")("toStringTag"),a="Arguments"==i(function(){return arguments}());t.exports=r?i: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),o))?n:a?i(t):"Object"==(r=i(t))&&"function"==typeof t.callee?"Arguments":r}},{"../internals/classof-raw":25,"../internals/to-string-tag-support":149,"../internals/well-known-symbol":156}],27:[function(e,t,n){"use strict";var c=e("../internals/object-define-property").f,u=e("../internals/object-create"),f=e("../internals/redefine-all"),d=e("../internals/function-bind-context"),p=e("../internals/an-instance"),h=e("../internals/iterate"),a=e("../internals/define-iterator"),s=e("../internals/set-species"),m=e("../internals/descriptors"),g=e("../internals/internal-metadata").fastKey,r=e("../internals/internal-state"),y=r.set,b=r.getterFor;t.exports={getConstructor:function(e,n,r,i){function o(e,t,n){var r,i,o=s(e),a=l(e,t);return a?a.value=n:(o.last=a={index:i=g(t,!0),key:t,value:n,previous:r=o.last,next:void 0,removed:!1},o.first||(o.first=a),r&&(r.next=a),m?o.size++:e.size++,"F"!==i&&(o.index[i]=a)),e}var a=e(function(e,t){p(e,a,n),y(e,{type:n,index:u(null),first:void 0,last:void 0,size:0}),m||(e.size=0),null!=t&&h(t,e[i],e,r)}),s=b(n),l=function(e,t){var n,r=s(e),i=g(t);if("F"!==i)return r.index[i];for(n=r.first;n;n=n.next)if(n.key==t)return n};return f(a.prototype,{clear:function(){for(var e=s(this),t=e.index,n=e.first;n;)n.removed=!0,n.previous&&(n.previous=n.previous.next=void 0),delete t[n.index],n=n.next;e.first=e.last=void 0,m?e.size=0:this.size=0},delete:function(e){var t=s(this),n=l(this,e);if(n){var r=n.next,i=n.previous;delete t.index[n.index],n.removed=!0,i&&(i.next=r),r&&(r.previous=i),t.first==n&&(t.first=r),t.last==n&&(t.last=i),m?t.size--:this.size--}return!!n},forEach:function(e,t){for(var n,r=s(this),i=d(e,1<arguments.length?t:void 0,3);n=n?n.next:r.first;)for(i(n.value,n.key,this);n&&n.removed;)n=n.previous},has:function(e){return!!l(this,e)}}),f(a.prototype,r?{get:function(e){var t=l(this,e);return t&&t.value},set:function(e,t){return o(this,0===e?0:e,t)}}:{add:function(e){return o(this,e=0===e?0:e,e)}}),m&&c(a.prototype,"size",{get:function(){return s(this).size}}),a},setStrong:function(e,t,n){var r=t+" Iterator",i=b(t),o=b(r);a(e,t,function(e,t){y(this,{type:r,target:e,state:i(e),kind:t,last:void 0})},function(){for(var e=o(this),t=e.kind,n=e.last;n&&n.removed;)n=n.previous;return e.target&&(e.last=n=n?n.next:e.state.first)?"keys"==t?{value:n.key,done:!1}:"values"==t?{value:n.value,done:!1}:{value:[n.key,n.value],done:!1}:{value:e.target=void 0,done:!0}},n?"entries":"values",!n,!0),s(t)}}},{"../internals/an-instance":6,"../internals/define-iterator":40,"../internals/descriptors":42,"../internals/function-bind-context":54,"../internals/internal-metadata":69,"../internals/internal-state":70,"../internals/iterate":78,"../internals/object-create":96,"../internals/object-define-property":98,"../internals/redefine-all":115,"../internals/set-species":124}],28:[function(e,t,n){"use strict";function l(e){return e.frozen||(e.frozen=new v)}function r(e,t){return a(e.entries,function(e){return e[0]===t})}var c=e("../internals/redefine-all"),u=e("../internals/internal-metadata").getWeakData,f=e("../internals/an-object"),d=e("../internals/is-object"),p=e("../internals/an-instance"),h=e("../internals/iterate"),i=e("../internals/array-iteration"),m=e("../internals/has"),o=e("../internals/internal-state"),g=o.set,y=o.getterFor,a=i.find,s=i.findIndex,b=0,v=function(){this.entries=[]};v.prototype={get:function(e){var t=r(this,e);if(t)return t[1]},has:function(e){return!!r(this,e)},set:function(e,t){var n=r(this,e);n?n[1]=t:this.entries.push([e,t])},delete:function(t){var e=s(this.entries,function(e){return e[0]===t});return~e&&this.entries.splice(e,1),!!~e}},t.exports={getConstructor:function(e,n,r,i){function o(e,t,n){var r=s(e),i=u(f(t),!0);return!0===i?l(r).set(t,n):i[r.id]=n,e}var a=e(function(e,t){p(e,a,n),g(e,{type:n,id:b++,frozen:void 0}),null!=t&&h(t,e[i],e,r)}),s=y(n);return c(a.prototype,{delete:function(e){var t=s(this);if(!d(e))return!1;var n=u(e);return!0===n?l(t).delete(e):n&&m(n,t.id)&&delete n[t.id]},has:function(e){var t=s(this);if(!d(e))return!1;var n=u(e);return!0===n?l(t).has(e):n&&m(n,t.id)}}),c(a.prototype,r?{get:function(e){var t=s(this);if(d(e)){var n=u(e);return!0===n?l(t).get(e):n?n[t.id]:void 0}},set:function(e,t){return o(this,e,t)}}:{add:function(e){return o(this,e,!0)}}),a}}},{"../internals/an-instance":6,"../internals/an-object":7,"../internals/array-iteration":16,"../internals/has":60,"../internals/internal-metadata":69,"../internals/internal-state":70,"../internals/is-object":75,"../internals/iterate":78,"../internals/redefine-all":115}],29:[function(e,t,n){"use strict";var g=e("../internals/export"),y=e("../internals/global"),b=e("../internals/is-forced"),v=e("../internals/redefine"),x=e("../internals/internal-metadata"),w=e("../internals/iterate"),j=e("../internals/an-instance"),C=e("../internals/is-object"),E=e("../internals/fails"),S=e("../internals/check-correctness-of-iteration"),O=e("../internals/set-to-string-tag"),k=e("../internals/inherit-if-required");t.exports=function(r,e,t){function n(e){var n=l[e];v(l,e,"add"==e?function(e){return n.call(this,0===e?0:e),this}:"delete"==e?function(e){return!(o&&!C(e))&&n.call(this,0===e?0:e)}:"get"==e?function(e){return o&&!C(e)?void 0:n.call(this,0===e?0:e)}:"has"==e?function(e){return!(o&&!C(e))&&n.call(this,0===e?0:e)}:function(e,t){return n.call(this,0===e?0:e,t),this})}var i=-1!==r.indexOf("Map"),o=-1!==r.indexOf("Weak"),a=i?"set":"add",s=y[r],l=s&&s.prototype,c=s,u={};if(b(r,"function"!=typeof s||!(o||l.forEach&&!E(function(){(new s).entries().next()}))))c=t.getConstructor(e,r,i,a),x.REQUIRED=!0;else if(b(r,!0)){var f=new c,d=f[a](o?{}:-0,1)!=f,p=E(function(){f.has(1)}),h=S(function(e){new s(e)}),m=!o&&E(function(){for(var e=new s,t=5;t--;)e[a](t,t);return!e.has(-0)});h||(((c=e(function(e,t){j(e,c,r);var n=k(new s,e,c);return null!=t&&w(t,n[a],n,i),n})).prototype=l).constructor=c),(p||m)&&(n("delete"),n("has"),i&&n("get")),(m||d)&&n(a),o&&l.clear&&delete l.clear}return u[r]=c,g({global:!0,forced:c!=s},u),O(c,r),o||t.setStrong(c,r,i),c}},{"../internals/an-instance":6,"../internals/check-correctness-of-iteration":24,"../internals/export":49,"../internals/fails":50,"../internals/global":59,"../internals/inherit-if-required":67,"../internals/internal-metadata":69,"../internals/is-forced":73,"../internals/is-object":75,"../internals/iterate":78,"../internals/redefine":116,"../internals/set-to-string-tag":125}],30:[function(e,t,n){var s=e("../internals/has"),l=e("../internals/own-keys"),c=e("../internals/object-get-own-property-descriptor"),u=e("../internals/object-define-property");t.exports=function(e,t){for(var n=l(t),r=u.f,i=c.f,o=0;o<n.length;o++){var a=n[o];s(e,a)||r(e,a,i(t,a))}}},{"../internals/has":60,"../internals/object-define-property":98,"../internals/object-get-own-property-descriptor":99,"../internals/own-keys":111}],31:[function(e,t,n){var r=e("../internals/well-known-symbol")("match");t.exports=function(t){var n=/./;try{"/./"[t](n)}catch(e){try{return n[r]=!1,"/./"[t](n)}catch(e){}}return!1}},{"../internals/well-known-symbol":156}],32:[function(e,t,n){var r=e("../internals/fails");t.exports=!r(function(){function e(){}return e.prototype.constructor=null,Object.getPrototypeOf(new e)!==e.prototype})},{"../internals/fails":50}],33:[function(e,t,n){var a=e("../internals/require-object-coercible"),s=/"/g;t.exports=function(e,t,n,r){var i=String(a(e)),o="<"+t;return""!==n&&(o+=" "+n+'="'+String(r).replace(s,"&quot;")+'"'),o+">"+i+"</"+t+">"}},{"../internals/require-object-coercible":121}],34:[function(e,t,n){"use strict";function i(){return this}var o=e("../internals/iterators-core").IteratorPrototype,a=e("../internals/object-create"),s=e("../internals/create-property-descriptor"),l=e("../internals/set-to-string-tag"),c=e("../internals/iterators");t.exports=function(e,t,n){var r=t+" Iterator";return e.prototype=a(o,{next:s(1,n)}),l(e,r,!1,!0),c[r]=i,e}},{"../internals/create-property-descriptor":36,"../internals/iterators":80,"../internals/iterators-core":79,"../internals/object-create":96,"../internals/set-to-string-tag":125}],35:[function(e,t,n){var r=e("../internals/descriptors"),i=e("../internals/object-define-property"),o=e("../internals/create-property-descriptor");t.exports=r?function(e,t,n){return i.f(e,t,o(1,n))}:function(e,t,n){return e[t]=n,e}},{"../internals/create-property-descriptor":36,"../internals/descriptors":42,"../internals/object-define-property":98}],36:[function(e,t,n){t.exports=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}}},{}],37:[function(e,t,n){"use strict";var i=e("../internals/to-primitive"),o=e("../internals/object-define-property"),a=e("../internals/create-property-descriptor");t.exports=function(e,t,n){var r=i(t);r in e?o.f(e,r,a(0,n)):e[r]=n}},{"../internals/create-property-descriptor":36,"../internals/object-define-property":98,"../internals/to-primitive":148}],38:[function(e,t,n){"use strict";var r=e("../internals/fails"),i=e("../internals/string-pad").start,o=Math.abs,a=Date.prototype,s=a.getTime,l=a.toISOString;t.exports=r(function(){return"0385-07-25T07:06:39.999Z"!=l.call(new Date(-5e13-1))})||!r(function(){l.call(new Date(NaN))})?function(){if(!isFinite(s.call(this)))throw RangeError("Invalid time value");var e=this,t=e.getUTCFullYear(),n=e.getUTCMilliseconds(),r=t<0?"-":9999<t?"+":"";return r+i(o(t),r?6:4,0)+"-"+i(e.getUTCMonth()+1,2,0)+"-"+i(e.getUTCDate(),2,0)+"T"+i(e.getUTCHours(),2,0)+":"+i(e.getUTCMinutes(),2,0)+":"+i(e.getUTCSeconds(),2,0)+"."+i(n,3,0)+"Z"}:l},{"../internals/fails":50,"../internals/string-pad":133}],39:[function(e,t,n){"use strict";var r=e("../internals/an-object"),i=e("../internals/to-primitive");t.exports=function(e){if("string"!==e&&"number"!==e&&"default"!==e)throw TypeError("Incorrect hint");return i(r(this),"number"!==e)}},{"../internals/an-object":7,"../internals/to-primitive":148}],40:[function(e,t,n){"use strict";function y(){return this}var b=e("../internals/export"),v=e("../internals/create-iterator-constructor"),x=e("../internals/object-get-prototype-of"),w=e("../internals/object-set-prototype-of"),j=e("../internals/set-to-string-tag"),C=e("../internals/create-non-enumerable-property"),E=e("../internals/redefine"),r=e("../internals/well-known-symbol"),S=e("../internals/is-pure"),O=e("../internals/iterators"),i=e("../internals/iterators-core"),k=i.IteratorPrototype,A=i.BUGGY_SAFARI_ITERATORS,I=r("iterator"),N="values",T="entries";t.exports=function(e,t,n,r,i,o,a){v(n,t,r);function s(e){if(e===i&&m)return m;if(!A&&e in p)return p[e];switch(e){case"keys":case N:case T:return function(){return new n(this,e)}}return function(){return new n(this)}}var l,c,u,f=t+" Iterator",d=!1,p=e.prototype,h=p[I]||p["@@iterator"]||i&&p[i],m=!A&&h||s(i),g="Array"==t&&p.entries||h;if(g&&(l=x(g.call(new e)),k!==Object.prototype&&l.next&&(S||x(l)===k||(w?w(l,k):"function"!=typeof l[I]&&C(l,I,y)),j(l,f,!0,!0),S&&(O[f]=y))),i==N&&h&&h.name!==N&&(d=!0,m=function(){return h.call(this)}),S&&!a||p[I]===m||C(p,I,m),O[t]=m,i)if(c={values:s(N),keys:o?m:s("keys"),entries:s(T)},a)for(u in c)!A&&!d&&u in p||E(p,u,c[u]);else b({target:t,proto:!0,forced:A||d},c);return c}},{"../internals/create-iterator-constructor":34,"../internals/create-non-enumerable-property":35,"../internals/export":49,"../internals/is-pure":76,"../internals/iterators":80,"../internals/iterators-core":79,"../internals/object-get-prototype-of":103,"../internals/object-set-prototype-of":108,"../internals/redefine":116,"../internals/set-to-string-tag":125,"../internals/well-known-symbol":156}],41:[function(e,t,n){var r=e("../internals/path"),i=e("../internals/has"),o=e("../internals/well-known-symbol-wrapped"),a=e("../internals/object-define-property").f;t.exports=function(e){var t=r.Symbol||(r.Symbol={});i(t,e)||a(t,e,{value:o.f(e)})}},{"../internals/has":60,"../internals/object-define-property":98,"../internals/path":112,"../internals/well-known-symbol-wrapped":155}],42:[function(e,t,n){var r=e("../internals/fails");t.exports=!r(function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]})},{"../internals/fails":50}],43:[function(e,t,n){var r=e("../internals/global"),i=e("../internals/is-object"),o=r.document,a=i(o)&&i(o.createElement);t.exports=function(e){return a?o.createElement(e):{}}},{"../internals/global":59,"../internals/is-object":75}],44:[function(e,t,n){t.exports={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}},{}],45:[function(e,t,n){var r=e("../internals/engine-user-agent");t.exports=/(iphone|ipod|ipad).*applewebkit/i.test(r)},{"../internals/engine-user-agent":46}],46:[function(e,t,n){var r=e("../internals/get-built-in");t.exports=r("navigator","userAgent")||""},{"../internals/get-built-in":56}],47:[function(e,t,n){var r,i,o=e("../internals/global"),a=e("../internals/engine-user-agent"),s=o.process,l=s&&s.versions,c=l&&l.v8;c?i=(r=c.split("."))[0]+r[1]:a&&(!(r=a.match(/Edge\/(\d+)/))||74<=r[1])&&(r=a.match(/Chrome\/(\d+)/))&&(i=r[1]),t.exports=i&&+i},{"../internals/engine-user-agent":46,"../internals/global":59}],48:[function(e,t,n){t.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},{}],49:[function(e,t,n){var u=e("../internals/global"),f=e("../internals/object-get-own-property-descriptor").f,d=e("../internals/create-non-enumerable-property"),p=e("../internals/redefine"),h=e("../internals/set-global"),m=e("../internals/copy-constructor-properties"),g=e("../internals/is-forced");t.exports=function(e,t){var n,r,i,o,a,s=e.target,l=e.global,c=e.stat;if(n=l?u:c?u[s]||h(s,{}):(u[s]||{}).prototype)for(r in t){if(o=t[r],i=e.noTargetGet?(a=f(n,r))&&a.value:n[r],!g(l?r:s+(c?".":"#")+r,e.forced)&&void 0!==i){if(typeof o==typeof i)continue;m(o,i)}(e.sham||i&&i.sham)&&d(o,"sham",!0),p(n,r,o,e)}}},{"../internals/copy-constructor-properties":30,"../internals/create-non-enumerable-property":35,"../internals/global":59,"../internals/is-forced":73,"../internals/object-get-own-property-descriptor":99,"../internals/redefine":116,"../internals/set-global":123}],50:[function(e,t,n){t.exports=function(e){try{return!!e()}catch(e){return!0}}},{}],51:[function(e,t,n){"use strict";e("../modules/es.regexp.exec");var f=e("../internals/redefine"),d=e("../internals/fails"),p=e("../internals/well-known-symbol"),h=e("../internals/regexp-exec"),m=e("../internals/create-non-enumerable-property"),g=p("species"),y=!d(function(){var e=/./;return e.exec=function(){var e=[];return e.groups={a:"7"},e},"7"!=="".replace(e,"$<a>")}),b="$0"==="a".replace(/./,"$0"),r=p("replace"),v=!!/./[r]&&""===/./[r]("a","$0"),x=!d(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]});t.exports=function(n,e,t,r){var i=p(n),o=!d(function(){var e={};return e[i]=function(){return 7},7!=""[n](e)}),a=o&&!d(function(){var e=!1,t=/a/;return"split"===n&&((t={constructor:{}}).constructor[g]=function(){return t},t.flags="",t[i]=/./[i]),t.exec=function(){return e=!0,null},t[i](""),!e});if(!o||!a||"replace"===n&&(!y||!b||v)||"split"===n&&!x){var s=/./[i],l=t(i,""[n],function(e,t,n,r,i){return t.exec===h?o&&!i?{done:!0,value:s.call(t,n,r)}:{done:!0,value:e.call(n,t,r)}:{done:!1}},{REPLACE_KEEPS_$0:b,REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE:v}),c=l[0],u=l[1];f(String.prototype,n,c),f(RegExp.prototype,i,2==e?function(e,t){return u.call(e,this,t)}:function(e){return u.call(e,this)})}r&&m(RegExp.prototype[i],"sham",!0)}},{"../internals/create-non-enumerable-property":35,"../internals/fails":50,"../internals/redefine":116,"../internals/regexp-exec":118,"../internals/well-known-symbol":156,"../modules/es.regexp.exec":277}],52:[function(e,t,n){"use strict";var d=e("../internals/is-array"),p=e("../internals/to-length"),h=e("../internals/function-bind-context"),m=function(e,t,n,r,i,o,a,s){for(var l,c=i,u=0,f=!!a&&h(a,s,3);u<r;){if(u in n){if(l=f?f(n[u],u,t):n[u],0<o&&d(l))c=m(e,t,l,p(l.length),c,o-1)-1;else{if(9007199254740991<=c)throw TypeError("Exceed the acceptable array length");e[c]=l}c++}u++}return c};t.exports=m},{"../internals/function-bind-context":54,"../internals/is-array":72,"../internals/to-length":144}],53:[function(e,t,n){var r=e("../internals/fails");t.exports=!r(function(){return Object.isExtensible(Object.preventExtensions({}))})},{"../internals/fails":50}],54:[function(e,t,n){var o=e("../internals/a-function");t.exports=function(r,i,e){if(o(r),void 0===i)return r;switch(e){case 0:return function(){return r.call(i)};case 1:return function(e){return r.call(i,e)};case 2:return function(e,t){return r.call(i,e,t)};case 3:return function(e,t,n){return r.call(i,e,t,n)}}return function(){return r.apply(i,arguments)}}},{"../internals/a-function":2}],55:[function(e,t,n){"use strict";var o=e("../internals/a-function"),a=e("../internals/is-object"),s=[].slice,l={};t.exports=Function.bind||function(t){var n=o(this),r=s.call(arguments,1),i=function(){var e=r.concat(s.call(arguments));return this instanceof i?function(e,t,n){if(!(t in l)){for(var r=[],i=0;i<t;i++)r[i]="a["+i+"]";l[t]=Function("C,a","return new C("+r.join(",")+")")}return l[t](e,n)}(n,e.length,e):n.apply(t,e)};return a(n.prototype)&&(i.prototype=n.prototype),i}},{"../internals/a-function":2,"../internals/is-object":75}],56:[function(e,t,n){function r(e){return"function"==typeof e?e:void 0}var i=e("../internals/path"),o=e("../internals/global");t.exports=function(e,t){return arguments.length<2?r(i[e])||r(o[e]):i[e]&&i[e][t]||o[e]&&o[e][t]}},{"../internals/global":59,"../internals/path":112}],57:[function(e,t,n){var r=e("../internals/classof"),i=e("../internals/iterators"),o=e("../internals/well-known-symbol")("iterator");t.exports=function(e){if(null!=e)return e[o]||e["@@iterator"]||i[r(e)]}},{"../internals/classof":26,"../internals/iterators":80,"../internals/well-known-symbol":156}],58:[function(e,t,n){var r=e("../internals/an-object"),i=e("../internals/get-iterator-method");t.exports=function(e){var t=i(e);if("function"!=typeof t)throw TypeError(String(e)+" is not iterable");return r(t.call(e))}},{"../internals/an-object":7,"../internals/get-iterator-method":57}],59:[function(e,n,t){(function(t){(function(){function e(e){return e&&e.Math==Math&&e}n.exports=e("object"==typeof globalThis&&globalThis)||e("object"==typeof window&&window)||e("object"==typeof self&&self)||e("object"==typeof t&&t)||Function("return this")()}).call(this)}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],60:[function(e,t,n){var r={}.hasOwnProperty;t.exports=function(e,t){return r.call(e,t)}},{}],61:[function(e,t,n){t.exports={}},{}],62:[function(e,t,n){var r=e("../internals/global");t.exports=function(e,t){var n=r.console;n&&n.error&&(1===arguments.length?n.error(e):n.error(e,t))}},{"../internals/global":59}],63:[function(e,t,n){var r=e("../internals/get-built-in");t.exports=r("document","documentElement")},{"../internals/get-built-in":56}],64:[function(e,t,n){var r=e("../internals/descriptors"),i=e("../internals/fails"),o=e("../internals/document-create-element");t.exports=!r&&!i(function(){return 7!=Object.defineProperty(o("div"),"a",{get:function(){return 7}}).a})},{"../internals/descriptors":42,"../internals/document-create-element":43,"../internals/fails":50}],65:[function(e,t,n){var p=Math.abs,h=Math.pow,m=Math.floor,g=Math.log,y=Math.LN2;t.exports={pack:function(e,t,n){var r,i,o,a=new Array(n),s=8*n-t-1,l=(1<<s)-1,c=l>>1,u=23===t?h(2,-24)-h(2,-77):0,f=e<0||0===e&&1/e<0?1:0,d=0;for((e=p(e))!=e||e===1/0?(i=e!=e?1:0,r=l):(r=m(g(e)/y),e*(o=h(2,-r))<1&&(r--,o*=2),2<=(e+=1<=r+c?u/o:u*h(2,1-c))*o&&(r++,o/=2),l<=r+c?(i=0,r=l):1<=r+c?(i=(e*o-1)*h(2,t),r+=c):(i=e*h(2,c-1)*h(2,t),r=0));8<=t;a[d++]=255&i,i/=256,t-=8);for(r=r<<t|i,s+=t;0<s;a[d++]=255&r,r/=256,s-=8);return a[--d]|=128*f,a},unpack:function(e,t){var n,r=e.length,i=8*r-t-1,o=(1<<i)-1,a=o>>1,s=i-7,l=r-1,c=e[l--],u=127&c;for(c>>=7;0<s;u=256*u+e[l],l--,s-=8);for(n=u&(1<<-s)-1,u>>=-s,s+=t;0<s;n=256*n+e[l],l--,s-=8);if(0===u)u=1-a;else{if(u===o)return n?NaN:c?-1/0:1/0;n+=h(2,t),u-=a}return(c?-1:1)*n*h(2,u-t)}}},{}],66:[function(e,t,n){var r=e("../internals/fails"),i=e("../internals/classof-raw"),o="".split;t.exports=r(function(){return!Object("z").propertyIsEnumerable(0)})?function(e){return"String"==i(e)?o.call(e,""):Object(e)}:Object},{"../internals/classof-raw":25,"../internals/fails":50}],67:[function(e,t,n){var o=e("../internals/is-object"),a=e("../internals/object-set-prototype-of");t.exports=function(e,t,n){var r,i;return a&&"function"==typeof(r=t.constructor)&&r!==n&&o(i=r.prototype)&&i!==n.prototype&&a(e,i),e}},{"../internals/is-object":75,"../internals/object-set-prototype-of":108}],68:[function(e,t,n){var r=e("../internals/shared-store"),i=Function.toString;"function"!=typeof r.inspectSource&&(r.inspectSource=function(e){return i.call(e)}),t.exports=r.inspectSource},{"../internals/shared-store":127}],69:[function(e,t,n){function r(e){s(e,u,{value:{objectID:"O"+ ++f,weakData:{}}})}var i=e("../internals/hidden-keys"),o=e("../internals/is-object"),a=e("../internals/has"),s=e("../internals/object-define-property").f,l=e("../internals/uid"),c=e("../internals/freezing"),u=l("meta"),f=0,d=Object.isExtensible||function(){return!0},p=t.exports={REQUIRED:!1,fastKey:function(e,t){if(!o(e))return"symbol"==typeof e?e:("string"==typeof e?"S":"P")+e;if(!a(e,u)){if(!d(e))return"F";if(!t)return"E";r(e)}return e[u].objectID},getWeakData:function(e,t){if(!a(e,u)){if(!d(e))return!0;if(!t)return!1;r(e)}return e[u].weakData},onFreeze:function(e){return c&&p.REQUIRED&&d(e)&&!a(e,u)&&r(e),e}};i[u]=!0},{"../internals/freezing":53,"../internals/has":60,"../internals/hidden-keys":61,"../internals/is-object":75,"../internals/object-define-property":98,"../internals/uid":153}],70:[function(e,t,n){var r,i,o,a=e("../internals/native-weak-map"),s=e("../internals/global"),l=e("../internals/is-object"),c=e("../internals/create-non-enumerable-property"),u=e("../internals/has"),f=e("../internals/shared-key"),d=e("../internals/hidden-keys"),p=s.WeakMap;if(a){var h=new p,m=h.get,g=h.has,y=h.set;r=function(e,t){return y.call(h,e,t),t},i=function(e){return m.call(h,e)||{}},o=function(e){return g.call(h,e)}}else{var b=f("state");d[b]=!0,r=function(e,t){return c(e,b,t),t},i=function(e){return u(e,b)?e[b]:{}},o=function(e){return u(e,b)}}t.exports={set:r,get:i,has:o,enforce:function(e){return o(e)?i(e):r(e,{})},getterFor:function(n){return function(e){var t;if(!l(e)||(t=i(e)).type!==n)throw TypeError("Incompatible receiver, "+n+" required");return t}}}},{"../internals/create-non-enumerable-property":35,"../internals/global":59,"../internals/has":60,"../internals/hidden-keys":61,"../internals/is-object":75,"../internals/native-weak-map":89,"../internals/shared-key":126}],71:[function(e,t,n){var r=e("../internals/well-known-symbol"),i=e("../internals/iterators"),o=r("iterator"),a=Array.prototype;t.exports=function(e){return void 0!==e&&(i.Array===e||a[o]===e)}},{"../internals/iterators":80,"../internals/well-known-symbol":156}],72:[function(e,t,n){var r=e("../internals/classof-raw");t.exports=Array.isArray||function(e){return"Array"==r(e)}},{"../internals/classof-raw":25}],73:[function(e,t,n){function r(e,t){var n=s[a(e)];return n==c||n!=l&&("function"==typeof t?i(t):!!t)}var i=e("../internals/fails"),o=/#|\.prototype\./,a=r.normalize=function(e){return String(e).replace(o,".").toLowerCase()},s=r.data={},l=r.NATIVE="N",c=r.POLYFILL="P";t.exports=r},{"../internals/fails":50}],74:[function(e,t,n){var r=e("../internals/is-object"),i=Math.floor;t.exports=function(e){return!r(e)&&isFinite(e)&&i(e)===e}},{"../internals/is-object":75}],75:[function(e,t,n){t.exports=function(e){return"object"==typeof e?null!==e:"function"==typeof e}},{}],76:[function(e,t,n){t.exports=!1},{}],77:[function(e,t,n){var r=e("../internals/is-object"),i=e("../internals/classof-raw"),o=e("../internals/well-known-symbol")("match");t.exports=function(e){var t;return r(e)&&(void 0!==(t=e[o])?!!t:"RegExp"==i(e))}},{"../internals/classof-raw":25,"../internals/is-object":75,"../internals/well-known-symbol":156}],78:[function(e,t,n){function p(e,t){this.stopped=e,this.result=t}var h=e("../internals/an-object"),m=e("../internals/is-array-iterator-method"),g=e("../internals/to-length"),y=e("../internals/function-bind-context"),b=e("../internals/get-iterator-method"),v=e("../internals/call-with-safe-iteration-closing");(t.exports=function(e,t,n,r,i){var o,a,s,l,c,u,f,d=y(t,n,r?2:1);if(i)o=e;else{if("function"!=typeof(a=b(e)))throw TypeError("Target is not iterable");if(m(a)){for(s=0,l=g(e.length);s<l;s++)if((c=r?d(h(f=e[s])[0],f[1]):d(e[s]))&&c instanceof p)return c;return new p(!1)}o=a.call(e)}for(u=o.next;!(f=u.call(o)).done;)if("object"==typeof(c=v(o,d,f.value,r))&&c&&c instanceof p)return c;return new p(!1)}).stop=function(e){return new p(!0,e)}},{"../internals/an-object":7,"../internals/call-with-safe-iteration-closing":23,"../internals/function-bind-context":54,"../internals/get-iterator-method":57,"../internals/is-array-iterator-method":71,"../internals/to-length":144}],79:[function(e,t,n){"use strict";var r,i,o,a=e("../internals/object-get-prototype-of"),s=e("../internals/create-non-enumerable-property"),l=e("../internals/has"),c=e("../internals/well-known-symbol"),u=e("../internals/is-pure"),f=c("iterator"),d=!1;[].keys&&("next"in(o=[].keys())?(i=a(a(o)))!==Object.prototype&&(r=i):d=!0),null==r&&(r={}),u||l(r,f)||s(r,f,function(){return this}),t.exports={IteratorPrototype:r,BUGGY_SAFARI_ITERATORS:d}},{"../internals/create-non-enumerable-property":35,"../internals/has":60,"../internals/is-pure":76,"../internals/object-get-prototype-of":103,"../internals/well-known-symbol":156}],80:[function(e,t,n){arguments[4][61][0].apply(n,arguments)},{dup:61}],81:[function(e,t,n){var r=Math.expm1,i=Math.exp;t.exports=!r||22025.465794806718<r(10)||r(10)<22025.465794806718||-2e-17!=r(-2e-17)?function(e){return 0==(e=+e)?e:-1e-6<e&&e<1e-6?e+e*e/2:i(e)-1}:r},{}],82:[function(e,t,n){var o=e("../internals/math-sign"),a=Math.abs,r=Math.pow,s=r(2,-52),l=r(2,-23),c=r(2,127)*(2-l),u=r(2,-126);t.exports=Math.fround||function(e){var t,n,r=a(e),i=o(e);return r<u?i*(r/u/l+1/s-1/s)*u*l:c<(n=(t=(1+l/s)*r)-(t-r))||n!=n?i*(1/0):i*n}},{"../internals/math-sign":84}],83:[function(e,t,n){var r=Math.log;t.exports=Math.log1p||function(e){return-1e-8<(e=+e)&&e<1e-8?e-e*e/2:r(1+e)}},{}],84:[function(e,t,n){t.exports=Math.sign||function(e){return 0==(e=+e)||e!=e?e:e<0?-1:1}},{}],85:[function(e,t,n){var r,i,o,a,s,l,c,u,f=e("../internals/global"),d=e("../internals/object-get-own-property-descriptor").f,p=e("../internals/classof-raw"),h=e("../internals/task").set,m=e("../internals/engine-is-ios"),g=f.MutationObserver||f.WebKitMutationObserver,y=f.process,b=f.Promise,v="process"==p(y),x=d(f,"queueMicrotask"),w=x&&x.value;w||(r=function(){var e,t;for(v&&(e=y.domain)&&e.exit();i;){t=i.fn,i=i.next;try{t()}catch(e){throw i?a():o=void 0,e}}o=void 0,e&&e.enter()},a=v?function(){y.nextTick(r)}:g&&!m?(s=!0,l=document.createTextNode(""),new g(r).observe(l,{characterData:!0}),function(){l.data=s=!s}):b&&b.resolve?(c=b.resolve(void 0),u=c.then,function(){u.call(c,r)}):function(){h.call(f,r)}),t.exports=w||function(e){var t={fn:e,next:void 0};o&&(o.next=t),i||(i=t,a()),o=t}},{"../internals/classof-raw":25,"../internals/engine-is-ios":45,"../internals/global":59,"../internals/object-get-own-property-descriptor":99,"../internals/task":138}],86:[function(e,t,n){var r=e("../internals/global");t.exports=r.Promise},{"../internals/global":59}],87:[function(e,t,n){var r=e("../internals/fails");t.exports=!!Object.getOwnPropertySymbols&&!r(function(){return!String(Symbol())})},{"../internals/fails":50}],88:[function(e,t,n){var r=e("../internals/fails"),i=e("../internals/well-known-symbol"),o=e("../internals/is-pure"),a=i("iterator");t.exports=!r(function(){var e=new URL("b?a=1&b=2&c=3","http://a"),n=e.searchParams,r="";return e.pathname="c%20d",n.forEach(function(e,t){n.delete("b"),r+=t+e}),o&&!e.toJSON||!n.sort||"http://a/c%20d?a=1&c=3"!==e.href||"3"!==n.get("c")||"a=1"!==String(new URLSearchParams("?a=1"))||!n[a]||"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"!==r||"x"!==new URL("http://x",void 0).host})},{"../internals/fails":50,"../internals/is-pure":76,"../internals/well-known-symbol":156}],89:[function(e,t,n){var r=e("../internals/global"),i=e("../internals/inspect-source"),o=r.WeakMap;t.exports="function"==typeof o&&/native code/.test(i(o))},{"../internals/global":59,"../internals/inspect-source":68}],90:[function(e,t,n){"use strict";function r(e){var n,r;this.promise=new e(function(e,t){if(void 0!==n||void 0!==r)throw TypeError("Bad Promise constructor");n=e,r=t}),this.resolve=i(n),this.reject=i(r)}var i=e("../internals/a-function");t.exports.f=function(e){return new r(e)}},{"../internals/a-function":2}],91:[function(e,t,n){var r=e("../internals/is-regexp");t.exports=function(e){if(r(e))throw TypeError("The method doesn't accept regular expressions");return e}},{"../internals/is-regexp":77}],92:[function(e,t,n){var r=e("../internals/global").isFinite;t.exports=Number.isFinite||function(e){return"number"==typeof e&&r(e)}},{"../internals/global":59}],93:[function(e,t,n){var r=e("../internals/global"),i=e("../internals/string-trim").trim,o=e("../internals/whitespaces"),a=r.parseFloat,s=1/a(o+"-0")!=-1/0;t.exports=s?function(e){var t=i(String(e)),n=a(t);return 0===n&&"-"==t.charAt(0)?-0:n}:a},{"../internals/global":59,"../internals/string-trim":137,"../internals/whitespaces":157}],94:[function(e,t,n){var r=e("../internals/global"),i=e("../internals/string-trim").trim,o=e("../internals/whitespaces"),a=r.parseInt,s=/^[+-]?0[Xx]/,l=8!==a(o+"08")||22!==a(o+"0x16");t.exports=l?function(e,t){var n=i(String(e));return a(n,t>>>0||(s.test(n)?16:10))}:a},{"../internals/global":59,"../internals/string-trim":137,"../internals/whitespaces":157}],95:[function(e,t,n){"use strict";var d=e("../internals/descriptors"),r=e("../internals/fails"),p=e("../internals/object-keys"),h=e("../internals/object-get-own-property-symbols"),m=e("../internals/object-property-is-enumerable"),g=e("../internals/to-object"),y=e("../internals/indexed-object"),i=Object.assign,o=Object.defineProperty;t.exports=!i||r(function(){if(d&&1!==i({b:1},i(o({},"a",{enumerable:!0,get:function(){o(this,"b",{value:3,enumerable:!1})}}),{b:2})).b)return!0;var e={},t={},n=Symbol(),r="abcdefghijklmnopqrst";return e[n]=7,r.split("").forEach(function(e){t[e]=e}),7!=i({},e)[n]||p(i({},t)).join("")!=r})?function(e,t){for(var n=g(e),r=arguments.length,i=1,o=h.f,a=m.f;i<r;)for(var s,l=y(arguments[i++]),c=o?p(l).concat(o(l)):p(l),u=c.length,f=0;f<u;)s=c[f++],d&&!a.call(l,s)||(n[s]=l[s]);return n}:i},{"../internals/descriptors":42,"../internals/fails":50,"../internals/indexed-object":66,"../internals/object-get-own-property-symbols":102,"../internals/object-keys":105,"../internals/object-property-is-enumerable":106,"../internals/to-object":145}],96:[function(e,t,n){function r(){}function i(e){return"<script>"+e+"</"+h+">"}var o,a=e("../internals/an-object"),s=e("../internals/object-define-properties"),l=e("../internals/enum-bug-keys"),c=e("../internals/hidden-keys"),u=e("../internals/html"),f=e("../internals/document-create-element"),d=e("../internals/shared-key"),p="prototype",h="script",m=d("IE_PROTO"),g=function(){try{o=document.domain&&new ActiveXObject("htmlfile")}catch(e){}var e,t;g=o?function(e){e.write(i("")),e.close();var t=e.parentWindow.Object;return e=null,t}(o):((t=f("iframe")).style.display="none",u.appendChild(t),t.src=String("javascript:"),(e=t.contentWindow.document).open(),e.write(i("document.F=Object")),e.close(),e.F);for(var n=l.length;n--;)delete g[p][l[n]];return g()};c[m]=!0,t.exports=Object.create||function(e,t){var n;return null!==e?(r[p]=a(e),n=new r,r[p]=null,n[m]=e):n=g(),void 0===t?n:s(n,t)}},{"../internals/an-object":7,"../internals/document-create-element":43,"../internals/enum-bug-keys":48,"../internals/hidden-keys":61,"../internals/html":63,"../internals/object-define-properties":97,"../internals/shared-key":126}],97:[function(e,t,n){var r=e("../internals/descriptors"),a=e("../internals/object-define-property"),s=e("../internals/an-object"),l=e("../internals/object-keys");t.exports=r?Object.defineProperties:function(e,t){s(e);for(var n,r=l(t),i=r.length,o=0;o<i;)a.f(e,n=r[o++],t[n]);return e}},{"../internals/an-object":7,"../internals/descriptors":42,"../internals/object-define-property":98,"../internals/object-keys":105}],98:[function(e,t,n){var r=e("../internals/descriptors"),i=e("../internals/ie8-dom-define"),o=e("../internals/an-object"),a=e("../internals/to-primitive"),s=Object.defineProperty;n.f=r?s:function(e,t,n){if(o(e),t=a(t,!0),o(n),i)try{return s(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}},{"../internals/an-object":7,"../internals/descriptors":42,"../internals/ie8-dom-define":64,"../internals/to-primitive":148}],99:[function(e,t,n){var r=e("../internals/descriptors"),i=e("../internals/object-property-is-enumerable"),o=e("../internals/create-property-descriptor"),a=e("../internals/to-indexed-object"),s=e("../internals/to-primitive"),l=e("../internals/has"),c=e("../internals/ie8-dom-define"),u=Object.getOwnPropertyDescriptor;n.f=r?u:function(e,t){if(e=a(e),t=s(t,!0),c)try{return u(e,t)}catch(e){}if(l(e,t))return o(!i.f.call(e,t),e[t])}},{"../internals/create-property-descriptor":36,"../internals/descriptors":42,"../internals/has":60,"../internals/ie8-dom-define":64,"../internals/object-property-is-enumerable":106,"../internals/to-indexed-object":142,"../internals/to-primitive":148}],100:[function(e,t,n){var r=e("../internals/to-indexed-object"),i=e("../internals/object-get-own-property-names").f,o={}.toString,a="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[];t.exports.f=function(e){return a&&"[object Window]"==o.call(e)?function(e){try{return i(e)}catch(e){return a.slice()}}(e):i(r(e))}},{"../internals/object-get-own-property-names":101,"../internals/to-indexed-object":142}],101:[function(e,t,n){var r=e("../internals/object-keys-internal"),i=e("../internals/enum-bug-keys").concat("length","prototype");n.f=Object.getOwnPropertyNames||function(e){return r(e,i)}},{"../internals/enum-bug-keys":48,"../internals/object-keys-internal":104}],102:[function(e,t,n){n.f=Object.getOwnPropertySymbols},{}],103:[function(e,t,n){var r=e("../internals/has"),i=e("../internals/to-object"),o=e("../internals/shared-key"),a=e("../internals/correct-prototype-getter"),s=o("IE_PROTO"),l=Object.prototype;t.exports=a?Object.getPrototypeOf:function(e){return e=i(e),r(e,s)?e[s]:"function"==typeof e.constructor&&e instanceof e.constructor?e.constructor.prototype:e instanceof Object?l:null}},{"../internals/correct-prototype-getter":32,"../internals/has":60,"../internals/shared-key":126,"../internals/to-object":145}],104:[function(e,t,n){var a=e("../internals/has"),s=e("../internals/to-indexed-object"),l=e("../internals/array-includes").indexOf,c=e("../internals/hidden-keys");t.exports=function(e,t){var n,r=s(e),i=0,o=[];for(n in r)!a(c,n)&&a(r,n)&&o.push(n);for(;t.length>i;)a(r,n=t[i++])&&(~l(o,n)||o.push(n));return o}},{"../internals/array-includes":15,"../internals/has":60,"../internals/hidden-keys":61,"../internals/to-indexed-object":142}],105:[function(e,t,n){var r=e("../internals/object-keys-internal"),i=e("../internals/enum-bug-keys");t.exports=Object.keys||function(e){return r(e,i)}},{"../internals/enum-bug-keys":48,"../internals/object-keys-internal":104}],106:[function(e,t,n){"use strict";var r={}.propertyIsEnumerable,i=Object.getOwnPropertyDescriptor,o=i&&!r.call({1:2},1);n.f=o?function(e){var t=i(this,e);return!!t&&t.enumerable}:r},{}],107:[function(e,t,n){"use strict";var r=e("../internals/is-pure"),i=e("../internals/global"),o=e("../internals/fails");t.exports=r||!o(function(){var e=Math.random();__defineSetter__.call(null,e,function(){}),delete i[e]})},{"../internals/fails":50,"../internals/global":59,"../internals/is-pure":76}],108:[function(e,t,n){var i=e("../internals/an-object"),o=e("../internals/a-possible-prototype");t.exports=Object.setPrototypeOf||("__proto__"in{}?function(){var n,r=!1,e={};try{(n=Object.getOwnPropertyDescriptor(Object.prototype,"__proto__").set).call(e,[]),r=e instanceof Array}catch(e){}return function(e,t){return i(e),o(t),r?n.call(e,t):e.__proto__=t,e}}():void 0)},{"../internals/a-possible-prototype":3,"../internals/an-object":7}],109:[function(e,t,n){function r(s){return function(e){for(var t,n=u(e),r=c(n),i=r.length,o=0,a=[];o<i;)t=r[o++],l&&!f.call(n,t)||a.push(s?[t,n[t]]:n[t]);return a}}var l=e("../internals/descriptors"),c=e("../internals/object-keys"),u=e("../internals/to-indexed-object"),f=e("../internals/object-property-is-enumerable").f;t.exports={entries:r(!0),values:r(!1)}},{"../internals/descriptors":42,"../internals/object-keys":105,"../internals/object-property-is-enumerable":106,"../internals/to-indexed-object":142}],110:[function(e,t,n){"use strict";var r=e("../internals/to-string-tag-support"),i=e("../internals/classof");t.exports=r?{}.toString:function(){return"[object "+i(this)+"]"}},{"../internals/classof":26,"../internals/to-string-tag-support":149}],111:[function(e,t,n){var r=e("../internals/get-built-in"),i=e("../internals/object-get-own-property-names"),o=e("../internals/object-get-own-property-symbols"),a=e("../internals/an-object");t.exports=r("Reflect","ownKeys")||function(e){var t=i.f(a(e)),n=o.f;return n?t.concat(n(e)):t}},{"../internals/an-object":7,"../internals/get-built-in":56,"../internals/object-get-own-property-names":101,"../internals/object-get-own-property-symbols":102}],112:[function(e,t,n){var r=e("../internals/global");t.exports=r},{"../internals/global":59}],113:[function(e,t,n){t.exports=function(e){try{return{error:!1,value:e()}}catch(e){return{error:!0,value:e}}}},{}],114:[function(e,t,n){var r=e("../internals/an-object"),i=e("../internals/is-object"),o=e("../internals/new-promise-capability");t.exports=function(e,t){if(r(e),i(t)&&t.constructor===e)return t;var n=o.f(e);return(0,n.resolve)(t),n.promise}},{"../internals/an-object":7,"../internals/is-object":75,"../internals/new-promise-capability":90}],115:[function(e,t,n){var i=e("../internals/redefine");t.exports=function(e,t,n){for(var r in t)i(e,r,t[r],n);return e}},{"../internals/redefine":116}],116:[function(e,t,n){var s=e("../internals/global"),l=e("../internals/create-non-enumerable-property"),c=e("../internals/has"),u=e("../internals/set-global"),r=e("../internals/inspect-source"),i=e("../internals/internal-state"),o=i.get,f=i.enforce,d=String(String).split("String");(t.exports=function(e,t,n,r){var i=!!r&&!!r.unsafe,o=!!r&&!!r.enumerable,a=!!r&&!!r.noTargetGet;"function"==typeof n&&("string"!=typeof t||c(n,"name")||l(n,"name",t),f(n).source=d.join("string"==typeof t?t:"")),e!==s?(i?!a&&e[t]&&(o=!0):delete e[t],o?e[t]=n:l(e,t,n)):o?e[t]=n:u(t,n)})(Function.prototype,"toString",function(){return"function"==typeof this&&o(this).source||r(this)})},{"../internals/create-non-enumerable-property":35,"../internals/global":59,"../internals/has":60,"../internals/inspect-source":68,"../internals/internal-state":70,"../internals/set-global":123}],117:[function(e,t,n){var i=e("./classof-raw"),o=e("./regexp-exec");t.exports=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"!==i(e))throw TypeError("RegExp#exec called on incompatible receiver");return o.call(e,t)}},{"./classof-raw":25,"./regexp-exec":118}],118:[function(e,t,n){"use strict";var r,i,f=e("./regexp-flags"),o=e("./regexp-sticky-helpers"),d=RegExp.prototype.exec,p=String.prototype.replace,a=d,h=(r=/a/,i=/b*/g,d.call(r,"a"),d.call(i,"a"),0!==r.lastIndex||0!==i.lastIndex),m=o.UNSUPPORTED_Y||o.BROKEN_CARET,g=void 0!==/()??/.exec("")[1];(h||g||m)&&(a=function(e){var t,n,r,i,o=this,a=m&&o.sticky,s=f.call(o),l=o.source,c=0,u=e;return a&&(-1===(s=s.replace("y","")).indexOf("g")&&(s+="g"),u=String(e).slice(o.lastIndex),0<o.lastIndex&&(!o.multiline||o.multiline&&"\n"!==e[o.lastIndex-1])&&(l="(?: "+l+")",u=" "+u,c++),n=new RegExp("^(?:"+l+")",s)),g&&(n=new RegExp("^"+l+"$(?!\\s)",s)),h&&(t=o.lastIndex),r=d.call(a?n:o,u),a?r?(r.input=r.input.slice(c),r[0]=r[0].slice(c),r.index=o.lastIndex,o.lastIndex+=r[0].length):o.lastIndex=0:h&&r&&(o.lastIndex=o.global?r.index+r[0].length:t),g&&r&&1<r.length&&p.call(r[0],n,function(){for(i=1;i<arguments.length-2;i++)void 0===arguments[i]&&(r[i]=void 0)}),r}),t.exports=a},{"./regexp-flags":119,"./regexp-sticky-helpers":120}],119:[function(e,t,n){"use strict";var r=e("../internals/an-object");t.exports=function(){var e=r(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}},{"../internals/an-object":7}],120:[function(e,t,n){"use strict";var r=e("./fails");function i(e,t){return RegExp(e,t)}n.UNSUPPORTED_Y=r(function(){var e=i("a","y");return e.lastIndex=2,null!=e.exec("abcd")}),n.BROKEN_CARET=r(function(){var e=i("^r","gy");return e.lastIndex=2,null!=e.exec("str")})},{"./fails":50}],121:[function(e,t,n){t.exports=function(e){if(null==e)throw TypeError("Can't call method on "+e);return e}},{}],122:[function(e,t,n){t.exports=Object.is||function(e,t){return e===t?0!==e||1/e==1/t:e!=e&&t!=t}},{}],123:[function(e,t,n){var r=e("../internals/global"),i=e("../internals/create-non-enumerable-property");t.exports=function(t,n){try{i(r,t,n)}catch(e){r[t]=n}return n}},{"../internals/create-non-enumerable-property":35,"../internals/global":59}],124:[function(e,t,n){"use strict";var r=e("../internals/get-built-in"),i=e("../internals/object-define-property"),o=e("../internals/well-known-symbol"),a=e("../internals/descriptors"),s=o("species");t.exports=function(e){var t=r(e),n=i.f;a&&t&&!t[s]&&n(t,s,{configurable:!0,get:function(){return this}})}},{"../internals/descriptors":42,"../internals/get-built-in":56,"../internals/object-define-property":98,"../internals/well-known-symbol":156}],125:[function(e,t,n){var r=e("../internals/object-define-property").f,i=e("../internals/has"),o=e("../internals/well-known-symbol")("toStringTag");t.exports=function(e,t,n){e&&!i(e=n?e:e.prototype,o)&&r(e,o,{configurable:!0,value:t})}},{"../internals/has":60,"../internals/object-define-property":98,"../internals/well-known-symbol":156}],126:[function(e,t,n){var r=e("../internals/shared"),i=e("../internals/uid"),o=r("keys");t.exports=function(e){return o[e]||(o[e]=i(e))}},{"../internals/shared":128,"../internals/uid":153}],127:[function(e,t,n){var r=e("../internals/global"),i=e("../internals/set-global"),o="__core-js_shared__",a=r[o]||i(o,{});t.exports=a},{"../internals/global":59,"../internals/set-global":123}],128:[function(e,t,n){var r=e("../internals/is-pure"),i=e("../internals/shared-store");(t.exports=function(e,t){return i[e]||(i[e]=void 0!==t?t:{})})("versions",[]).push({version:"3.6.5",mode:r?"pure":"global",copyright:"© 2020 Denis Pushkarev (zloirock.ru)"})},{"../internals/is-pure":76,"../internals/shared-store":127}],129:[function(e,t,n){var i=e("../internals/an-object"),o=e("../internals/a-function"),a=e("../internals/well-known-symbol")("species");t.exports=function(e,t){var n,r=i(e).constructor;return void 0===r||null==(n=i(r)[a])?t:o(n)}},{"../internals/a-function":2,"../internals/an-object":7,"../internals/well-known-symbol":156}],130:[function(e,t,n){var r=e("../internals/fails");t.exports=function(t){return r(function(){var e=""[t]('"');return e!==e.toLowerCase()||3<e.split('"').length})}},{"../internals/fails":50}],131:[function(e,t,n){function r(s){return function(e,t){var n,r,i=String(c(e)),o=l(t),a=i.length;return o<0||a<=o?s?"":void 0:(n=i.charCodeAt(o))<55296||56319<n||o+1===a||(r=i.charCodeAt(o+1))<56320||57343<r?s?i.charAt(o):n:s?i.slice(o,o+2):r-56320+(n-55296<<10)+65536}}var l=e("../internals/to-integer"),c=e("../internals/require-object-coercible");t.exports={codeAt:r(!1),charAt:r(!0)}},{"../internals/require-object-coercible":121,"../internals/to-integer":143}],132:[function(e,t,n){var r=e("../internals/engine-user-agent");t.exports=/Version\/10\.\d+(\.\d+)?( Mobile\/\w+)? Safari\//.test(r)},{"../internals/engine-user-agent":46}],133:[function(e,t,n){function r(c){return function(e,t,n){var r,i,o=String(d(e)),a=o.length,s=void 0===n?" ":String(n),l=u(t);return l<=a||""==s?o:(r=l-a,(i=f.call(s,p(r/s.length))).length>r&&(i=i.slice(0,r)),c?o+i:i+o)}}var u=e("../internals/to-length"),f=e("../internals/string-repeat"),d=e("../internals/require-object-coercible"),p=Math.ceil;t.exports={start:r(!1),end:r(!0)}},{"../internals/require-object-coercible":121,"../internals/string-repeat":135,"../internals/to-length":144}],134:[function(e,t,n){"use strict";function y(e){return e+22+75*(e<26)}function b(e,t,n){var r=0;for(e=n?w(e/700):e>>1,e+=w(e/t);455<e;r+=36)e=w(e/35);return w(r+36*e/(e+38))}function o(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(55296<=i&&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(j(n));var l=r.length,c=l;for(l&&r.push("-");c<i;){var u=v;for(t=0;t<e.length;t++)o<=(n=e[t])&&n<u&&(u=n);var f=c+1;if(u-o>w((v-a)/f))throw RangeError(x);for(a+=(u-o)*f,o=u,t=0;t<e.length;t++){if((n=e[t])<o&&++a>v)throw RangeError(x);if(n==o){for(var d=a,p=36;;p+=36){var h=p<=s?1:s+26<=p?26:p-s;if(d<h)break;var m=d-h,g=36-h;r.push(j(y(h+m%g))),d=w(m/g)}r.push(j(y(d))),s=b(a,f,c==l),a=0,++c}}++a,++o}return r.join("")}var v=2147483647,a=/[^\0-\u007E]/,s=/[.\u3002\uFF0E\uFF61]/g,x="Overflow: input needs wider integers to process",w=Math.floor,j=String.fromCharCode;t.exports=function(e){var t,n,r=[],i=e.toLowerCase().replace(s,".").split(".");for(t=0;t<i.length;t++)n=i[t],r.push(a.test(n)?"xn--"+o(n):n);return r.join(".")}},{}],135:[function(e,t,n){"use strict";var i=e("../internals/to-integer"),o=e("../internals/require-object-coercible");t.exports="".repeat||function(e){var t=String(o(this)),n="",r=i(e);if(r<0||r==1/0)throw RangeError("Wrong number of repetitions");for(;0<r;(r>>>=1)&&(t+=t))1&r&&(n+=t);return n}},{"../internals/require-object-coercible":121,"../internals/to-integer":143}],136:[function(e,t,n){var r=e("../internals/fails"),i=e("../internals/whitespaces");t.exports=function(e){return r(function(){return!!i[e]()||"​…᠎"!="​…᠎"[e]()||i[e].name!==e})}},{"../internals/fails":50,"../internals/whitespaces":157}],137:[function(e,t,n){function r(n){return function(e){var t=String(i(e));return 1&n&&(t=t.replace(a,"")),2&n&&(t=t.replace(s,"")),t}}var i=e("../internals/require-object-coercible"),o="["+e("../internals/whitespaces")+"]",a=RegExp("^"+o+o+"*"),s=RegExp(o+o+"*$");t.exports={start:r(1),end:r(2),trim:r(3)}},{"../internals/require-object-coercible":121,"../internals/whitespaces":157}],138:[function(e,t,n){function r(e){if(E.hasOwnProperty(e)){var t=E[e];delete E[e],t()}}function i(e){return function(){r(e)}}function o(e){r(e.data)}function a(e){u.postMessage(e+"",y.protocol+"//"+y.host)}var s,l,c,u=e("../internals/global"),f=e("../internals/fails"),d=e("../internals/classof-raw"),p=e("../internals/function-bind-context"),h=e("../internals/html"),m=e("../internals/document-create-element"),g=e("../internals/engine-is-ios"),y=u.location,b=u.setImmediate,v=u.clearImmediate,x=u.process,w=u.MessageChannel,j=u.Dispatch,C=0,E={},S="onreadystatechange";b&&v||(b=function(e){for(var t=[],n=1;n<arguments.length;)t.push(arguments[n++]);return E[++C]=function(){("function"==typeof e?e:Function(e)).apply(void 0,t)},s(C),C},v=function(e){delete E[e]},"process"==d(x)?s=function(e){x.nextTick(i(e))}:j&&j.now?s=function(e){j.now(i(e))}:w&&!g?(c=(l=new w).port2,l.port1.onmessage=o,s=p(c.postMessage,c,1)):!u.addEventListener||"function"!=typeof postMessage||u.importScripts||f(a)||"file:"===y.protocol?s=S in m("script")?function(e){h.appendChild(m("script"))[S]=function(){h.removeChild(this),r(e)}}:function(e){setTimeout(i(e),0)}:(s=a,u.addEventListener("message",o,!1))),t.exports={set:b,clear:v}},{"../internals/classof-raw":25,"../internals/document-create-element":43,"../internals/engine-is-ios":45,"../internals/fails":50,"../internals/function-bind-context":54,"../internals/global":59,"../internals/html":63}],139:[function(e,t,n){var r=e("../internals/classof-raw");t.exports=function(e){if("number"!=typeof e&&"Number"!=r(e))throw TypeError("Incorrect invocation");return+e}},{"../internals/classof-raw":25}],140:[function(e,t,n){var r=e("../internals/to-integer"),i=Math.max,o=Math.min;t.exports=function(e,t){var n=r(e);return n<0?i(n+t,0):o(n,t)}},{"../internals/to-integer":143}],141:[function(e,t,n){var r=e("../internals/to-integer"),i=e("../internals/to-length");t.exports=function(e){if(void 0===e)return 0;var t=r(e),n=i(t);if(t!==n)throw RangeError("Wrong length or index");return n}},{"../internals/to-integer":143,"../internals/to-length":144}],142:[function(e,t,n){var r=e("../internals/indexed-object"),i=e("../internals/require-object-coercible");t.exports=function(e){return r(i(e))}},{"../internals/indexed-object":66,"../internals/require-object-coercible":121}],143:[function(e,t,n){var r=Math.ceil,i=Math.floor;t.exports=function(e){return isNaN(e=+e)?0:(0<e?i:r)(e)}},{}],144:[function(e,t,n){var r=e("../internals/to-integer"),i=Math.min;t.exports=function(e){return 0<e?i(r(e),9007199254740991):0}},{"../internals/to-integer":143}],145:[function(e,t,n){var r=e("../internals/require-object-coercible");t.exports=function(e){return Object(r(e))}},{"../internals/require-object-coercible":121}],146:[function(e,t,n){var r=e("../internals/to-positive-integer");t.exports=function(e,t){var n=r(e);if(n%t)throw RangeError("Wrong offset");return n}},{"../internals/to-positive-integer":147}],147:[function(e,t,n){var r=e("../internals/to-integer");t.exports=function(e){var t=r(e);if(t<0)throw RangeError("The argument can't be less than 0");return t}},{"../internals/to-integer":143}],148:[function(e,t,n){var i=e("../internals/is-object");t.exports=function(e,t){if(!i(e))return e;var n,r;if(t&&"function"==typeof(n=e.toString)&&!i(r=n.call(e)))return r;if("function"==typeof(n=e.valueOf)&&!i(r=n.call(e)))return r;if(!t&&"function"==typeof(n=e.toString)&&!i(r=n.call(e)))return r;throw TypeError("Can't convert object to primitive value")}},{"../internals/is-object":75}],149:[function(e,t,n){var r={};r[e("../internals/well-known-symbol")("toStringTag")]="z",t.exports="[object z]"===String(r)},{"../internals/well-known-symbol":156}],150:[function(e,t,n){"use strict";function h(e,t){for(var n=0,r=t.length,i=new(G(e))(r);n<r;)i[n]=t[n++];return i}function r(e,t){_(e,t,{get:function(){return M(this)[t]}})}function m(e){var t;return e instanceof q||"ArrayBuffer"==(t=C(e))||"SharedArrayBuffer"==t}function i(e,t){return V(e)&&"symbol"!=typeof t&&t in e&&String(+t)==String(t)}function o(e,t){return i(e,t=p(t,!0))?d(2,e[t]):F(e,t)}function a(e,t,n){return!(i(e,t=p(t,!0))&&E(n)&&j(n,"value"))||j(n,"get")||j(n,"set")||n.configurable||j(n,"writable")&&!n.writable||j(n,"enumerable")&&!n.enumerable?_(e,t,n):(e[t]=n.value,e)}var l=e("../internals/export"),c=e("../internals/global"),s=e("../internals/descriptors"),g=e("../internals/typed-array-constructors-require-wrappers"),u=e("../internals/array-buffer-view-core"),f=e("../internals/array-buffer"),y=e("../internals/an-instance"),d=e("../internals/create-property-descriptor"),b=e("../internals/create-non-enumerable-property"),v=e("../internals/to-length"),x=e("../internals/to-index"),w=e("../internals/to-offset"),p=e("../internals/to-primitive"),j=e("../internals/has"),C=e("../internals/classof"),E=e("../internals/is-object"),S=e("../internals/object-create"),O=e("../internals/object-set-prototype-of"),k=e("../internals/object-get-own-property-names").f,A=e("../internals/typed-array-from"),I=e("../internals/array-iteration").forEach,N=e("../internals/set-species"),T=e("../internals/object-define-property"),L=e("../internals/object-get-own-property-descriptor"),R=e("../internals/internal-state"),P=e("../internals/inherit-if-required"),M=R.get,D=R.set,_=T.f,F=L.f,Y=Math.round,U=c.RangeError,q=f.ArrayBuffer,X=f.DataView,z=u.NATIVE_ARRAY_BUFFER_VIEWS,W=u.TYPED_ARRAY_TAG,B=u.TypedArray,H=u.TypedArrayPrototype,G=u.aTypedArrayConstructor,V=u.isTypedArray,$="BYTES_PER_ELEMENT",Z="Wrong length";s?(z||(L.f=o,T.f=a,r(H,"buffer"),r(H,"byteOffset"),r(H,"byteLength"),r(H,"length")),l({target:"Object",stat:!0,forced:!z},{getOwnPropertyDescriptor:o,defineProperty:a}),t.exports=function(e,t,o){function u(e,i){_(e,i,{get:function(){return e=i,(t=M(this)).view[n](e*f+t.byteOffset,!0);var e,t},set:function(e){return t=i,n=e,r=M(this),o&&(n=(n=Y(n))<0?0:255<n?255:255&n),void r.view[a](t*f+r.byteOffset,n,!0);var t,n,r},enumerable:!0})}var f=e.match(/\d+$/)[0]/8,d=e+(o?"Clamped":"")+"Array",n="get"+e,a="set"+e,i=c[d],p=i,r=p&&p.prototype,s={};z?g&&(p=t(function(e,t,n,r){return y(e,p,d),P(E(t)?m(t)?void 0!==r?new i(t,w(n,f),r):void 0!==n?new i(t,w(n,f)):new i(t):V(t)?h(p,t):A.call(p,t):new i(x(t)),e,p)}),O&&O(p,B),I(k(i),function(e){e in p||b(p,e,i[e])}),p.prototype=r):(p=t(function(e,t,n,r){y(e,p,d);var i,o,a,s=0,l=0;if(E(t)){if(!m(t))return V(t)?h(p,t):A.call(p,t);i=t,l=w(n,f);var c=t.byteLength;if(void 0===r){if(c%f)throw U(Z);if((o=c-l)<0)throw U(Z)}else if(c<(o=v(r)*f)+l)throw U(Z);a=o/f}else a=x(t),i=new q(o=a*f);for(D(e,{buffer:i,byteOffset:l,byteLength:o,length:a,view:new X(i)});s<a;)u(e,s++)}),O&&O(p,B),r=p.prototype=S(H)),r.constructor!==p&&b(r,"constructor",p),W&&b(r,W,d),s[d]=p,l({global:!0,forced:p!=i,sham:!z},s),$ in p||b(p,$,f),$ in r||b(r,$,f),N(d)}):t.exports=function(){}},{"../internals/an-instance":6,"../internals/array-buffer":10,"../internals/array-buffer-view-core":9,"../internals/array-iteration":16,"../internals/classof":26,"../internals/create-non-enumerable-property":35,"../internals/create-property-descriptor":36,"../internals/descriptors":42,"../internals/export":49,"../internals/global":59,"../internals/has":60,"../internals/inherit-if-required":67,"../internals/internal-state":70,"../internals/is-object":75,"../internals/object-create":96,"../internals/object-define-property":98,"../internals/object-get-own-property-descriptor":99,"../internals/object-get-own-property-names":101,"../internals/object-set-prototype-of":108,"../internals/set-species":124,"../internals/to-index":141,"../internals/to-length":144,"../internals/to-offset":146,"../internals/to-primitive":148,"../internals/typed-array-constructors-require-wrappers":151,"../internals/typed-array-from":152}],151:[function(e,t,n){var r=e("../internals/global"),i=e("../internals/fails"),o=e("../internals/check-correctness-of-iteration"),a=e("../internals/array-buffer-view-core").NATIVE_ARRAY_BUFFER_VIEWS,s=r.ArrayBuffer,l=r.Int8Array;t.exports=!a||!i(function(){l(1)})||!i(function(){new l(-1)})||!o(function(e){new l,new l(null),new l(1.5),new l(e)},!0)||i(function(){return 1!==new l(new s(2),1,void 0).length})},{"../internals/array-buffer-view-core":9,"../internals/check-correctness-of-iteration":24,"../internals/fails":50,"../internals/global":59}],152:[function(e,t,n){var h=e("../internals/to-object"),m=e("../internals/to-length"),g=e("../internals/get-iterator-method"),y=e("../internals/is-array-iterator-method"),b=e("../internals/function-bind-context"),v=e("../internals/array-buffer-view-core").aTypedArrayConstructor;t.exports=function(e,t,n){var r,i,o,a,s,l,c=h(e),u=arguments.length,f=1<u?t:void 0,d=void 0!==f,p=g(c);if(null!=p&&!y(p))for(l=(s=p.call(c)).next,c=[];!(a=l.call(s)).done;)c.push(a.value);for(d&&2<u&&(f=b(f,n,2)),i=m(c.length),o=new(v(this))(i),r=0;r<i;r++)o[r]=d?f(c[r],r):c[r];return o}},{"../internals/array-buffer-view-core":9,"../internals/function-bind-context":54,"../internals/get-iterator-method":57,"../internals/is-array-iterator-method":71,"../internals/to-length":144,"../internals/to-object":145}],153:[function(e,t,n){var r=0,i=Math.random();t.exports=function(e){return"Symbol("+String(void 0===e?"":e)+")_"+(++r+i).toString(36)}},{}],154:[function(e,t,n){var r=e("../internals/native-symbol");t.exports=r&&!Symbol.sham&&"symbol"==typeof Symbol.iterator},{"../internals/native-symbol":87}],155:[function(e,t,n){var r=e("../internals/well-known-symbol");n.f=r},{"../internals/well-known-symbol":156}],156:[function(e,t,n){var r=e("../internals/global"),i=e("../internals/shared"),o=e("../internals/has"),a=e("../internals/uid"),s=e("../internals/native-symbol"),l=e("../internals/use-symbol-as-uid"),c=i("wks"),u=r.Symbol,f=l?u:u&&u.withoutSetter||a;t.exports=function(e){return o(c,e)||(s&&o(u,e)?c[e]=u[e]:c[e]=f("Symbol."+e)),c[e]}},{"../internals/global":59,"../internals/has":60,"../internals/native-symbol":87,"../internals/shared":128,"../internals/uid":153,"../internals/use-symbol-as-uid":154}],157:[function(e,t,n){t.exports="\t\n\v\f\r                 \u2028\u2029\ufeff"},{}],158:[function(e,t,n){"use strict";var r=e("../internals/export"),i=e("../internals/global"),o=e("../internals/array-buffer"),a=e("../internals/set-species"),s="ArrayBuffer",l=o[s];r({global:!0,forced:i[s]!==l},{ArrayBuffer:l}),a(s)},{"../internals/array-buffer":10,"../internals/export":49,"../internals/global":59,"../internals/set-species":124}],159:[function(e,t,n){var r=e("../internals/export"),i=e("../internals/array-buffer-view-core");r({target:"ArrayBuffer",stat:!0,forced:!i.NATIVE_ARRAY_BUFFER_VIEWS},{isView:i.isView})},{"../internals/array-buffer-view-core":9,"../internals/export":49}],160:[function(e,t,n){"use strict";var r=e("../internals/export"),i=e("../internals/fails"),o=e("../internals/array-buffer"),c=e("../internals/an-object"),u=e("../internals/to-absolute-index"),f=e("../internals/to-length"),d=e("../internals/species-constructor"),p=o.ArrayBuffer,h=o.DataView,m=p.prototype.slice;r({target:"ArrayBuffer",proto:!0,unsafe:!0,forced:i(function(){return!new p(2).slice(1,void 0).byteLength})},{slice:function(e,t){if(void 0!==m&&void 0===t)return m.call(c(this),e);for(var n=c(this).byteLength,r=u(e,n),i=u(void 0===t?n:t,n),o=new(d(this,p))(f(i-r)),a=new h(this),s=new h(o),l=0;r<i;)s.setUint8(l++,a.getUint8(r++));return o}})},{"../internals/an-object":7,"../internals/array-buffer":10,"../internals/export":49,"../internals/fails":50,"../internals/species-constructor":129,"../internals/to-absolute-index":140,"../internals/to-length":144}],161:[function(e,t,n){"use strict";function c(e){if(!a(e))return!1;var t=e[m];return void 0!==t?!!t:o(e)}var r=e("../internals/export"),i=e("../internals/fails"),o=e("../internals/is-array"),a=e("../internals/is-object"),u=e("../internals/to-object"),f=e("../internals/to-length"),d=e("../internals/create-property"),p=e("../internals/array-species-create"),s=e("../internals/array-method-has-species-support"),l=e("../internals/well-known-symbol"),h=e("../internals/engine-v8-version"),m=l("isConcatSpreadable"),g=9007199254740991,y="Maximum allowed index exceeded",b=51<=h||!i(function(){var e=[];return e[m]=!1,e.concat()[0]!==e}),v=s("concat");r({target:"Array",proto:!0,forced:!b||!v},{concat:function(e){var t,n,r,i,o,a=u(this),s=p(a,0),l=0;for(t=-1,r=arguments.length;t<r;t++)if(c(o=-1===t?a:arguments[t])){if(i=f(o.length),g<l+i)throw TypeError(y);for(n=0;n<i;n++,l++)n in o&&d(s,l,o[n])}else{if(g<=l)throw TypeError(y);d(s,l++,o)}return s.length=l,s}})},{"../internals/array-method-has-species-support":18,"../internals/array-species-create":22,"../internals/create-property":37,"../internals/engine-v8-version":47,"../internals/export":49,"../internals/fails":50,"../internals/is-array":72,"../internals/is-object":75,"../internals/to-length":144,"../internals/to-object":145,"../internals/well-known-symbol":156}],162:[function(e,t,n){var r=e("../internals/export"),i=e("../internals/array-copy-within"),o=e("../internals/add-to-unscopables");r({target:"Array",proto:!0},{copyWithin:i}),o("copyWithin")},{"../internals/add-to-unscopables":4,"../internals/array-copy-within":11,"../internals/export":49}],163:[function(e,t,n){"use strict";var r=e("../internals/export"),i=e("../internals/array-iteration").every,o=e("../internals/array-method-is-strict"),a=e("../internals/array-method-uses-to-length"),s=o("every"),l=a("every");r({target:"Array",proto:!0,forced:!s||!l},{every:function(e,t){return i(this,e,1<arguments.length?t:void 0)}})},{"../internals/array-iteration":16,"../internals/array-method-is-strict":19,"../internals/array-method-uses-to-length":20,"../internals/export":49}],164:[function(e,t,n){var r=e("../internals/export"),i=e("../internals/array-fill"),o=e("../internals/add-to-unscopables");r({target:"Array",proto:!0},{fill:i}),o("fill")},{"../internals/add-to-unscopables":4,"../internals/array-fill":12,"../internals/export":49}],165:[function(e,t,n){"use strict";var r=e("../internals/export"),i=e("../internals/array-iteration").filter,o=e("../internals/array-method-has-species-support"),a=e("../internals/array-method-uses-to-length"),s=o("filter"),l=a("filter");r({target:"Array",proto:!0,forced:!s||!l},{filter:function(e,t){return i(this,e,1<arguments.length?t:void 0)}})},{"../internals/array-iteration":16,"../internals/array-method-has-species-support":18,"../internals/array-method-uses-to-length":20,"../internals/export":49}],166:[function(e,t,n){"use strict";var r=e("../internals/export"),i=e("../internals/array-iteration").findIndex,o=e("../internals/add-to-unscopables"),a=e("../internals/array-method-uses-to-length"),s="findIndex",l=!0,c=a(s);s in[]&&Array(1)[s](function(){l=!1}),r({target:"Array",proto:!0,forced:l||!c},{findIndex:function(e,t){return i(this,e,1<arguments.length?t:void 0)}}),o(s)},{"../internals/add-to-unscopables":4,"../internals/array-iteration":16,"../internals/array-method-uses-to-length":20,"../internals/export":49}],167:[function(e,t,n){"use strict";var r=e("../internals/export"),i=e("../internals/array-iteration").find,o=e("../internals/add-to-unscopables"),a=e("../internals/array-method-uses-to-length"),s="find",l=!0,c=a(s);s in[]&&Array(1)[s](function(){l=!1}),r({target:"Array",proto:!0,forced:l||!c},{find:function(e,t){return i(this,e,1<arguments.length?t:void 0)}}),o(s)},{"../internals/add-to-unscopables":4,"../internals/array-iteration":16,"../internals/array-method-uses-to-length":20,"../internals/export":49}],168:[function(e,t,n){"use strict";var r=e("../internals/export"),o=e("../internals/flatten-into-array"),a=e("../internals/to-object"),s=e("../internals/to-length"),l=e("../internals/a-function"),c=e("../internals/array-species-create");r({target:"Array",proto:!0},{flatMap:function(e,t){var n,r=a(this),i=s(r.length);return l(e),(n=c(r,0)).length=o(n,r,r,i,0,1,e,1<arguments.length?t:void 0),n}})},{"../internals/a-function":2,"../internals/array-species-create":22,"../internals/export":49,"../internals/flatten-into-array":52,"../internals/to-length":144,"../internals/to-object":145}],169:[function(e,t,n){"use strict";var r=e("../internals/export"),o=e("../internals/flatten-into-array"),a=e("../internals/to-object"),s=e("../internals/to-length"),l=e("../internals/to-integer"),c=e("../internals/array-species-create");r({target:"Array",proto:!0},{flat:function(e){var t=arguments.length?e:void 0,n=a(this),r=s(n.length),i=c(n,0);return i.length=o(i,n,n,r,0,void 0===t?1:l(t)),i}})},{"../internals/array-species-create":22,"../internals/export":49,"../internals/flatten-into-array":52,"../internals/to-integer":143,"../internals/to-length":144,"../internals/to-object":145}],170:[function(e,t,n){"use strict";var r=e("../internals/export"),i=e("../internals/array-for-each");r({target:"Array",proto:!0,forced:[].forEach!=i},{forEach:i})},{"../internals/array-for-each":13,"../internals/export":49}],171:[function(e,t,n){var r=e("../internals/export"),i=e("../internals/array-from");r({target:"Array",stat:!0,forced:!e("../internals/check-correctness-of-iteration")(function(e){Array.from(e)})},{from:i})},{"../internals/array-from":14,"../internals/check-correctness-of-iteration":24,"../internals/export":49}],172:[function(e,t,n){"use strict";var r=e("../internals/export"),i=e("../internals/array-includes").includes,o=e("../internals/add-to-unscopables");r({target:"Array",proto:!0,forced:!e("../internals/array-method-uses-to-length")("indexOf",{ACCESSORS:!0,1:0})},{includes:function(e,t){return i(this,e,1<arguments.length?t:void 0)}}),o("includes")},{"../internals/add-to-unscopables":4,"../internals/array-includes":15,"../internals/array-method-uses-to-length":20,"../internals/export":49}],173:[function(e,t,n){"use strict";var r=e("../internals/export"),i=e("../internals/array-includes").indexOf,o=e("../internals/array-method-is-strict"),a=e("../internals/array-method-uses-to-length"),s=[].indexOf,l=!!s&&1/[1].indexOf(1,-0)<0,c=o("indexOf"),u=a("indexOf",{ACCESSORS:!0,1:0});r({target:"Array",proto:!0,forced:l||!c||!u},{indexOf:function(e,t){return l?s.apply(this,arguments)||0:i(this,e,1<arguments.length?t:void 0)}})},{"../internals/array-includes":15,"../internals/array-method-is-strict":19,"../internals/array-method-uses-to-length":20,"../internals/export":49}],174:[function(e,t,n){e("../internals/export")({target:"Array",stat:!0},{isArray:e("../internals/is-array")})},{"../internals/export":49,"../internals/is-array":72}],175:[function(e,t,n){"use strict";var r=e("../internals/to-indexed-object"),i=e("../internals/add-to-unscopables"),o=e("../internals/iterators"),a=e("../internals/internal-state"),s=e("../internals/define-iterator"),l="Array Iterator",c=a.set,u=a.getterFor(l);t.exports=s(Array,"Array",function(e,t){c(this,{type:l,target:r(e),index:0,kind:t})},function(){var e=u(this),t=e.target,n=e.kind,r=e.index++;return!t||r>=t.length?{value:e.target=void 0,done:!0}:"keys"==n?{value:r,done:!1}:"values"==n?{value:t[r],done:!1}:{value:[r,t[r]],done:!1}},"values"),o.Arguments=o.Array,i("keys"),i("values"),i("entries")},{"../internals/add-to-unscopables":4,"../internals/define-iterator":40,"../internals/internal-state":70,"../internals/iterators":80,"../internals/to-indexed-object":142}],176:[function(e,t,n){"use strict";var r=e("../internals/export"),i=e("../internals/indexed-object"),o=e("../internals/to-indexed-object"),a=e("../internals/array-method-is-strict"),s=[].join,l=i!=Object,c=a("join",",");r({target:"Array",proto:!0,forced:l||!c},{join:function(e){return s.call(o(this),void 0===e?",":e)}})},{"../internals/array-method-is-strict":19,"../internals/export":49,"../internals/indexed-object":66,"../internals/to-indexed-object":142}],177:[function(e,t,n){var r=e("../internals/export"),i=e("../internals/array-last-index-of");r({target:"Array",proto:!0,forced:i!==[].lastIndexOf},{lastIndexOf:i})},{"../internals/array-last-index-of":17,"../internals/export":49}],178:[function(e,t,n){"use strict";var r=e("../internals/export"),i=e("../internals/array-iteration").map,o=e("../internals/array-method-has-species-support"),a=e("../internals/array-method-uses-to-length"),s=o("map"),l=a("map");r({target:"Array",proto:!0,forced:!s||!l},{map:function(e,t){return i(this,e,1<arguments.length?t:void 0)}})},{"../internals/array-iteration":16,"../internals/array-method-has-species-support":18,"../internals/array-method-uses-to-length":20,"../internals/export":49}],179:[function(e,t,n){"use strict";var r=e("../internals/export"),i=e("../internals/fails"),o=e("../internals/create-property");r({target:"Array",stat:!0,forced:i(function(){function e(){}return!(Array.of.call(e)instanceof e)})},{of:function(){for(var e=0,t=arguments.length,n=new("function"==typeof this?this:Array)(t);e<t;)o(n,e,arguments[e++]);return n.length=t,n}})},{"../internals/create-property":37,"../internals/export":49,"../internals/fails":50}],180:[function(e,t,n){"use strict";var r=e("../internals/export"),i=e("../internals/array-reduce").right,o=e("../internals/array-method-is-strict"),a=e("../internals/array-method-uses-to-length"),s=o("reduceRight"),l=a("reduce",{1:0});r({target:"Array",proto:!0,forced:!s||!l},{reduceRight:function(e,t){return i(this,e,arguments.length,1<arguments.length?t:void 0)}})},{"../internals/array-method-is-strict":19,"../internals/array-method-uses-to-length":20,"../internals/array-reduce":21,"../internals/export":49}],181:[function(e,t,n){"use strict";var r=e("../internals/export"),i=e("../internals/array-reduce").left,o=e("../internals/array-method-is-strict"),a=e("../internals/array-method-uses-to-length"),s=o("reduce"),l=a("reduce",{1:0});r({target:"Array",proto:!0,forced:!s||!l},{reduce:function(e,t){return i(this,e,arguments.length,1<arguments.length?t:void 0)}})},{"../internals/array-method-is-strict":19,"../internals/array-method-uses-to-length":20,"../internals/array-reduce":21,"../internals/export":49}],182:[function(e,t,n){"use strict";var r=e("../internals/export"),i=e("../internals/is-array"),o=[].reverse,a=[1,2];r({target:"Array",proto:!0,forced:String(a)===String(a.reverse())},{reverse:function(){return i(this)&&(this.length=this.length),o.call(this)}})},{"../internals/export":49,"../internals/is-array":72}],183:[function(e,t,n){"use strict";var r=e("../internals/export"),c=e("../internals/is-object"),u=e("../internals/is-array"),f=e("../internals/to-absolute-index"),d=e("../internals/to-length"),p=e("../internals/to-indexed-object"),h=e("../internals/create-property"),i=e("../internals/well-known-symbol"),o=e("../internals/array-method-has-species-support"),a=e("../internals/array-method-uses-to-length"),s=o("slice"),l=a("slice",{ACCESSORS:!0,0:0,1:2}),m=i("species"),g=[].slice,y=Math.max;r({target:"Array",proto:!0,forced:!s||!l},{slice:function(e,t){var n,r,i,o=p(this),a=d(o.length),s=f(e,a),l=f(void 0===t?a:t,a);if(u(o)&&("function"!=typeof(n=o.constructor)||n!==Array&&!u(n.prototype)?c(n)&&null===(n=n[m])&&(n=void 0):n=void 0,n===Array||void 0===n))return g.call(o,s,l);for(r=new(void 0===n?Array:n)(y(l-s,0)),i=0;s<l;s++,i++)s in o&&h(r,i,o[s]);return r.length=i,r}})},{"../internals/array-method-has-species-support":18,"../internals/array-method-uses-to-length":20,"../internals/create-property":37,"../internals/export":49,"../internals/is-array":72,"../internals/is-object":75,"../internals/to-absolute-index":140,"../internals/to-indexed-object":142,"../internals/to-length":144,"../internals/well-known-symbol":156}],184:[function(e,t,n){"use strict";var r=e("../internals/export"),i=e("../internals/array-iteration").some,o=e("../internals/array-method-is-strict"),a=e("../internals/array-method-uses-to-length"),s=o("some"),l=a("some");r({target:"Array",proto:!0,forced:!s||!l},{some:function(e,t){return i(this,e,1<arguments.length?t:void 0)}})},{"../internals/array-iteration":16,"../internals/array-method-is-strict":19,"../internals/array-method-uses-to-length":20,"../internals/export":49}],185:[function(e,t,n){"use strict";var r=e("../internals/export"),i=e("../internals/a-function"),o=e("../internals/to-object"),a=e("../internals/fails"),s=e("../internals/array-method-is-strict"),l=[],c=l.sort,u=a(function(){l.sort(void 0)}),f=a(function(){l.sort(null)}),d=s("sort");r({target:"Array",proto:!0,forced:u||!f||!d},{sort:function(e){return void 0===e?c.call(o(this)):c.call(o(this),i(e))}})},{"../internals/a-function":2,"../internals/array-method-is-strict":19,"../internals/export":49,"../internals/fails":50,"../internals/to-object":145}],186:[function(e,t,n){e("../internals/set-species")("Array")},{"../internals/set-species":124}],187:[function(e,t,n){"use strict";var r=e("../internals/export"),d=e("../internals/to-absolute-index"),p=e("../internals/to-integer"),h=e("../internals/to-length"),m=e("../internals/to-object"),g=e("../internals/array-species-create"),y=e("../internals/create-property"),i=e("../internals/array-method-has-species-support"),o=e("../internals/array-method-uses-to-length"),a=i("splice"),s=o("splice",{ACCESSORS:!0,0:0,1:2}),b=Math.max,v=Math.min;r({target:"Array",proto:!0,forced:!a||!s},{splice:function(e,t){var n,r,i,o,a,s,l=m(this),c=h(l.length),u=d(e,c),f=arguments.length;if(0===f?n=r=0:r=1===f?(n=0,c-u):(n=f-2,v(b(p(t),0),c-u)),9007199254740991<c+n-r)throw TypeError("Maximum allowed length exceeded");for(i=g(l,r),o=0;o<r;o++)(a=u+o)in l&&y(i,o,l[a]);if(n<(i.length=r)){for(o=u;o<c-r;o++)s=o+n,(a=o+r)in l?l[s]=l[a]:delete l[s];for(o=c;c-r+n<o;o--)delete l[o-1]}else if(r<n)for(o=c-r;u<o;o--)s=o+n-1,(a=o+r-1)in l?l[s]=l[a]:delete l[s];for(o=0;o<n;o++)l[o+u]=arguments[o+2];return l.length=c-r+n,i}})},{"../internals/array-method-has-species-support":18,"../internals/array-method-uses-to-length":20,"../internals/array-species-create":22,"../internals/create-property":37,"../internals/export":49,"../internals/to-absolute-index":140,"../internals/to-integer":143,"../internals/to-length":144,"../internals/to-object":145}],188:[function(e,t,n){e("../internals/add-to-unscopables")("flatMap")},{"../internals/add-to-unscopables":4}],189:[function(e,t,n){e("../internals/add-to-unscopables")("flat")},{"../internals/add-to-unscopables":4}],190:[function(e,t,n){var r=e("../internals/export"),i=e("../internals/array-buffer");r({global:!0,forced:!e("../internals/array-buffer-native")},{DataView:i.DataView})},{"../internals/array-buffer":10,"../internals/array-buffer-native":8,"../internals/export":49}],191:[function(e,t,n){e("../internals/export")({target:"Date",stat:!0},{now:function(){return(new Date).getTime()}})},{"../internals/export":49}],192:[function(e,t,n){var r=e("../internals/export"),i=e("../internals/date-to-iso-string");r({target:"Date",proto:!0,forced:Date.prototype.toISOString!==i},{toISOString:i})},{"../internals/date-to-iso-string":38,"../internals/export":49}],193:[function(e,t,n){"use strict";var r=e("../internals/export"),i=e("../internals/fails"),o=e("../internals/to-object"),a=e("../internals/to-primitive");r({target:"Date",proto:!0,forced:i(function(){return null!==new Date(NaN).toJSON()||1!==Date.prototype.toJSON.call({toISOString:function(){return 1}})})},{toJSON:function(){var e=o(this),t=a(e);return"number"!=typeof t||isFinite(t)?e.toISOString():null}})},{"../internals/export":49,"../internals/fails":50,"../internals/to-object":145,"../internals/to-primitive":148}],194:[function(e,t,n){var r=e("../internals/create-non-enumerable-property"),i=e("../internals/date-to-primitive"),o=e("../internals/well-known-symbol")("toPrimitive"),a=Date.prototype;o in a||r(a,o,i)},{"../internals/create-non-enumerable-property":35,"../internals/date-to-primitive":39,"../internals/well-known-symbol":156}],195:[function(e,t,n){var r=e("../internals/redefine"),i=Date.prototype,o="Invalid Date",a="toString",s=i[a],l=i.getTime;new Date(NaN)+""!=o&&r(i,a,function(){var e=l.call(this);return e==e?s.call(this):o})},{"../internals/redefine":116}],196:[function(e,t,n){e("../internals/export")({target:"Function",proto:!0},{bind:e("../internals/function-bind")})},{"../internals/export":49,"../internals/function-bind":55}],197:[function(e,t,n){"use strict";var r=e("../internals/is-object"),i=e("../internals/object-define-property"),o=e("../internals/object-get-prototype-of"),a=e("../internals/well-known-symbol")("hasInstance"),s=Function.prototype;a in s||i.f(s,a,{value:function(e){if("function"!=typeof this||!r(e))return!1;if(!r(this.prototype))return e instanceof this;for(;e=o(e);)if(this.prototype===e)return!0;return!1}})},{"../internals/is-object":75,"../internals/object-define-property":98,"../internals/object-get-prototype-of":103,"../internals/well-known-symbol":156}],198:[function(e,t,n){var r=e("../internals/descriptors"),i=e("../internals/object-define-property").f,o=Function.prototype,a=o.toString,s=/^\s*function ([^ (]*)/;!r||"name"in o||i(o,"name",{configurable:!0,get:function(){try{return a.call(this).match(s)[1]}catch(e){return""}}})},{"../internals/descriptors":42,"../internals/object-define-property":98}],199:[function(e,t,n){e("../internals/export")({global:!0},{globalThis:e("../internals/global")})},{"../internals/export":49,"../internals/global":59}],200:[function(e,t,n){function i(e,t,n){var r=n.charAt(t-1),i=n.charAt(t+1);return c.test(e)&&!u.test(i)||u.test(e)&&!c.test(r)?"\\u"+e.charCodeAt(0).toString(16):e}var r=e("../internals/export"),o=e("../internals/get-built-in"),a=e("../internals/fails"),s=o("JSON","stringify"),l=/[\uD800-\uDFFF]/g,c=/^[\uD800-\uDBFF]$/,u=/^[\uDC00-\uDFFF]$/,f=a(function(){return'"\\udf06\\ud834"'!==s("\udf06\ud834")||'"\\udead"'!==s("\udead")});s&&r({target:"JSON",stat:!0,forced:f},{stringify:function(e,t,n){var r=s.apply(null,arguments);return"string"==typeof r?r.replace(l,i):r}})},{"../internals/export":49,"../internals/fails":50,"../internals/get-built-in":56}],201:[function(e,t,n){var r=e("../internals/global");e("../internals/set-to-string-tag")(r.JSON,"JSON",!0)},{"../internals/global":59,"../internals/set-to-string-tag":125}],202:[function(e,t,n){"use strict";var r=e("../internals/collection"),i=e("../internals/collection-strong");t.exports=r("Map",function(t){return function(e){return t(this,arguments.length?e:void 0)}},i)},{"../internals/collection":29,"../internals/collection-strong":27}],203:[function(e,t,n){var r=e("../internals/export"),i=e("../internals/math-log1p"),o=Math.acosh,a=Math.log,s=Math.sqrt,l=Math.LN2;r({target:"Math",stat:!0,forced:!o||710!=Math.floor(o(Number.MAX_VALUE))||o(1/0)!=1/0},{acosh:function(e){return(e=+e)<1?NaN:94906265.62425156<e?a(e)+l:i(e-1+s(e-1)*s(e+1))}})},{"../internals/export":49,"../internals/math-log1p":83}],204:[function(e,t,n){var r=e("../internals/export"),i=Math.asinh,o=Math.log,a=Math.sqrt;r({target:"Math",stat:!0,forced:!(i&&0<1/i(0))},{asinh:function e(t){return isFinite(t=+t)&&0!=t?t<0?-e(-t):o(t+a(t*t+1)):t}})},{"../internals/export":49}],205:[function(e,t,n){var r=e("../internals/export"),i=Math.atanh,o=Math.log;r({target:"Math",stat:!0,forced:!(i&&1/i(-0)<0)},{atanh:function(e){return 0==(e=+e)?e:o((1+e)/(1-e))/2}})},{"../internals/export":49}],206:[function(e,t,n){var r=e("../internals/export"),i=e("../internals/math-sign"),o=Math.abs,a=Math.pow;r({target:"Math",stat:!0},{cbrt:function(e){return i(e=+e)*a(o(e),1/3)}})},{"../internals/export":49,"../internals/math-sign":84}],207:[function(e,t,n){var r=e("../internals/export"),i=Math.floor,o=Math.log,a=Math.LOG2E;r({target:"Math",stat:!0},{clz32:function(e){return(e>>>=0)?31-i(o(e+.5)*a):32}})},{"../internals/export":49}],208:[function(e,t,n){var r=e("../internals/export"),i=e("../internals/math-expm1"),o=Math.cosh,a=Math.abs,s=Math.E;r({target:"Math",stat:!0,forced:!o||o(710)===1/0},{cosh:function(e){var t=i(a(e)-1)+1;return(t+1/(t*s*s))*(s/2)}})},{"../internals/export":49,"../internals/math-expm1":81}],209:[function(e,t,n){var r=e("../internals/export"),i=e("../internals/math-expm1");r({target:"Math",stat:!0,forced:i!=Math.expm1},{expm1:i})},{"../internals/export":49,"../internals/math-expm1":81}],210:[function(e,t,n){e("../internals/export")({target:"Math",stat:!0},{fround:e("../internals/math-fround")})},{"../internals/export":49,"../internals/math-fround":82}],211:[function(e,t,n){var r=e("../internals/export"),i=Math.hypot,l=Math.abs,c=Math.sqrt;r({target:"Math",stat:!0,forced:!!i&&i(1/0,NaN)!==1/0},{hypot:function(e,t){for(var n,r,i=0,o=0,a=arguments.length,s=0;o<a;)s<(n=l(arguments[o++]))?(i=i*(r=s/n)*r+1,s=n):i+=0<n?(r=n/s)*r:n;return s===1/0?1/0:s*c(i)}})},{"../internals/export":49}],212:[function(e,t,n){var r=e("../internals/export"),i=e("../internals/fails"),o=Math.imul;r({target:"Math",stat:!0,forced:i(function(){return-5!=o(4294967295,5)||2!=o.length})},{imul:function(e,t){var n=65535,r=+e,i=+t,o=n&r,a=n&i;return 0|o*a+((n&r>>>16)*a+o*(n&i>>>16)<<16>>>0)}})},{"../internals/export":49,"../internals/fails":50}],213:[function(e,t,n){var r=e("../internals/export"),i=Math.log,o=Math.LOG10E;r({target:"Math",stat:!0},{log10:function(e){return i(e)*o}})},{"../internals/export":49}],214:[function(e,t,n){e("../internals/export")({target:"Math",stat:!0},{log1p:e("../internals/math-log1p")})},{"../internals/export":49,"../internals/math-log1p":83}],215:[function(e,t,n){var r=e("../internals/export"),i=Math.log,o=Math.LN2;r({target:"Math",stat:!0},{log2:function(e){return i(e)/o}})},{"../internals/export":49}],216:[function(e,t,n){e("../internals/export")({target:"Math",stat:!0},{sign:e("../internals/math-sign")})},{"../internals/export":49,"../internals/math-sign":84}],217:[function(e,t,n){var r=e("../internals/export"),i=e("../internals/fails"),o=e("../internals/math-expm1"),a=Math.abs,s=Math.exp,l=Math.E;r({target:"Math",stat:!0,forced:i(function(){return-2e-17!=Math.sinh(-2e-17)})},{sinh:function(e){return a(e=+e)<1?(o(e)-o(-e))/2:(s(e-1)-s(-e-1))*(l/2)}})},{"../internals/export":49,"../internals/fails":50,"../internals/math-expm1":81}],218:[function(e,t,n){var r=e("../internals/export"),i=e("../internals/math-expm1"),o=Math.exp;r({target:"Math",stat:!0},{tanh:function(e){var t=i(e=+e),n=i(-e);return t==1/0?1:n==1/0?-1:(t-n)/(o(e)+o(-e))}})},{"../internals/export":49,"../internals/math-expm1":81}],219:[function(e,t,n){e("../internals/set-to-string-tag")(Math,"Math",!0)},{"../internals/set-to-string-tag":125}],220:[function(e,t,n){var r=e("../internals/export"),i=Math.ceil,o=Math.floor;r({target:"Math",stat:!0},{trunc:function(e){return(0<e?o:i)(e)}})},{"../internals/export":49}],221:[function(e,t,n){"use strict";function r(e){var t,n,r,i,o,a,s,l,c=f(e,!1);if("string"==typeof c&&2<c.length)if(43===(t=(c=y(c)).charCodeAt(0))||45===t){if(88===(n=c.charCodeAt(2))||120===n)return NaN}else if(48===t){switch(c.charCodeAt(1)){case 66:case 98:r=2,i=49;break;case 79:case 111:r=8,i=55;break;default:return+c}for(a=(o=c.slice(2)).length,s=0;s<a;s++)if((l=o.charCodeAt(s))<48||i<l)return NaN;return parseInt(o,r)}return+c}var i=e("../internals/descriptors"),o=e("../internals/global"),a=e("../internals/is-forced"),s=e("../internals/redefine"),l=e("../internals/has"),c=e("../internals/classof-raw"),u=e("../internals/inherit-if-required"),f=e("../internals/to-primitive"),d=e("../internals/fails"),p=e("../internals/object-create"),h=e("../internals/object-get-own-property-names").f,m=e("../internals/object-get-own-property-descriptor").f,g=e("../internals/object-define-property").f,y=e("../internals/string-trim").trim,b="Number",v=o[b],x=v.prototype,w=c(p(x))==b;if(a(b,!v(" 0o1")||!v("0b1")||v("+0x1"))){for(var j,C=function(e){var t=arguments.length<1?0:e,n=this;return n instanceof C&&(w?d(function(){x.valueOf.call(n)}):c(n)!=b)?u(new v(r(t)),n,C):r(t)},E=i?h(v):"MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger".split(","),S=0;E.length>S;S++)l(v,j=E[S])&&!l(C,j)&&g(C,j,m(v,j));(C.prototype=x).constructor=C,s(o,b,C)}},{"../internals/classof-raw":25,"../internals/descriptors":42,"../internals/fails":50,"../internals/global":59,"../internals/has":60,"../internals/inherit-if-required":67,"../internals/is-forced":73,"../internals/object-create":96,"../internals/object-define-property":98,"../internals/object-get-own-property-descriptor":99,"../internals/object-get-own-property-names":101,"../internals/redefine":116,"../internals/string-trim":137,"../internals/to-primitive":148}],222:[function(e,t,n){e("../internals/export")({target:"Number",stat:!0},{EPSILON:Math.pow(2,-52)})},{"../internals/export":49}],223:[function(e,t,n){e("../internals/export")({target:"Number",stat:!0},{isFinite:e("../internals/number-is-finite")})},{"../internals/export":49,"../internals/number-is-finite":92}],224:[function(e,t,n){e("../internals/export")({target:"Number",stat:!0},{isInteger:e("../internals/is-integer")})},{"../internals/export":49,"../internals/is-integer":74}],225:[function(e,t,n){e("../internals/export")({target:"Number",stat:!0},{isNaN:function(e){return e!=e}})},{"../internals/export":49}],226:[function(e,t,n){var r=e("../internals/export"),i=e("../internals/is-integer"),o=Math.abs;r({target:"Number",stat:!0},{isSafeInteger:function(e){return i(e)&&o(e)<=9007199254740991}})},{"../internals/export":49,"../internals/is-integer":74}],227:[function(e,t,n){e("../internals/export")({target:"Number",stat:!0},{MAX_SAFE_INTEGER:9007199254740991})},{"../internals/export":49}],228:[function(e,t,n){e("../internals/export")({target:"Number",stat:!0},{MIN_SAFE_INTEGER:-9007199254740991})},{"../internals/export":49}],229:[function(e,t,n){var r=e("../internals/export"),i=e("../internals/number-parse-float");r({target:"Number",stat:!0,forced:Number.parseFloat!=i},{parseFloat:i})},{"../internals/export":49,"../internals/number-parse-float":93}],230:[function(e,t,n){var r=e("../internals/export"),i=e("../internals/number-parse-int");r({target:"Number",stat:!0,forced:Number.parseInt!=i},{parseInt:i})},{"../internals/export":49,"../internals/number-parse-int":94}],231:[function(e,t,n){"use strict";var r=e("../internals/export"),p=e("../internals/to-integer"),h=e("../internals/this-number-value"),m=e("../internals/string-repeat"),i=e("../internals/fails"),o=1..toFixed,g=Math.floor,y=function(e,t,n){return 0===t?n:t%2==1?y(e,t-1,n*e):y(e*e,t/2,n)};r({target:"Number",proto:!0,forced:o&&("0.000"!==8e-5.toFixed(3)||"1"!==.9.toFixed(0)||"1.25"!==1.255.toFixed(2)||"1000000000000000128"!==(0xde0b6b3a7640080).toFixed(0))||!i(function(){o.call({})})},{toFixed:function(e){function t(e,t){for(var n=-1,r=t;++n<6;)r+=e*u[n],u[n]=r%1e7,r=g(r/1e7)}function n(e){for(var t=6,n=0;0<=--t;)n+=u[t],u[t]=g(n/e),n=n%e*1e7}function r(){for(var e=6,t="";0<=--e;)if(""!==t||0===e||0!==u[e]){var n=String(u[e]);t=""===t?n:t+m.call("0",7-n.length)+n}return t}var i,o,a,s,l=h(this),c=p(e),u=[0,0,0,0,0,0],f="",d="0";if(c<0||20<c)throw RangeError("Incorrect fraction digits");if(l!=l)return"NaN";if(l<=-1e21||1e21<=l)return String(l);if(l<0&&(f="-",l=-l),1e-21<l)if(o=(i=function(e){for(var t=0,n=e;4096<=n;)t+=12,n/=4096;for(;2<=n;)t+=1,n/=2;return t}(l*y(2,69,1))-69)<0?l*y(2,-i,1):l/y(2,i,1),o*=4503599627370496,0<(i=52-i)){for(t(0,o),a=c;7<=a;)t(1e7,0),a-=7;for(t(y(10,a,1),0),a=i-1;23<=a;)n(1<<23),a-=23;n(1<<a),t(1,1),n(2),d=r()}else t(0,o),t(1<<-i,0),d=r()+m.call("0",c);return d=0<c?f+((s=d.length)<=c?"0."+m.call("0",c-s)+d:d.slice(0,s-c)+"."+d.slice(s-c)):f+d}})},{"../internals/export":49,"../internals/fails":50,"../internals/string-repeat":135,"../internals/this-number-value":139,"../internals/to-integer":143}],232:[function(e,t,n){"use strict";var r=e("../internals/export"),i=e("../internals/fails"),o=e("../internals/this-number-value"),a=1..toPrecision;r({target:"Number",proto:!0,forced:i(function(){return"1"!==a.call(1,void 0)})||!i(function(){a.call({})})},{toPrecision:function(e){return void 0===e?a.call(o(this)):a.call(o(this),e)}})},{"../internals/export":49,"../internals/fails":50,"../internals/this-number-value":139}],233:[function(e,t,n){var r=e("../internals/export"),i=e("../internals/object-assign");r({target:"Object",stat:!0,forced:Object.assign!==i},{assign:i})},{"../internals/export":49,"../internals/object-assign":95}],234:[function(e,t,n){e("../internals/export")({target:"Object",stat:!0,sham:!e("../internals/descriptors")},{create:e("../internals/object-create")})},{"../internals/descriptors":42,"../internals/export":49,"../internals/object-create":96}],235:[function(e,t,n){"use strict";var r=e("../internals/export"),i=e("../internals/descriptors"),o=e("../internals/object-prototype-accessors-forced"),a=e("../internals/to-object"),s=e("../internals/a-function"),l=e("../internals/object-define-property");i&&r({target:"Object",proto:!0,forced:o},{__defineGetter__:function(e,t){l.f(a(this),e,{get:s(t),enumerable:!0,configurable:!0})}})},{"../internals/a-function":2,"../internals/descriptors":42,"../internals/export":49,"../internals/object-define-property":98,"../internals/object-prototype-accessors-forced":107,"../internals/to-object":145}],236:[function(e,t,n){var r=e("../internals/export"),i=e("../internals/descriptors");r({target:"Object",stat:!0,forced:!i,sham:!i},{defineProperties:e("../internals/object-define-properties")})},{"../internals/descriptors":42,"../internals/export":49,"../internals/object-define-properties":97}],237:[function(e,t,n){var r=e("../internals/export"),i=e("../internals/descriptors");r({target:"Object",stat:!0,forced:!i,sham:!i},{defineProperty:e("../internals/object-define-property").f})},{"../internals/descriptors":42,"../internals/export":49,"../internals/object-define-property":98}],238:[function(e,t,n){"use strict";var r=e("../internals/export"),i=e("../internals/descriptors"),o=e("../internals/object-prototype-accessors-forced"),a=e("../internals/to-object"),s=e("../internals/a-function"),l=e("../internals/object-define-property");i&&r({target:"Object",proto:!0,forced:o},{__defineSetter__:function(e,t){l.f(a(this),e,{set:s(t),enumerable:!0,configurable:!0})}})},{"../internals/a-function":2,"../internals/descriptors":42,"../internals/export":49,"../internals/object-define-property":98,"../internals/object-prototype-accessors-forced":107,"../internals/to-object":145}],239:[function(e,t,n){var r=e("../internals/export"),i=e("../internals/object-to-array").entries;r({target:"Object",stat:!0},{entries:function(e){return i(e)}})},{"../internals/export":49,"../internals/object-to-array":109}],240:[function(e,t,n){var r=e("../internals/export"),i=e("../internals/freezing"),o=e("../internals/fails"),a=e("../internals/is-object"),s=e("../internals/internal-metadata").onFreeze,l=Object.freeze;r({target:"Object",stat:!0,forced:o(function(){l(1)}),sham:!i},{freeze:function(e){return l&&a(e)?l(s(e)):e}})},{"../internals/export":49,"../internals/fails":50,"../internals/freezing":53,"../internals/internal-metadata":69,"../internals/is-object":75}],241:[function(e,t,n){var r=e("../internals/export"),i=e("../internals/iterate"),o=e("../internals/create-property");r({target:"Object",stat:!0},{fromEntries:function(e){var n={};return i(e,function(e,t){o(n,e,t)},void 0,!0),n}})},{"../internals/create-property":37,"../internals/export":49,"../internals/iterate":78}],242:[function(e,t,n){var r=e("../internals/export"),i=e("../internals/fails"),o=e("../internals/to-indexed-object"),a=e("../internals/object-get-own-property-descriptor").f,s=e("../internals/descriptors"),l=i(function(){a(1)});r({target:"Object",stat:!0,forced:!s||l,sham:!s},{getOwnPropertyDescriptor:function(e,t){return a(o(e),t)}})},{"../internals/descriptors":42,"../internals/export":49,"../internals/fails":50,"../internals/object-get-own-property-descriptor":99,"../internals/to-indexed-object":142}],243:[function(e,t,n){var r=e("../internals/export"),i=e("../internals/descriptors"),l=e("../internals/own-keys"),c=e("../internals/to-indexed-object"),u=e("../internals/object-get-own-property-descriptor"),f=e("../internals/create-property");r({target:"Object",stat:!0,sham:!i},{getOwnPropertyDescriptors:function(e){for(var t,n,r=c(e),i=u.f,o=l(r),a={},s=0;o.length>s;)void 0!==(n=i(r,t=o[s++]))&&f(a,t,n);return a}})},{"../internals/create-property":37,"../internals/descriptors":42,"../internals/export":49,"../internals/object-get-own-property-descriptor":99,"../internals/own-keys":111,"../internals/to-indexed-object":142}],244:[function(e,t,n){var r=e("../internals/export"),i=e("../internals/fails"),o=e("../internals/object-get-own-property-names-external").f;r({target:"Object",stat:!0,forced:i(function(){return!Object.getOwnPropertyNames(1)})},{getOwnPropertyNames:o})},{"../internals/export":49,"../internals/fails":50,"../internals/object-get-own-property-names-external":100}],245:[function(e,t,n){var r=e("../internals/export"),i=e("../internals/fails"),o=e("../internals/to-object"),a=e("../internals/object-get-prototype-of"),s=e("../internals/correct-prototype-getter");r({target:"Object",stat:!0,forced:i(function(){a(1)}),sham:!s},{getPrototypeOf:function(e){return a(o(e))}})},{"../internals/correct-prototype-getter":32,"../internals/export":49,"../internals/fails":50,"../internals/object-get-prototype-of":103,"../internals/to-object":145}],246:[function(e,t,n){var r=e("../internals/export"),i=e("../internals/fails"),o=e("../internals/is-object"),a=Object.isExtensible;r({target:"Object",stat:!0,forced:i(function(){a(1)})},{isExtensible:function(e){return!!o(e)&&(!a||a(e))}})},{"../internals/export":49,"../internals/fails":50,"../internals/is-object":75}],247:[function(e,t,n){var r=e("../internals/export"),i=e("../internals/fails"),o=e("../internals/is-object"),a=Object.isFrozen;r({target:"Object",stat:!0,forced:i(function(){a(1)})},{isFrozen:function(e){return!o(e)||!!a&&a(e)}})},{"../internals/export":49,"../internals/fails":50,"../internals/is-object":75}],248:[function(e,t,n){var r=e("../internals/export"),i=e("../internals/fails"),o=e("../internals/is-object"),a=Object.isSealed;r({target:"Object",stat:!0,forced:i(function(){a(1)})},{isSealed:function(e){return!o(e)||!!a&&a(e)}})},{"../internals/export":49,"../internals/fails":50,"../internals/is-object":75}],249:[function(e,t,n){e("../internals/export")({target:"Object",stat:!0},{is:e("../internals/same-value")})},{"../internals/export":49,"../internals/same-value":122}],250:[function(e,t,n){var r=e("../internals/export"),i=e("../internals/to-object"),o=e("../internals/object-keys");r({target:"Object",stat:!0,forced:e("../internals/fails")(function(){o(1)})},{keys:function(e){return o(i(e))}})},{"../internals/export":49,"../internals/fails":50,"../internals/object-keys":105,"../internals/to-object":145}],251:[function(e,t,n){"use strict";var r=e("../internals/export"),i=e("../internals/descriptors"),o=e("../internals/object-prototype-accessors-forced"),a=e("../internals/to-object"),s=e("../internals/to-primitive"),l=e("../internals/object-get-prototype-of"),c=e("../internals/object-get-own-property-descriptor").f;i&&r({target:"Object",proto:!0,forced:o},{__lookupGetter__:function(e){var t,n=a(this),r=s(e,!0);do{if(t=c(n,r))return t.get}while(n=l(n))}})},{"../internals/descriptors":42,"../internals/export":49,"../internals/object-get-own-property-descriptor":99,"../internals/object-get-prototype-of":103,"../internals/object-prototype-accessors-forced":107,"../internals/to-object":145,"../internals/to-primitive":148}],252:[function(e,t,n){"use strict";var r=e("../internals/export"),i=e("../internals/descriptors"),o=e("../internals/object-prototype-accessors-forced"),a=e("../internals/to-object"),s=e("../internals/to-primitive"),l=e("../internals/object-get-prototype-of"),c=e("../internals/object-get-own-property-descriptor").f;i&&r({target:"Object",proto:!0,forced:o},{__lookupSetter__:function(e){var t,n=a(this),r=s(e,!0);do{if(t=c(n,r))return t.set}while(n=l(n))}})},{"../internals/descriptors":42,"../internals/export":49,"../internals/object-get-own-property-descriptor":99,"../internals/object-get-prototype-of":103,"../internals/object-prototype-accessors-forced":107,"../internals/to-object":145,"../internals/to-primitive":148}],253:[function(e,t,n){var r=e("../internals/export"),i=e("../internals/is-object"),o=e("../internals/internal-metadata").onFreeze,a=e("../internals/freezing"),s=e("../internals/fails"),l=Object.preventExtensions;r({target:"Object",stat:!0,forced:s(function(){l(1)}),sham:!a},{preventExtensions:function(e){return l&&i(e)?l(o(e)):e}})},{"../internals/export":49,"../internals/fails":50,"../internals/freezing":53,"../internals/internal-metadata":69,"../internals/is-object":75}],254:[function(e,t,n){var r=e("../internals/export"),i=e("../internals/is-object"),o=e("../internals/internal-metadata").onFreeze,a=e("../internals/freezing"),s=e("../internals/fails"),l=Object.seal;r({target:"Object",stat:!0,forced:s(function(){l(1)}),sham:!a},{seal:function(e){return l&&i(e)?l(o(e)):e}})},{"../internals/export":49,"../internals/fails":50,"../internals/freezing":53,"../internals/internal-metadata":69,"../internals/is-object":75}],255:[function(e,t,n){e("../internals/export")({target:"Object",stat:!0},{setPrototypeOf:e("../internals/object-set-prototype-of")})},{"../internals/export":49,"../internals/object-set-prototype-of":108}],256:[function(e,t,n){var r=e("../internals/to-string-tag-support"),i=e("../internals/redefine"),o=e("../internals/object-to-string");r||i(Object.prototype,"toString",o,{unsafe:!0})},{"../internals/object-to-string":110,"../internals/redefine":116,"../internals/to-string-tag-support":149}],257:[function(e,t,n){var r=e("../internals/export"),i=e("../internals/object-to-array").values;r({target:"Object",stat:!0},{values:function(e){return i(e)}})},{"../internals/export":49,"../internals/object-to-array":109}],258:[function(e,t,n){var r=e("../internals/export"),i=e("../internals/number-parse-float");r({global:!0,forced:parseFloat!=i},{parseFloat:i})},{"../internals/export":49,"../internals/number-parse-float":93}],259:[function(e,t,n){var r=e("../internals/export"),i=e("../internals/number-parse-int");r({global:!0,forced:parseInt!=i},{parseInt:i})},{"../internals/export":49,"../internals/number-parse-int":94}],260:[function(e,t,n){"use strict";var r=e("../internals/export"),c=e("../internals/a-function"),i=e("../internals/new-promise-capability"),o=e("../internals/perform"),u=e("../internals/iterate");r({target:"Promise",stat:!0},{allSettled:function(e){var s=this,t=i.f(s),l=t.resolve,n=t.reject,r=o(function(){var r=c(s.resolve),i=[],o=0,a=1;u(e,function(e){var t=o++,n=!1;i.push(void 0),a++,r.call(s,e).then(function(e){n||(n=!0,i[t]={status:"fulfilled",value:e},--a||l(i))},function(e){n||(n=!0,i[t]={status:"rejected",reason:e},--a||l(i))})}),--a||l(i)});return r.error&&n(r.value),t.promise}})},{"../internals/a-function":2,"../internals/export":49,"../internals/iterate":78,"../internals/new-promise-capability":90,"../internals/perform":113}],261:[function(e,t,n){"use strict";var r=e("../internals/export"),i=e("../internals/is-pure"),o=e("../internals/native-promise-constructor"),a=e("../internals/fails"),s=e("../internals/get-built-in"),l=e("../internals/species-constructor"),c=e("../internals/promise-resolve"),u=e("../internals/redefine");r({target:"Promise",proto:!0,real:!0,forced:!!o&&a(function(){o.prototype.finally.call({then:function(){}},function(){})})},{finally:function(t){var n=l(this,s("Promise")),e="function"==typeof t;return this.then(e?function(e){return c(n,t()).then(function(){return e})}:t,e?function(e){return c(n,t()).then(function(){throw e})}:t)}}),i||"function"!=typeof o||o.prototype.finally||u(o.prototype,"finally",s("Promise").prototype.finally)},{"../internals/export":49,"../internals/fails":50,"../internals/get-built-in":56,"../internals/is-pure":76,"../internals/native-promise-constructor":86,"../internals/promise-resolve":114,"../internals/redefine":116,"../internals/species-constructor":129}],262:[function(e,t,n){"use strict";function m(e){var t;return!(!w(e)||"function"!=typeof(t=e.then))&&t}function o(f,d,p){if(!d.notified){d.notified=!0;var h=d.reactions;N(function(){for(var e=d.value,t=1==d.state,n=0;h.length>n;){var r,i,o,a=h[n++],s=t?a.ok:a.fail,l=a.resolve,c=a.reject,u=a.domain;try{s?(t||(2===d.rejection&&ie(f,d),d.rejection=1),!0===s?r=e:(u&&u.enter(),r=s(e),u&&(u.exit(),o=!0)),r===a.promise?c(B("Promise-chain cycle")):(i=m(r))?i.call(r,l,c):l(r)):c(e)}catch(e){u&&!o&&u.exit(),c(e)}}d.reactions=[],d.notified=!1,p&&!d.rejection&&ne(f,d)})}}function i(e,t,n){var r,i;K?((r=H.createEvent("Event")).promise=t,r.reason=n,r.initEvent(e,!1,!0),p.dispatchEvent(r)):r={promise:t,reason:n},(i=p["on"+e])?i(r):e===Q&&L("Unhandled promise rejection",n)}function a(t,n,r,i){return function(e){t(n,r,e,i)}}function s(e,t,n,r){t.done||(t.done=!0,r&&(t=r),t.value=n,t.state=2,o(e,t,!0))}var r,l,c,u,f=e("../internals/export"),d=e("../internals/is-pure"),p=e("../internals/global"),h=e("../internals/get-built-in"),g=e("../internals/native-promise-constructor"),y=e("../internals/redefine"),b=e("../internals/redefine-all"),v=e("../internals/set-to-string-tag"),x=e("../internals/set-species"),w=e("../internals/is-object"),j=e("../internals/a-function"),C=e("../internals/an-instance"),E=e("../internals/classof-raw"),S=e("../internals/inspect-source"),O=e("../internals/iterate"),k=e("../internals/check-correctness-of-iteration"),A=e("../internals/species-constructor"),I=e("../internals/task").set,N=e("../internals/microtask"),T=e("../internals/promise-resolve"),L=e("../internals/host-report-errors"),R=e("../internals/new-promise-capability"),P=e("../internals/perform"),M=e("../internals/internal-state"),D=e("../internals/is-forced"),_=e("../internals/well-known-symbol"),F=e("../internals/engine-v8-version"),Y=_("species"),U="Promise",q=M.get,X=M.set,z=M.getterFor(U),W=g,B=p.TypeError,H=p.document,G=p.process,V=h("fetch"),$=R.f,Z=$,J="process"==E(G),K=!!(H&&H.createEvent&&p.dispatchEvent),Q="unhandledrejection",ee=D(U,function(){if(!(S(W)!==String(W))){if(66===F)return!0;if(!J&&"function"!=typeof PromiseRejectionEvent)return!0}if(d&&!W.prototype.finally)return!0;if(51<=F&&/native code/.test(W))return!1;function e(e){e(function(){},function(){})}var t=W.resolve(1);return(t.constructor={})[Y]=e,!(t.then(function(){})instanceof e)}),te=ee||!k(function(e){W.all(e).catch(function(){})}),ne=function(n,r){I.call(p,function(){var e,t=r.value;if(re(r)&&(e=P(function(){J?G.emit("unhandledRejection",t,n):i(Q,n,t)}),r.rejection=J||re(r)?2:1,e.error))throw e.value})},re=function(e){return 1!==e.rejection&&!e.parent},ie=function(e,t){I.call(p,function(){J?G.emit("rejectionHandled",e):i("rejectionhandled",e,t.value)})},oe=function(n,r,e,t){if(!r.done){r.done=!0,t&&(r=t);try{if(n===e)throw B("Promise can't be resolved itself");var i=m(e);i?N(function(){var t={done:!1};try{i.call(e,a(oe,n,t,r),a(s,n,t,r))}catch(e){s(n,t,e,r)}}):(r.value=e,r.state=1,o(n,r,!1))}catch(e){s(n,{done:!1},e,r)}}};ee&&(W=function(e){C(this,W,U),j(e),r.call(this);var t=q(this);try{e(a(oe,this,t),a(s,this,t))}catch(e){s(this,t,e)}},(r=function(){X(this,{type:U,done:!1,notified:!1,parent:!1,reactions:[],rejection:!1,state:0,value:void 0})}).prototype=b(W.prototype,{then:function(e,t){var n=z(this),r=$(A(this,W));return r.ok="function"!=typeof e||e,r.fail="function"==typeof t&&t,r.domain=J?G.domain:void 0,n.parent=!0,n.reactions.push(r),0!=n.state&&o(this,n,!1),r.promise},catch:function(e){return this.then(void 0,e)}}),l=function(){var e=new r,t=q(e);this.promise=e,this.resolve=a(oe,e,t),this.reject=a(s,e,t)},R.f=$=function(e){return e===W||e===c?new l(e):Z(e)},d||"function"!=typeof g||(u=g.prototype.then,y(g.prototype,"then",function(e,t){var n=this;return new W(function(e,t){u.call(n,e,t)}).then(e,t)},{unsafe:!0}),"function"==typeof V&&f({global:!0,enumerable:!0,forced:!0},{fetch:function(e){return T(W,V.apply(p,arguments))}}))),f({global:!0,wrap:!0,forced:ee},{Promise:W}),v(W,U,!1,!0),x(U),c=h(U),f({target:U,stat:!0,forced:ee},{reject:function(e){var t=$(this);return t.reject.call(void 0,e),t.promise}}),f({target:U,stat:!0,forced:d||ee},{resolve:function(e){return T(d&&this===c?W:this,e)}}),f({target:U,stat:!0,forced:te},{all:function(e){var s=this,t=$(s),l=t.resolve,c=t.reject,n=P(function(){var r=j(s.resolve),i=[],o=0,a=1;O(e,function(e){var t=o++,n=!1;i.push(void 0),a++,r.call(s,e).then(function(e){n||(n=!0,i[t]=e,--a||l(i))},c)}),--a||l(i)});return n.error&&c(n.value),t.promise},race:function(e){var n=this,r=$(n),i=r.reject,t=P(function(){var t=j(n.resolve);O(e,function(e){t.call(n,e).then(r.resolve,i)})});return t.error&&i(t.value),r.promise}})},{"../internals/a-function":2,"../internals/an-instance":6,"../internals/check-correctness-of-iteration":24,"../internals/classof-raw":25,"../internals/engine-v8-version":47,"../internals/export":49,"../internals/get-built-in":56,"../internals/global":59,"../internals/host-report-errors":62,"../internals/inspect-source":68,"../internals/internal-state":70,"../internals/is-forced":73,"../internals/is-object":75,"../internals/is-pure":76,"../internals/iterate":78,"../internals/microtask":85,"../internals/native-promise-constructor":86,"../internals/new-promise-capability":90,"../internals/perform":113,"../internals/promise-resolve":114,"../internals/redefine":116,"../internals/redefine-all":115,"../internals/set-species":124,"../internals/set-to-string-tag":125,"../internals/species-constructor":129,"../internals/task":138,"../internals/well-known-symbol":156}],263:[function(e,t,n){var r=e("../internals/export"),i=e("../internals/get-built-in"),o=e("../internals/a-function"),a=e("../internals/an-object"),s=e("../internals/fails"),l=i("Reflect","apply"),c=Function.apply;r({target:"Reflect",stat:!0,forced:!s(function(){l(function(){})})},{apply:function(e,t,n){return o(e),a(n),l?l(e,t,n):c.call(e,t,n)}})},{"../internals/a-function":2,"../internals/an-object":7,"../internals/export":49,"../internals/fails":50,"../internals/get-built-in":56}],264:[function(e,t,n){var r=e("../internals/export"),i=e("../internals/get-built-in"),l=e("../internals/a-function"),c=e("../internals/an-object"),u=e("../internals/is-object"),f=e("../internals/object-create"),d=e("../internals/function-bind"),o=e("../internals/fails"),p=i("Reflect","construct"),h=o(function(){function e(){}return!(p(function(){},[],e)instanceof e)}),m=!o(function(){p(function(){})}),a=h||m;r({target:"Reflect",stat:!0,forced:a,sham:a},{construct:function(e,t,n){l(e),c(t);var r=arguments.length<3?e:l(n);if(m&&!h)return p(e,t,r);if(e==r){switch(t.length){case 0:return new e;case 1:return new e(t[0]);case 2:return new e(t[0],t[1]);case 3:return new e(t[0],t[1],t[2]);case 4:return new e(t[0],t[1],t[2],t[3])}var i=[null];return i.push.apply(i,t),new(d.apply(e,i))}var o=r.prototype,a=f(u(o)?o:Object.prototype),s=Function.apply.call(e,a,t);return u(s)?s:a}})},{"../internals/a-function":2,"../internals/an-object":7,"../internals/export":49,"../internals/fails":50,"../internals/function-bind":55,"../internals/get-built-in":56,"../internals/is-object":75,"../internals/object-create":96}],265:[function(e,t,n){var r=e("../internals/export"),i=e("../internals/descriptors"),o=e("../internals/an-object"),a=e("../internals/to-primitive"),s=e("../internals/object-define-property");r({target:"Reflect",stat:!0,forced:e("../internals/fails")(function(){Reflect.defineProperty(s.f({},1,{value:1}),1,{value:2})}),sham:!i},{defineProperty:function(e,t,n){o(e);var r=a(t,!0);o(n);try{return s.f(e,r,n),!0}catch(e){return!1}}})},{"../internals/an-object":7,"../internals/descriptors":42,"../internals/export":49,"../internals/fails":50,"../internals/object-define-property":98,"../internals/to-primitive":148}],266:[function(e,t,n){var r=e("../internals/export"),i=e("../internals/an-object"),o=e("../internals/object-get-own-property-descriptor").f;r({target:"Reflect",stat:!0},{deleteProperty:function(e,t){var n=o(i(e),t);return!(n&&!n.configurable)&&delete e[t]}})},{"../internals/an-object":7,"../internals/export":49,"../internals/object-get-own-property-descriptor":99}],267:[function(e,t,n){var r=e("../internals/export"),i=e("../internals/descriptors"),o=e("../internals/an-object"),a=e("../internals/object-get-own-property-descriptor");r({target:"Reflect",stat:!0,sham:!i},{getOwnPropertyDescriptor:function(e,t){return a.f(o(e),t)}})},{"../internals/an-object":7,"../internals/descriptors":42,"../internals/export":49,"../internals/object-get-own-property-descriptor":99}],268:[function(e,t,n){var r=e("../internals/export"),i=e("../internals/an-object"),o=e("../internals/object-get-prototype-of");r({target:"Reflect",stat:!0,sham:!e("../internals/correct-prototype-getter")},{getPrototypeOf:function(e){return o(i(e))}})},{"../internals/an-object":7,"../internals/correct-prototype-getter":32,"../internals/export":49,"../internals/object-get-prototype-of":103}],269:[function(e,t,n){var r=e("../internals/export"),a=e("../internals/is-object"),s=e("../internals/an-object"),l=e("../internals/has"),c=e("../internals/object-get-own-property-descriptor"),u=e("../internals/object-get-prototype-of");r({target:"Reflect",stat:!0},{get:function e(t,n){var r,i,o=arguments.length<3?t:arguments[2];return s(t)===o?t[n]:(r=c.f(t,n))?l(r,"value")?r.value:void 0===r.get?void 0:r.get.call(o):a(i=u(t))?e(i,n,o):void 0}})},{"../internals/an-object":7,"../internals/export":49,"../internals/has":60,"../internals/is-object":75,"../internals/object-get-own-property-descriptor":99,"../internals/object-get-prototype-of":103}],270:[function(e,t,n){e("../internals/export")({target:"Reflect",stat:!0},{has:function(e,t){return t in e}})},{"../internals/export":49}],271:[function(e,t,n){var r=e("../internals/export"),i=e("../internals/an-object"),o=Object.isExtensible;r({target:"Reflect",stat:!0},{isExtensible:function(e){return i(e),!o||o(e)}})},{"../internals/an-object":7,"../internals/export":49}],272:[function(e,t,n){e("../internals/export")({target:"Reflect",stat:!0},{ownKeys:e("../internals/own-keys")})},{"../internals/export":49,"../internals/own-keys":111}],273:[function(e,t,n){var r=e("../internals/export"),i=e("../internals/get-built-in"),o=e("../internals/an-object");r({target:"Reflect",stat:!0,sham:!e("../internals/freezing")},{preventExtensions:function(e){o(e);try{var t=i("Object","preventExtensions");return t&&t(e),!0}catch(e){return!1}}})},{"../internals/an-object":7,"../internals/export":49,"../internals/freezing":53,"../internals/get-built-in":56}],274:[function(e,t,n){var r=e("../internals/export"),i=e("../internals/an-object"),o=e("../internals/a-possible-prototype"),a=e("../internals/object-set-prototype-of");a&&r({target:"Reflect",stat:!0},{setPrototypeOf:function(e,t){i(e),o(t);try{return a(e,t),!0}catch(e){return!1}}})},{"../internals/a-possible-prototype":3,"../internals/an-object":7,"../internals/export":49,"../internals/object-set-prototype-of":108}],275:[function(e,t,n){var r=e("../internals/export"),l=e("../internals/an-object"),c=e("../internals/is-object"),u=e("../internals/has"),i=e("../internals/fails"),f=e("../internals/object-define-property"),d=e("../internals/object-get-own-property-descriptor"),p=e("../internals/object-get-prototype-of"),h=e("../internals/create-property-descriptor");r({target:"Reflect",stat:!0,forced:i(function(){var e=f.f({},"a",{configurable:!0});return!1!==Reflect.set(p(e),"a",1,e)})},{set:function e(t,n,r){var i,o,a=arguments.length<4?t:arguments[3],s=d.f(l(t),n);if(!s){if(c(o=p(t)))return e(o,n,r,a);s=h(0)}if(u(s,"value")){if(!1===s.writable||!c(a))return!1;if(i=d.f(a,n)){if(i.get||i.set||!1===i.writable)return!1;i.value=r,f.f(a,n,i)}else f.f(a,n,h(0,r));return!0}return void 0!==s.set&&(s.set.call(a,r),!0)}})},{"../internals/an-object":7,"../internals/create-property-descriptor":36,"../internals/export":49,"../internals/fails":50,"../internals/has":60,"../internals/is-object":75,"../internals/object-define-property":98,"../internals/object-get-own-property-descriptor":99,"../internals/object-get-prototype-of":103}],276:[function(e,t,n){var r=e("../internals/descriptors"),i=e("../internals/global"),o=e("../internals/is-forced"),s=e("../internals/inherit-if-required"),a=e("../internals/object-define-property").f,l=e("../internals/object-get-own-property-names").f,c=e("../internals/is-regexp"),u=e("../internals/regexp-flags"),f=e("../internals/regexp-sticky-helpers"),d=e("../internals/redefine"),p=e("../internals/fails"),h=e("../internals/internal-state").set,m=e("../internals/set-species"),g=e("../internals/well-known-symbol")("match"),y=i.RegExp,b=y.prototype,v=/a/g,x=/a/g,w=new y(v)!==v,j=f.UNSUPPORTED_Y;if(r&&o("RegExp",!w||j||p(function(){return x[g]=!1,y(v)!=v||y(x)==x||"/a/i"!=y(v,"i")}))){function C(t){t in E||a(E,t,{configurable:!0,get:function(){return y[t]},set:function(e){y[t]=e}})}for(var E=function(e,t){var n,r=this instanceof E,i=c(e),o=void 0===t;if(!r&&i&&e.constructor===E&&o)return e;w?i&&!o&&(e=e.source):e instanceof E&&(o&&(t=u.call(e)),e=e.source),j&&(n=!!t&&-1<t.indexOf("y"))&&(t=t.replace(/y/g,""));var a=s(w?new y(e,t):y(e,t),r?this:b,E);return j&&n&&h(a,{sticky:n}),a},S=l(y),O=0;S.length>O;)C(S[O++]);(b.constructor=E).prototype=b,d(i,"RegExp",E)}m("RegExp")},{"../internals/descriptors":42,"../internals/fails":50,"../internals/global":59,"../internals/inherit-if-required":67,"../internals/internal-state":70,"../internals/is-forced":73,"../internals/is-regexp":77,"../internals/object-define-property":98,"../internals/object-get-own-property-names":101,"../internals/redefine":116,"../internals/regexp-flags":119,"../internals/regexp-sticky-helpers":120,"../internals/set-species":124,"../internals/well-known-symbol":156}],277:[function(e,t,n){"use strict";var r=e("../internals/export"),i=e("../internals/regexp-exec");r({target:"RegExp",proto:!0,forced:/./.exec!==i},{exec:i})},{"../internals/export":49,"../internals/regexp-exec":118}],278:[function(e,t,n){var r=e("../internals/descriptors"),i=e("../internals/object-define-property"),o=e("../internals/regexp-flags"),a=e("../internals/regexp-sticky-helpers").UNSUPPORTED_Y;r&&("g"!=/./g.flags||a)&&i.f(RegExp.prototype,"flags",{configurable:!0,get:o})},{"../internals/descriptors":42,"../internals/object-define-property":98,"../internals/regexp-flags":119,"../internals/regexp-sticky-helpers":120}],279:[function(e,t,n){var r=e("../internals/descriptors"),i=e("../internals/regexp-sticky-helpers").UNSUPPORTED_Y,o=e("../internals/object-define-property").f,a=e("../internals/internal-state").get,s=RegExp.prototype;r&&i&&o(RegExp.prototype,"sticky",{configurable:!0,get:function(){if(this!==s){if(this instanceof RegExp)return!!a(this).sticky;throw TypeError("Incompatible receiver, RegExp required")}}})},{"../internals/descriptors":42,"../internals/internal-state":70,"../internals/object-define-property":98,"../internals/regexp-sticky-helpers":120}],280:[function(e,t,n){"use strict";e("../modules/es.regexp.exec");var r,i,o=e("../internals/export"),a=e("../internals/is-object"),s=(r=!1,(i=/[ac]/).exec=function(){return r=!0,/./.exec.apply(this,arguments)},!0===i.test("abc")&&r),l=/./.test;o({target:"RegExp",proto:!0,forced:!s},{test:function(e){if("function"!=typeof this.exec)return l.call(this,e);var t=this.exec(e);if(null!==t&&!a(t))throw new Error("RegExp exec method returned something other than an Object or null");return!!t}})},{"../internals/export":49,"../internals/is-object":75,"../modules/es.regexp.exec":277}],281:[function(e,t,n){"use strict";var r=e("../internals/redefine"),i=e("../internals/an-object"),o=e("../internals/fails"),a=e("../internals/regexp-flags"),s="toString",l=RegExp.prototype,c=l[s],u=o(function(){return"/a/b"!=c.call({source:"a",flags:"b"})}),f=c.name!=s;(u||f)&&r(RegExp.prototype,s,function(){var e=i(this),t=String(e.source),n=e.flags;return"/"+t+"/"+String(void 0===n&&e instanceof RegExp&&!("flags"in l)?a.call(e):n)},{unsafe:!0})},{"../internals/an-object":7,"../internals/fails":50,"../internals/redefine":116,"../internals/regexp-flags":119}],282:[function(e,t,n){"use strict";var r=e("../internals/collection"),i=e("../internals/collection-strong");t.exports=r("Set",function(t){return function(e){return t(this,arguments.length?e:void 0)}},i)},{"../internals/collection":29,"../internals/collection-strong":27}],283:[function(e,t,n){"use strict";var r=e("../internals/export"),i=e("../internals/create-html");r({target:"String",proto:!0,forced:e("../internals/string-html-forced")("anchor")},{anchor:function(e){return i(this,"a","name",e)}})},{"../internals/create-html":33,"../internals/export":49,"../internals/string-html-forced":130}],284:[function(e,t,n){"use strict";var r=e("../internals/export"),i=e("../internals/create-html");r({target:"String",proto:!0,forced:e("../internals/string-html-forced")("big")},{big:function(){return i(this,"big","","")}})},{"../internals/create-html":33,"../internals/export":49,"../internals/string-html-forced":130}],285:[function(e,t,n){"use strict";var r=e("../internals/export"),i=e("../internals/create-html");r({target:"String",proto:!0,forced:e("../internals/string-html-forced")("blink")},{blink:function(){return i(this,"blink","","")}})},{"../internals/create-html":33,"../internals/export":49,"../internals/string-html-forced":130}],286:[function(e,t,n){"use strict";var r=e("../internals/export"),i=e("../internals/create-html");r({target:"String",proto:!0,forced:e("../internals/string-html-forced")("bold")},{bold:function(){return i(this,"b","","")}})},{"../internals/create-html":33,"../internals/export":49,"../internals/string-html-forced":130}],287:[function(e,t,n){"use strict";var r=e("../internals/export"),i=e("../internals/string-multibyte").codeAt;r({target:"String",proto:!0},{codePointAt:function(e){return i(this,e)}})},{"../internals/export":49,"../internals/string-multibyte":131}],288:[function(e,t,n){"use strict";var r,i=e("../internals/export"),o=e("../internals/object-get-own-property-descriptor").f,s=e("../internals/to-length"),l=e("../internals/not-a-regexp"),c=e("../internals/require-object-coercible"),a=e("../internals/correct-is-regexp-logic"),u=e("../internals/is-pure"),f="".endsWith,d=Math.min,p=a("endsWith");i({target:"String",proto:!0,forced:!!(u||p||(!(r=o(String.prototype,"endsWith"))||r.writable))&&!p},{endsWith:function(e,t){var n=String(c(this));l(e);var r=1<arguments.length?t:void 0,i=s(n.length),o=void 0===r?i:d(s(r),i),a=String(e);return f?f.call(n,a,o):n.slice(o-a.length,o)===a}})},{"../internals/correct-is-regexp-logic":31,"../internals/export":49,"../internals/is-pure":76,"../internals/not-a-regexp":91,"../internals/object-get-own-property-descriptor":99,"../internals/require-object-coercible":121,"../internals/to-length":144}],289:[function(e,t,n){"use strict";var r=e("../internals/export"),i=e("../internals/create-html");r({target:"String",proto:!0,forced:e("../internals/string-html-forced")("fixed")},{fixed:function(){return i(this,"tt","","")}})},{"../internals/create-html":33,"../internals/export":49,"../internals/string-html-forced":130}],290:[function(e,t,n){"use strict";var r=e("../internals/export"),i=e("../internals/create-html");r({target:"String",proto:!0,forced:e("../internals/string-html-forced")("fontcolor")},{fontcolor:function(e){return i(this,"font","color",e)}})},{"../internals/create-html":33,"../internals/export":49,"../internals/string-html-forced":130}],291:[function(e,t,n){"use strict";var r=e("../internals/export"),i=e("../internals/create-html");r({target:"String",proto:!0,forced:e("../internals/string-html-forced")("fontsize")},{fontsize:function(e){return i(this,"font","size",e)}})},{"../internals/create-html":33,"../internals/export":49,"../internals/string-html-forced":130}],292:[function(e,t,n){var r=e("../internals/export"),o=e("../internals/to-absolute-index"),a=String.fromCharCode,i=String.fromCodePoint;r({target:"String",stat:!0,forced:!!i&&1!=i.length},{fromCodePoint:function(e){for(var t,n=[],r=arguments.length,i=0;i<r;){if(t=+arguments[i++],o(t,1114111)!==t)throw RangeError(t+" is not a valid code point");n.push(t<65536?a(t):a(55296+((t-=65536)>>10),t%1024+56320))}return n.join("")}})},{"../internals/export":49,"../internals/to-absolute-index":140}],293:[function(e,t,n){"use strict";var r=e("../internals/export"),i=e("../internals/not-a-regexp"),o=e("../internals/require-object-coercible");r({target:"String",proto:!0,forced:!e("../internals/correct-is-regexp-logic")("includes")},{includes:function(e,t){return!!~String(o(this)).indexOf(i(e),1<arguments.length?t:void 0)}})},{"../internals/correct-is-regexp-logic":31,"../internals/export":49,"../internals/not-a-regexp":91,"../internals/require-object-coercible":121}],294:[function(e,t,n){"use strict";var r=e("../internals/export"),i=e("../internals/create-html");r({target:"String",proto:!0,forced:e("../internals/string-html-forced")("italics")},{italics:function(){return i(this,"i","","")}})},{"../internals/create-html":33,"../internals/export":49,"../internals/string-html-forced":130}],295:[function(e,t,n){"use strict";var i=e("../internals/string-multibyte").charAt,r=e("../internals/internal-state"),o=e("../internals/define-iterator"),a="String Iterator",s=r.set,l=r.getterFor(a);o(String,"String",function(e){s(this,{type:a,string:String(e),index:0})},function(){var e,t=l(this),n=t.string,r=t.index;return r>=n.length?{value:void 0,done:!0}:(e=i(n,r),t.index+=e.length,{value:e,done:!1})})},{"../internals/define-iterator":40,"../internals/internal-state":70,"../internals/string-multibyte":131}],296:[function(e,t,n){"use strict";var r=e("../internals/export"),i=e("../internals/create-html");r({target:"String",proto:!0,forced:e("../internals/string-html-forced")("link")},{link:function(e){return i(this,"a","href",e)}})},{"../internals/create-html":33,"../internals/export":49,"../internals/string-html-forced":130}],297:[function(e,t,n){"use strict";function o(e){var t,n,r,i,o,a,s=u(this),l=String(e);return t=g(s,RegExp),void 0===(n=s.flags)&&s instanceof RegExp&&!("flags"in S)&&(n=d.call(s)),r=void 0===n?"":String(n),i=new t(t===RegExp?s.source:s,r),o=!!~r.indexOf("g"),a=!!~r.indexOf("u"),i.lastIndex=c(s.lastIndex),new I(i,l,o,a)}var r=e("../internals/export"),i=e("../internals/create-iterator-constructor"),a=e("../internals/require-object-coercible"),c=e("../internals/to-length"),s=e("../internals/a-function"),u=e("../internals/an-object"),l=e("../internals/classof-raw"),f=e("../internals/is-regexp"),d=e("../internals/regexp-flags"),p=e("../internals/create-non-enumerable-property"),h=e("../internals/fails"),m=e("../internals/well-known-symbol"),g=e("../internals/species-constructor"),y=e("../internals/advance-string-index"),b=e("../internals/internal-state"),v=e("../internals/is-pure"),x=m("matchAll"),w="RegExp String",j=w+" Iterator",C=b.set,E=b.getterFor(j),S=RegExp.prototype,O=S.exec,k="".matchAll,A=!!k&&!h(function(){"a".matchAll(/./)}),I=i(function(e,t,n,r){C(this,{type:j,regexp:e,string:t,global:n,unicode:r,done:!1})},w,function(){var e=E(this);if(e.done)return{value:void 0,done:!0};var t=e.regexp,n=e.string,r=function(e,t){var n,r=e.exec;if("function"!=typeof r)return O.call(e,t);if("object"!=typeof(n=r.call(e,t)))throw TypeError("Incorrect exec result");return n}(t,n);return null===r?{value:void 0,done:e.done=!0}:e.global?(""==String(r[0])&&(t.lastIndex=y(n,c(t.lastIndex),e.unicode)),{value:r,done:!1}):{value:r,done:!(e.done=!0)}});r({target:"String",proto:!0,forced:A},{matchAll:function(e){var t,n,r,i=a(this);if(null!=e){if(f(e)&&!~String(a("flags"in S?e.flags:d.call(e))).indexOf("g"))throw TypeError("`.matchAll` does not allow non-global regexes");if(A)return k.apply(i,arguments);if(void 0===(n=e[x])&&v&&"RegExp"==l(e)&&(n=o),null!=n)return s(n).call(e,i)}else if(A)return k.apply(i,arguments);return t=String(i),r=new RegExp(e,"g"),v?o.call(r,t):r[x](t)}}),v||x in S||p(S,x,o)},{"../internals/a-function":2,"../internals/advance-string-index":5,"../internals/an-object":7,"../internals/classof-raw":25,"../internals/create-iterator-constructor":34,"../internals/create-non-enumerable-property":35,"../internals/export":49,"../internals/fails":50,"../internals/internal-state":70,"../internals/is-pure":76,"../internals/is-regexp":77,"../internals/regexp-flags":119,"../internals/require-object-coercible":121,"../internals/species-constructor":129,"../internals/to-length":144,"../internals/well-known-symbol":156}],298:[function(e,t,n){"use strict";var r=e("../internals/fix-regexp-well-known-symbol-logic"),f=e("../internals/an-object"),d=e("../internals/to-length"),i=e("../internals/require-object-coercible"),p=e("../internals/advance-string-index"),h=e("../internals/regexp-exec-abstract");r("match",1,function(r,c,u){return[function(e){var t=i(this),n=null==e?void 0:e[r];return void 0!==n?n.call(e,t):new RegExp(e)[r](String(t))},function(e){var t=u(c,e,this);if(t.done)return t.value;var n=f(e),r=String(this);if(!n.global)return h(n,r);for(var i,o=n.unicode,a=[],s=n.lastIndex=0;null!==(i=h(n,r));){var l=String(i[0]);""===(a[s]=l)&&(n.lastIndex=p(r,d(n.lastIndex),o)),s++}return 0===s?null:a}]})},{"../internals/advance-string-index":5,"../internals/an-object":7,"../internals/fix-regexp-well-known-symbol-logic":51,"../internals/regexp-exec-abstract":117,"../internals/require-object-coercible":121,"../internals/to-length":144}],299:[function(e,t,n){"use strict";var r=e("../internals/export"),i=e("../internals/string-pad").end;r({target:"String",proto:!0,forced:e("../internals/string-pad-webkit-bug")},{padEnd:function(e,t){return i(this,e,1<arguments.length?t:void 0)}})},{"../internals/export":49,"../internals/string-pad":133,"../internals/string-pad-webkit-bug":132}],300:[function(e,t,n){"use strict";var r=e("../internals/export"),i=e("../internals/string-pad").start;r({target:"String",proto:!0,forced:e("../internals/string-pad-webkit-bug")},{padStart:function(e,t){return i(this,e,1<arguments.length?t:void 0)}})},{"../internals/export":49,"../internals/string-pad":133,"../internals/string-pad-webkit-bug":132}],301:[function(e,t,n){var r=e("../internals/export"),a=e("../internals/to-indexed-object"),s=e("../internals/to-length");r({target:"String",stat:!0},{raw:function(e){for(var t=a(e.raw),n=s(t.length),r=arguments.length,i=[],o=0;o<n;)i.push(String(t[o++])),o<r&&i.push(String(arguments[o]));return i.join("")}})},{"../internals/export":49,"../internals/to-indexed-object":142,"../internals/to-length":144}],302:[function(e,t,n){e("../internals/export")({target:"String",proto:!0},{repeat:e("../internals/string-repeat")})},{"../internals/export":49,"../internals/string-repeat":135}],303:[function(e,t,n){"use strict";var r=e("../internals/fix-regexp-well-known-symbol-logic"),k=e("../internals/an-object"),d=e("../internals/to-object"),A=e("../internals/to-length"),I=e("../internals/to-integer"),o=e("../internals/require-object-coercible"),N=e("../internals/advance-string-index"),T=e("../internals/regexp-exec-abstract"),L=Math.max,R=Math.min,p=Math.floor,h=/\$([$&'`]|\d\d?|<[^>]*>)/g,m=/\$([$&'`]|\d\d?)/g;r("replace",2,function(i,w,j,e){var C=e.REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE,E=e.REPLACE_KEEPS_$0,S=C?"$":"$0";return[function(e,t){var n=o(this),r=null==e?void 0:e[i];return void 0!==r?r.call(e,n,t):w.call(String(n),e,t)},function(e,t){if(!C&&E||"string"==typeof t&&-1===t.indexOf(S)){var n=j(w,e,this,t);if(n.done)return n.value}var r=k(e),i=String(this),o="function"==typeof t;o||(t=String(t));var a=r.global;if(a){var s=r.unicode;r.lastIndex=0}for(var l=[];;){var c=T(r,i);if(null===c)break;if(l.push(c),!a)break;""===String(c[0])&&(r.lastIndex=N(i,A(r.lastIndex),s))}for(var u,f="",d=0,p=0;p<l.length;p++){c=l[p];for(var h=String(c[0]),m=L(R(I(c.index),i.length),0),g=[],y=1;y<c.length;y++)g.push(void 0===(u=c[y])?u:String(u));var b=c.groups;if(o){var v=[h].concat(g,m,i);void 0!==b&&v.push(b);var x=String(t.apply(void 0,v))}else x=O(h,i,m,g,b,t);d<=m&&(f+=i.slice(d,m)+x,d=m+h.length)}return f+i.slice(d)}];function O(o,a,s,l,c,e){var u=s+o.length,f=l.length,t=m;return void 0!==c&&(c=d(c),t=h),w.call(e,t,function(e,t){var n;switch(t.charAt(0)){case"$":return"$";case"&":return o;case"`":return a.slice(0,s);case"'":return a.slice(u);case"<":n=c[t.slice(1,-1)];break;default:var r=+t;if(0==r)return e;if(f<r){var i=p(r/10);return 0===i?e:i<=f?void 0===l[i-1]?t.charAt(1):l[i-1]+t.charAt(1):e}n=l[r-1]}return void 0===n?"":n})}})},{"../internals/advance-string-index":5,"../internals/an-object":7,"../internals/fix-regexp-well-known-symbol-logic":51,"../internals/regexp-exec-abstract":117,"../internals/require-object-coercible":121,"../internals/to-integer":143,"../internals/to-length":144,"../internals/to-object":145}],304:[function(e,t,n){"use strict";var r=e("../internals/fix-regexp-well-known-symbol-logic"),l=e("../internals/an-object"),i=e("../internals/require-object-coercible"),c=e("../internals/same-value"),u=e("../internals/regexp-exec-abstract");r("search",1,function(r,a,s){return[function(e){var t=i(this),n=null==e?void 0:e[r];return void 0!==n?n.call(e,t):new RegExp(e)[r](String(t))},function(e){var t=s(a,e,this);if(t.done)return t.value;var n=l(e),r=String(this),i=n.lastIndex;c(i,0)||(n.lastIndex=0);var o=u(n,r);return c(n.lastIndex,i)||(n.lastIndex=i),null===o?-1:o.index}]})},{"../internals/an-object":7,"../internals/fix-regexp-well-known-symbol-logic":51,"../internals/regexp-exec-abstract":117,"../internals/require-object-coercible":121,"../internals/same-value":122}],305:[function(e,t,n){"use strict";var r=e("../internals/export"),i=e("../internals/create-html");r({target:"String",proto:!0,forced:e("../internals/string-html-forced")("small")},{small:function(){return i(this,"small","","")}})},{"../internals/create-html":33,"../internals/export":49,"../internals/string-html-forced":130}],306:[function(e,t,n){"use strict";var r=e("../internals/fix-regexp-well-known-symbol-logic"),f=e("../internals/is-regexp"),v=e("../internals/an-object"),d=e("../internals/require-object-coercible"),x=e("../internals/species-constructor"),w=e("../internals/advance-string-index"),j=e("../internals/to-length"),C=e("../internals/regexp-exec-abstract"),p=e("../internals/regexp-exec"),i=e("../internals/fails"),h=[].push,E=Math.min,S=4294967295,O=!i(function(){return!RegExp(S,"y")});r("split",2,function(i,g,y){var b;return b="c"=="abbc".split(/(b)*/)[1]||4!="test".split(/(?:)/,-1).length||2!="ab".split(/(?:ab)*/).length||4!=".".split(/(.?)(.?)/).length||1<".".split(/()()/).length||"".split(/.?/).length?function(e,t){var n=String(d(this)),r=void 0===t?S:t>>>0;if(0==r)return[];if(void 0===e)return[n];if(!f(e))return g.call(n,e,r);for(var i,o,a,s=[],l=(e.ignoreCase?"i":"")+(e.multiline?"m":"")+(e.unicode?"u":"")+(e.sticky?"y":""),c=0,u=new RegExp(e.source,l+"g");(i=p.call(u,n))&&!(c<(o=u.lastIndex)&&(s.push(n.slice(c,i.index)),1<i.length&&i.index<n.length&&h.apply(s,i.slice(1)),a=i[0].length,c=o,s.length>=r));)u.lastIndex===i.index&&u.lastIndex++;return c===n.length?!a&&u.test("")||s.push(""):s.push(n.slice(c)),s.length>r?s.slice(0,r):s}:"0".split(void 0,0).length?function(e,t){return void 0===e&&0===t?[]:g.call(this,e,t)}:g,[function(e,t){var n=d(this),r=null==e?void 0:e[i];return void 0!==r?r.call(e,n,t):b.call(String(n),e,t)},function(e,t){var n=y(b,e,this,t,b!==g);if(n.done)return n.value;var r=v(e),i=String(this),o=x(r,RegExp),a=r.unicode,s=(r.ignoreCase?"i":"")+(r.multiline?"m":"")+(r.unicode?"u":"")+(O?"y":"g"),l=new o(O?r:"^(?:"+r.source+")",s),c=void 0===t?S:t>>>0;if(0==c)return[];if(0===i.length)return null===C(l,i)?[i]:[];for(var u=0,f=0,d=[];f<i.length;){l.lastIndex=O?f:0;var p,h=C(l,O?i:i.slice(f));if(null===h||(p=E(j(l.lastIndex+(O?0:f)),i.length))===u)f=w(i,f,a);else{if(d.push(i.slice(u,f)),d.length===c)return d;for(var m=1;m<=h.length-1;m++)if(d.push(h[m]),d.length===c)return d;f=u=p}}return d.push(i.slice(u)),d}]},!O)},{"../internals/advance-string-index":5,"../internals/an-object":7,"../internals/fails":50,"../internals/fix-regexp-well-known-symbol-logic":51,"../internals/is-regexp":77,"../internals/regexp-exec":118,"../internals/regexp-exec-abstract":117,"../internals/require-object-coercible":121,"../internals/species-constructor":129,"../internals/to-length":144}],307:[function(e,t,n){"use strict";var r,i=e("../internals/export"),o=e("../internals/object-get-own-property-descriptor").f,a=e("../internals/to-length"),s=e("../internals/not-a-regexp"),l=e("../internals/require-object-coercible"),c=e("../internals/correct-is-regexp-logic"),u=e("../internals/is-pure"),f="".startsWith,d=Math.min,p=c("startsWith");i({target:"String",proto:!0,forced:!!(u||p||(!(r=o(String.prototype,"startsWith"))||r.writable))&&!p},{startsWith:function(e,t){var n=String(l(this));s(e);var r=a(d(1<arguments.length?t:void 0,n.length)),i=String(e);return f?f.call(n,i,r):n.slice(r,r+i.length)===i}})},{"../internals/correct-is-regexp-logic":31,"../internals/export":49,"../internals/is-pure":76,"../internals/not-a-regexp":91,"../internals/object-get-own-property-descriptor":99,"../internals/require-object-coercible":121,"../internals/to-length":144}],308:[function(e,t,n){"use strict";var r=e("../internals/export"),i=e("../internals/create-html");r({target:"String",proto:!0,forced:e("../internals/string-html-forced")("strike")},{strike:function(){return i(this,"strike","","")}})},{"../internals/create-html":33,"../internals/export":49,"../internals/string-html-forced":130}],309:[function(e,t,n){"use strict";var r=e("../internals/export"),i=e("../internals/create-html");r({target:"String",proto:!0,forced:e("../internals/string-html-forced")("sub")},{sub:function(){return i(this,"sub","","")}})},{"../internals/create-html":33,"../internals/export":49,"../internals/string-html-forced":130}],310:[function(e,t,n){"use strict";var r=e("../internals/export"),i=e("../internals/create-html");r({target:"String",proto:!0,forced:e("../internals/string-html-forced")("sup")},{sup:function(){return i(this,"sup","","")}})},{"../internals/create-html":33,"../internals/export":49,"../internals/string-html-forced":130}],311:[function(e,t,n){"use strict";var r=e("../internals/export"),i=e("../internals/string-trim").end,o=e("../internals/string-trim-forced")("trimEnd"),a=o?function(){return i(this)}:"".trimEnd;r({target:"String",proto:!0,forced:o},{trimEnd:a,trimRight:a})},{"../internals/export":49,"../internals/string-trim":137,"../internals/string-trim-forced":136}],312:[function(e,t,n){"use strict";var r=e("../internals/export"),i=e("../internals/string-trim").start,o=e("../internals/string-trim-forced")("trimStart"),a=o?function(){return i(this)}:"".trimStart;r({target:"String",proto:!0,forced:o},{trimStart:a,trimLeft:a})},{"../internals/export":49,"../internals/string-trim":137,"../internals/string-trim-forced":136}],313:[function(e,t,n){"use strict";var r=e("../internals/export"),i=e("../internals/string-trim").trim;r({target:"String",proto:!0,forced:e("../internals/string-trim-forced")("trim")},{trim:function(){return i(this)}})},{"../internals/export":49,"../internals/string-trim":137,"../internals/string-trim-forced":136}],314:[function(e,t,n){e("../internals/define-well-known-symbol")("asyncIterator")},{"../internals/define-well-known-symbol":41}],315:[function(e,t,n){"use strict";var r=e("../internals/export"),i=e("../internals/descriptors"),o=e("../internals/global"),a=e("../internals/has"),s=e("../internals/is-object"),l=e("../internals/object-define-property").f,c=e("../internals/copy-constructor-properties"),u=o.Symbol;if(i&&"function"==typeof u&&(!("description"in u.prototype)||void 0!==u().description)){var f={},d=function(e){var t=arguments.length<1||void 0===e?void 0:String(e),n=this instanceof d?new u(t):void 0===t?u():u(t);return""===t&&(f[n]=!0),n};c(d,u);var p=d.prototype=u.prototype;p.constructor=d;var h=p.toString,m="Symbol(test)"==String(u("test")),g=/^Symbol\((.*)\)[^)]+$/;l(p,"description",{configurable:!0,get:function(){var e=s(this)?this.valueOf():this,t=h.call(e);if(a(f,e))return"";var n=m?t.slice(7,-1):t.replace(g,"$1");return""===n?void 0:n}}),r({global:!0,forced:!0},{Symbol:d})}},{"../internals/copy-constructor-properties":30,"../internals/descriptors":42,"../internals/export":49,"../internals/global":59,"../internals/has":60,"../internals/is-object":75,"../internals/object-define-property":98}],316:[function(e,t,n){e("../internals/define-well-known-symbol")("hasInstance")},{"../internals/define-well-known-symbol":41}],317:[function(e,t,n){e("../internals/define-well-known-symbol")("isConcatSpreadable")},{"../internals/define-well-known-symbol":41}],318:[function(e,t,n){e("../internals/define-well-known-symbol")("iterator")},{"../internals/define-well-known-symbol":41}],319:[function(e,t,n){"use strict";function i(e,t){var n=ne[e]=C(Z[B]);return G(n,{type:W,tag:e,description:t}),f||(n.description=t),n}function r(t,e){b(t);var n=x(e),r=E(n).concat(pe(n));return X(r,function(e){f&&!de.call(n,e)||fe(t,e,n[e])}),t}function o(e,t){var n=x(e),r=w(t,!0);if(n!==$||!m(ne,r)||m(re,r)){var i=K(n,r);return!i||!m(ne,r)||m(n,z)&&n[z][r]||(i.enumerable=!0),i}}function a(e){var t=ee(x(e)),n=[];return X(t,function(e){m(ne,e)||m(M,e)||n.push(e)}),n}var s=e("../internals/export"),l=e("../internals/global"),c=e("../internals/get-built-in"),u=e("../internals/is-pure"),f=e("../internals/descriptors"),d=e("../internals/native-symbol"),p=e("../internals/use-symbol-as-uid"),h=e("../internals/fails"),m=e("../internals/has"),g=e("../internals/is-array"),y=e("../internals/is-object"),b=e("../internals/an-object"),v=e("../internals/to-object"),x=e("../internals/to-indexed-object"),w=e("../internals/to-primitive"),j=e("../internals/create-property-descriptor"),C=e("../internals/object-create"),E=e("../internals/object-keys"),S=e("../internals/object-get-own-property-names"),O=e("../internals/object-get-own-property-names-external"),k=e("../internals/object-get-own-property-symbols"),A=e("../internals/object-get-own-property-descriptor"),I=e("../internals/object-define-property"),N=e("../internals/object-property-is-enumerable"),T=e("../internals/create-non-enumerable-property"),L=e("../internals/redefine"),R=e("../internals/shared"),P=e("../internals/shared-key"),M=e("../internals/hidden-keys"),D=e("../internals/uid"),_=e("../internals/well-known-symbol"),F=e("../internals/well-known-symbol-wrapped"),Y=e("../internals/define-well-known-symbol"),U=e("../internals/set-to-string-tag"),q=e("../internals/internal-state"),X=e("../internals/array-iteration").forEach,z=P("hidden"),W="Symbol",B="prototype",H=_("toPrimitive"),G=q.set,V=q.getterFor(W),$=Object[B],Z=l.Symbol,J=c("JSON","stringify"),K=A.f,Q=I.f,ee=O.f,te=N.f,ne=R("symbols"),re=R("op-symbols"),ie=R("string-to-symbol-registry"),oe=R("symbol-to-string-registry"),ae=R("wks"),se=l.QObject,le=!se||!se[B]||!se[B].findChild,ce=f&&h(function(){return 7!=C(Q({},"a",{get:function(){return Q(this,"a",{value:7}).a}})).a})?function(e,t,n){var r=K($,t);r&&delete $[t],Q(e,t,n),r&&e!==$&&Q($,t,r)}:Q,ue=p?function(e){return"symbol"==typeof e}:function(e){return Object(e)instanceof Z},fe=function(e,t,n){e===$&&fe(re,t,n),b(e);var r=w(t,!0);return b(n),m(ne,r)?(n.enumerable?(m(e,z)&&e[z][r]&&(e[z][r]=!1),n=C(n,{enumerable:j(0,!1)})):(m(e,z)||Q(e,z,j(1,{})),e[z][r]=!0),ce(e,r,n)):Q(e,r,n)},de=function(e){var t=w(e,!0),n=te.call(this,t);return!(this===$&&m(ne,t)&&!m(re,t))&&(!(n||!m(this,t)||!m(ne,t)||m(this,z)&&this[z][t])||n)},pe=function(e){var t=e===$,n=ee(t?re:x(e)),r=[];return X(n,function(e){!m(ne,e)||t&&!m($,e)||r.push(ne[e])}),r};d||(L((Z=function(e){if(this instanceof Z)throw TypeError("Symbol is not a constructor");var t=arguments.length&&void 0!==e?String(e):void 0,n=D(t),r=function(e){this===$&&r.call(re,e),m(this,z)&&m(this[z],n)&&(this[z][n]=!1),ce(this,n,j(1,e))};return f&&le&&ce($,n,{configurable:!0,set:r}),i(n,t)})[B],"toString",function(){return V(this).tag}),L(Z,"withoutSetter",function(e){return i(D(e),e)}),N.f=de,I.f=fe,A.f=o,S.f=O.f=a,k.f=pe,F.f=function(e){return i(_(e),e)},f&&(Q(Z[B],"description",{configurable:!0,get:function(){return V(this).description}}),u||L($,"propertyIsEnumerable",de,{unsafe:!0}))),s({global:!0,wrap:!0,forced:!d,sham:!d},{Symbol:Z}),X(E(ae),function(e){Y(e)}),s({target:W,stat:!0,forced:!d},{for:function(e){var t=String(e);if(m(ie,t))return ie[t];var n=Z(t);return ie[t]=n,oe[n]=t,n},keyFor:function(e){if(!ue(e))throw TypeError(e+" is not a symbol");if(m(oe,e))return oe[e]},useSetter:function(){le=!0},useSimple:function(){le=!1}}),s({target:"Object",stat:!0,forced:!d,sham:!f},{create:function(e,t){return void 0===t?C(e):r(C(e),t)},defineProperty:fe,defineProperties:r,getOwnPropertyDescriptor:o}),s({target:"Object",stat:!0,forced:!d},{getOwnPropertyNames:a,getOwnPropertySymbols:pe}),s({target:"Object",stat:!0,forced:h(function(){k.f(1)})},{getOwnPropertySymbols:function(e){return k.f(v(e))}}),J&&s({target:"JSON",stat:!0,forced:!d||h(function(){var e=Z();return"[null]"!=J([e])||"{}"!=J({a:e})||"{}"!=J(Object(e))})},{stringify:function(e,t,n){for(var r,i=[e],o=1;o<arguments.length;)i.push(arguments[o++]);if((y(r=t)||void 0!==e)&&!ue(e))return g(t)||(t=function(e,t){if("function"==typeof r&&(t=r.call(this,e,t)),!ue(t))return t}),i[1]=t,J.apply(null,i)}});Z[B][H]||T(Z[B],H,Z[B].valueOf),U(Z,W),M[z]=!0},{"../internals/an-object":7,"../internals/array-iteration":16,"../internals/create-non-enumerable-property":35,"../internals/create-property-descriptor":36,"../internals/define-well-known-symbol":41,"../internals/descriptors":42,"../internals/export":49,"../internals/fails":50,"../internals/get-built-in":56,"../internals/global":59,"../internals/has":60,"../internals/hidden-keys":61,"../internals/internal-state":70,"../internals/is-array":72,"../internals/is-object":75,"../internals/is-pure":76,"../internals/native-symbol":87,"../internals/object-create":96,"../internals/object-define-property":98,"../internals/object-get-own-property-descriptor":99,"../internals/object-get-own-property-names":101,"../internals/object-get-own-property-names-external":100,"../internals/object-get-own-property-symbols":102,"../internals/object-keys":105,"../internals/object-property-is-enumerable":106,"../internals/redefine":116,"../internals/set-to-string-tag":125,"../internals/shared":128,"../internals/shared-key":126,"../internals/to-indexed-object":142,"../internals/to-object":145,"../internals/to-primitive":148,"../internals/uid":153,"../internals/use-symbol-as-uid":154,"../internals/well-known-symbol":156,"../internals/well-known-symbol-wrapped":155}],320:[function(e,t,n){e("../internals/define-well-known-symbol")("matchAll")},{"../internals/define-well-known-symbol":41}],321:[function(e,t,n){e("../internals/define-well-known-symbol")("match")},{"../internals/define-well-known-symbol":41}],322:[function(e,t,n){e("../internals/define-well-known-symbol")("replace")},{"../internals/define-well-known-symbol":41}],323:[function(e,t,n){e("../internals/define-well-known-symbol")("search")},{"../internals/define-well-known-symbol":41}],324:[function(e,t,n){e("../internals/define-well-known-symbol")("species")},{"../internals/define-well-known-symbol":41}],325:[function(e,t,n){e("../internals/define-well-known-symbol")("split")},{"../internals/define-well-known-symbol":41}],326:[function(e,t,n){e("../internals/define-well-known-symbol")("toPrimitive")},{"../internals/define-well-known-symbol":41}],327:[function(e,t,n){e("../internals/define-well-known-symbol")("toStringTag")},{"../internals/define-well-known-symbol":41}],328:[function(e,t,n){e("../internals/define-well-known-symbol")("unscopables")},{"../internals/define-well-known-symbol":41}],329:[function(e,t,n){"use strict";var r=e("../internals/array-buffer-view-core"),i=e("../internals/array-copy-within"),o=r.aTypedArray;(0,r.exportTypedArrayMethod)("copyWithin",function(e,t,n){return i.call(o(this),e,t,2<arguments.length?n:void 0)})},{"../internals/array-buffer-view-core":9,"../internals/array-copy-within":11}],330:[function(e,t,n){"use strict";var r=e("../internals/array-buffer-view-core"),i=e("../internals/array-iteration").every,o=r.aTypedArray;(0,r.exportTypedArrayMethod)("every",function(e,t){return i(o(this),e,1<arguments.length?t:void 0)})},{"../internals/array-buffer-view-core":9,"../internals/array-iteration":16}],331:[function(e,t,n){"use strict";var r=e("../internals/array-buffer-view-core"),i=e("../internals/array-fill"),o=r.aTypedArray;(0,r.exportTypedArrayMethod)("fill",function(e){return i.apply(o(this),arguments)})},{"../internals/array-buffer-view-core":9,"../internals/array-fill":12}],332:[function(e,t,n){"use strict";var r=e("../internals/array-buffer-view-core"),s=e("../internals/array-iteration").filter,l=e("../internals/species-constructor"),c=r.aTypedArray,u=r.aTypedArrayConstructor;(0,r.exportTypedArrayMethod)("filter",function(e,t){for(var n=s(c(this),e,1<arguments.length?t:void 0),r=l(this,this.constructor),i=0,o=n.length,a=new(u(r))(o);i<o;)a[i]=n[i++];return a})},{"../internals/array-buffer-view-core":9,"../internals/array-iteration":16,"../internals/species-constructor":129}],333:[function(e,t,n){"use strict";var r=e("../internals/array-buffer-view-core"),i=e("../internals/array-iteration").findIndex,o=r.aTypedArray;(0,r.exportTypedArrayMethod)("findIndex",function(e,t){return i(o(this),e,1<arguments.length?t:void 0)})},{"../internals/array-buffer-view-core":9,"../internals/array-iteration":16}],334:[function(e,t,n){"use strict";var r=e("../internals/array-buffer-view-core"),i=e("../internals/array-iteration").find,o=r.aTypedArray;(0,r.exportTypedArrayMethod)("find",function(e,t){return i(o(this),e,1<arguments.length?t:void 0)})},{"../internals/array-buffer-view-core":9,"../internals/array-iteration":16}],335:[function(e,t,n){e("../internals/typed-array-constructor")("Float32",function(r){return function(e,t,n){return r(this,e,t,n)}})},{"../internals/typed-array-constructor":150}],336:[function(e,t,n){e("../internals/typed-array-constructor")("Float64",function(r){return function(e,t,n){return r(this,e,t,n)}})},{"../internals/typed-array-constructor":150}],337:[function(e,t,n){"use strict";var r=e("../internals/array-buffer-view-core"),i=e("../internals/array-iteration").forEach,o=r.aTypedArray;(0,r.exportTypedArrayMethod)("forEach",function(e,t){i(o(this),e,1<arguments.length?t:void 0)})},{"../internals/array-buffer-view-core":9,"../internals/array-iteration":16}],338:[function(e,t,n){"use strict";var r=e("../internals/typed-array-constructors-require-wrappers");(0,e("../internals/array-buffer-view-core").exportTypedArrayStaticMethod)("from",e("../internals/typed-array-from"),r)},{"../internals/array-buffer-view-core":9,"../internals/typed-array-constructors-require-wrappers":151,"../internals/typed-array-from":152}],339:[function(e,t,n){"use strict";var r=e("../internals/array-buffer-view-core"),i=e("../internals/array-includes").includes,o=r.aTypedArray;(0,r.exportTypedArrayMethod)("includes",function(e,t){return i(o(this),e,1<arguments.length?t:void 0)})},{"../internals/array-buffer-view-core":9,"../internals/array-includes":15}],340:[function(e,t,n){"use strict";var r=e("../internals/array-buffer-view-core"),i=e("../internals/array-includes").indexOf,o=r.aTypedArray;(0,r.exportTypedArrayMethod)("indexOf",function(e,t){return i(o(this),e,1<arguments.length?t:void 0)})},{"../internals/array-buffer-view-core":9,"../internals/array-includes":15}],341:[function(e,t,n){e("../internals/typed-array-constructor")("Int16",function(r){return function(e,t,n){return r(this,e,t,n)}})},{"../internals/typed-array-constructor":150}],342:[function(e,t,n){e("../internals/typed-array-constructor")("Int32",function(r){return function(e,t,n){return r(this,e,t,n)}})},{"../internals/typed-array-constructor":150}],343:[function(e,t,n){e("../internals/typed-array-constructor")("Int8",function(r){return function(e,t,n){return r(this,e,t,n)}})},{"../internals/typed-array-constructor":150}],344:[function(e,t,n){"use strict";function r(){return c.call(d(this))}var i=e("../internals/global"),o=e("../internals/array-buffer-view-core"),a=e("../modules/es.array.iterator"),s=e("../internals/well-known-symbol")("iterator"),l=i.Uint8Array,c=a.values,u=a.keys,f=a.entries,d=o.aTypedArray,p=o.exportTypedArrayMethod,h=l&&l.prototype[s],m=!!h&&("values"==h.name||null==h.name);p("entries",function(){return f.call(d(this))}),p("keys",function(){return u.call(d(this))}),p("values",r,!m),p(s,r,!m)},{"../internals/array-buffer-view-core":9,"../internals/global":59,"../internals/well-known-symbol":156,"../modules/es.array.iterator":175}],345:[function(e,t,n){"use strict";var r=e("../internals/array-buffer-view-core"),i=r.aTypedArray,o=r.exportTypedArrayMethod,a=[].join;o("join",function(e){return a.apply(i(this),arguments)})},{"../internals/array-buffer-view-core":9}],346:[function(e,t,n){"use strict";var r=e("../internals/array-buffer-view-core"),i=e("../internals/array-last-index-of"),o=r.aTypedArray;(0,r.exportTypedArrayMethod)("lastIndexOf",function(e){return i.apply(o(this),arguments)})},{"../internals/array-buffer-view-core":9,"../internals/array-last-index-of":17}],347:[function(e,t,n){"use strict";var r=e("../internals/array-buffer-view-core"),i=e("../internals/array-iteration").map,o=e("../internals/species-constructor"),a=r.aTypedArray,s=r.aTypedArrayConstructor;(0,r.exportTypedArrayMethod)("map",function(e,t){return i(a(this),e,1<arguments.length?t:void 0,function(e,t){return new(s(o(e,e.constructor)))(t)})})},{"../internals/array-buffer-view-core":9,"../internals/array-iteration":16,"../internals/species-constructor":129}],348:[function(e,t,n){"use strict";var r=e("../internals/array-buffer-view-core"),i=e("../internals/typed-array-constructors-require-wrappers"),o=r.aTypedArrayConstructor;(0,r.exportTypedArrayStaticMethod)("of",function(){for(var e=0,t=arguments.length,n=new(o(this))(t);e<t;)n[e]=arguments[e++];return n},i)},{"../internals/array-buffer-view-core":9,"../internals/typed-array-constructors-require-wrappers":151}],349:[function(e,t,n){"use strict";var r=e("../internals/array-buffer-view-core"),i=e("../internals/array-reduce").right,o=r.aTypedArray;(0,r.exportTypedArrayMethod)("reduceRight",function(e,t){return i(o(this),e,arguments.length,1<arguments.length?t:void 0)})},{"../internals/array-buffer-view-core":9,"../internals/array-reduce":21}],350:[function(e,t,n){"use strict";var r=e("../internals/array-buffer-view-core"),i=e("../internals/array-reduce").left,o=r.aTypedArray;(0,r.exportTypedArrayMethod)("reduce",function(e,t){return i(o(this),e,arguments.length,1<arguments.length?t:void 0)})},{"../internals/array-buffer-view-core":9,"../internals/array-reduce":21}],351:[function(e,t,n){"use strict";var r=e("../internals/array-buffer-view-core"),i=r.aTypedArray,o=r.exportTypedArrayMethod,a=Math.floor;o("reverse",function(){for(var e,t=i(this).length,n=a(t/2),r=0;r<n;)e=this[r],this[r++]=this[--t],this[t]=e;return this})},{"../internals/array-buffer-view-core":9}],352:[function(e,t,n){"use strict";var r=e("../internals/array-buffer-view-core"),s=e("../internals/to-length"),l=e("../internals/to-offset"),c=e("../internals/to-object"),i=e("../internals/fails"),u=r.aTypedArray;(0,r.exportTypedArrayMethod)("set",function(e,t){u(this);var n=l(1<arguments.length?t:void 0,1),r=this.length,i=c(e),o=s(i.length),a=0;if(r<o+n)throw RangeError("Wrong length");for(;a<o;)this[n+a]=i[a++]},i(function(){new Int8Array(1).set({})}))},{"../internals/array-buffer-view-core":9,"../internals/fails":50,"../internals/to-length":144,"../internals/to-object":145,"../internals/to-offset":146}],353:[function(e,t,n){"use strict";var r=e("../internals/array-buffer-view-core"),s=e("../internals/species-constructor"),i=e("../internals/fails"),l=r.aTypedArray,c=r.aTypedArrayConstructor,o=r.exportTypedArrayMethod,u=[].slice;o("slice",function(e,t){for(var n=u.call(l(this),e,t),r=s(this,this.constructor),i=0,o=n.length,a=new(c(r))(o);i<o;)a[i]=n[i++];return a},i(function(){new Int8Array(1).slice()}))},{"../internals/array-buffer-view-core":9,"../internals/fails":50,"../internals/species-constructor":129}],354:[function(e,t,n){"use strict";var r=e("../internals/array-buffer-view-core"),i=e("../internals/array-iteration").some,o=r.aTypedArray;(0,r.exportTypedArrayMethod)("some",function(e,t){return i(o(this),e,1<arguments.length?t:void 0)})},{"../internals/array-buffer-view-core":9,"../internals/array-iteration":16}],355:[function(e,t,n){"use strict";var r=e("../internals/array-buffer-view-core"),i=r.aTypedArray,o=r.exportTypedArrayMethod,a=[].sort;o("sort",function(e){return a.call(i(this),e)})},{"../internals/array-buffer-view-core":9}],356:[function(e,t,n){"use strict";var r=e("../internals/array-buffer-view-core"),o=e("../internals/to-length"),a=e("../internals/to-absolute-index"),s=e("../internals/species-constructor"),l=r.aTypedArray;(0,r.exportTypedArrayMethod)("subarray",function(e,t){var n=l(this),r=n.length,i=a(e,r);return new(s(n,n.constructor))(n.buffer,n.byteOffset+i*n.BYTES_PER_ELEMENT,o((void 0===t?r:a(t,r))-i))})},{"../internals/array-buffer-view-core":9,"../internals/species-constructor":129,"../internals/to-absolute-index":140,"../internals/to-length":144}],357:[function(e,t,n){"use strict";var r=e("../internals/global"),i=e("../internals/array-buffer-view-core"),o=e("../internals/fails"),a=r.Int8Array,s=i.aTypedArray,l=i.exportTypedArrayMethod,c=[].toLocaleString,u=[].slice,f=!!a&&o(function(){c.call(new a(1))});l("toLocaleString",function(){return c.apply(f?u.call(s(this)):s(this),arguments)},o(function(){return[1,2].toLocaleString()!=new a([1,2]).toLocaleString()})||!o(function(){a.prototype.toLocaleString.call([1,2])}))},{"../internals/array-buffer-view-core":9,"../internals/fails":50,"../internals/global":59}],358:[function(e,t,n){"use strict";var r=e("../internals/array-buffer-view-core").exportTypedArrayMethod,i=e("../internals/fails"),o=e("../internals/global").Uint8Array,a=o&&o.prototype||{},s=[].toString,l=[].join;i(function(){s.call({})})&&(s=function(){return l.call(this)}),r("toString",s,a.toString!=s)},{"../internals/array-buffer-view-core":9,"../internals/fails":50,"../internals/global":59}],359:[function(e,t,n){e("../internals/typed-array-constructor")("Uint16",function(r){return function(e,t,n){return r(this,e,t,n)}})},{"../internals/typed-array-constructor":150}],360:[function(e,t,n){e("../internals/typed-array-constructor")("Uint32",function(r){return function(e,t,n){return r(this,e,t,n)}})},{"../internals/typed-array-constructor":150}],361:[function(e,t,n){e("../internals/typed-array-constructor")("Uint8",function(r){return function(e,t,n){return r(this,e,t,n)}})},{"../internals/typed-array-constructor":150}],362:[function(e,t,n){e("../internals/typed-array-constructor")("Uint8",function(r){return function(e,t,n){return r(this,e,t,n)}},!0)},{"../internals/typed-array-constructor":150}],363:[function(e,t,n){"use strict";function r(t){return function(e){return t(this,arguments.length?e:void 0)}}var i,o=e("../internals/global"),a=e("../internals/redefine-all"),s=e("../internals/internal-metadata"),l=e("../internals/collection"),c=e("../internals/collection-weak"),u=e("../internals/is-object"),f=e("../internals/internal-state").enforce,d=e("../internals/native-weak-map"),p=!o.ActiveXObject&&"ActiveXObject"in o,h=Object.isExtensible,m=t.exports=l("WeakMap",r,c);if(d&&p){i=c.getConstructor(r,"WeakMap",!0),s.REQUIRED=!0;var g=m.prototype,y=g.delete,b=g.has,v=g.get,x=g.set;a(g,{delete:function(e){if(!u(e)||h(e))return y.call(this,e);var t=f(this);return t.frozen||(t.frozen=new i),y.call(this,e)||t.frozen.delete(e)},has:function(e){if(!u(e)||h(e))return b.call(this,e);var t=f(this);return t.frozen||(t.frozen=new i),b.call(this,e)||t.frozen.has(e)},get:function(e){if(!u(e)||h(e))return v.call(this,e);var t=f(this);return t.frozen||(t.frozen=new i),b.call(this,e)?v.call(this,e):t.frozen.get(e)},set:function(e,t){if(u(e)&&!h(e)){var n=f(this);n.frozen||(n.frozen=new i),b.call(this,e)?x.call(this,e,t):n.frozen.set(e,t)}else x.call(this,e,t);return this}})}},{"../internals/collection":29,"../internals/collection-weak":28,"../internals/global":59,"../internals/internal-metadata":69,"../internals/internal-state":70,"../internals/is-object":75,"../internals/native-weak-map":89,"../internals/redefine-all":115}],364:[function(e,t,n){"use strict";e("../internals/collection")("WeakSet",function(t){return function(e){return t(this,arguments.length?e:void 0)}},e("../internals/collection-weak"))},{"../internals/collection":29,"../internals/collection-weak":28}],365:[function(e,t,n){var r=e("../internals/global"),i=e("../internals/dom-iterables"),o=e("../internals/array-for-each"),a=e("../internals/create-non-enumerable-property");for(var s in i){var l=r[s],c=l&&l.prototype;if(c&&c.forEach!==o)try{a(c,"forEach",o)}catch(e){c.forEach=o}}},{"../internals/array-for-each":13,"../internals/create-non-enumerable-property":35,"../internals/dom-iterables":44,"../internals/global":59}],366:[function(e,t,n){var r=e("../internals/global"),i=e("../internals/dom-iterables"),o=e("../modules/es.array.iterator"),a=e("../internals/create-non-enumerable-property"),s=e("../internals/well-known-symbol"),l=s("iterator"),c=s("toStringTag"),u=o.values;for(var f in i){var d=r[f],p=d&&d.prototype;if(p){if(p[l]!==u)try{a(p,l,u)}catch(e){p[l]=u}if(p[c]||a(p,c,f),i[f])for(var h in o)if(p[h]!==o[h])try{a(p,h,o[h])}catch(e){p[h]=o[h]}}}},{"../internals/create-non-enumerable-property":35,"../internals/dom-iterables":44,"../internals/global":59,"../internals/well-known-symbol":156,"../modules/es.array.iterator":175}],367:[function(e,t,n){var r=e("../internals/export"),i=e("../internals/global"),o=e("../internals/task");r({global:!0,bind:!0,enumerable:!0,forced:!i.setImmediate||!i.clearImmediate},{setImmediate:o.set,clearImmediate:o.clear})},{"../internals/export":49,"../internals/global":59,"../internals/task":138}],368:[function(e,t,n){var r=e("../internals/export"),i=e("../internals/global"),o=e("../internals/microtask"),a=e("../internals/classof-raw"),s=i.process,l="process"==a(s);r({global:!0,enumerable:!0,noTargetGet:!0},{queueMicrotask:function(e){var t=l&&s.domain;o(t?t.bind(e):e)}})},{"../internals/classof-raw":25,"../internals/export":49,"../internals/global":59,"../internals/microtask":85}],369:[function(e,t,n){function r(i){return function(e,t){var n=2<arguments.length,r=n?s.call(arguments,2):void 0;return i(n?function(){("function"==typeof e?e:Function(e)).apply(this,r)}:e,t)}}var i=e("../internals/export"),o=e("../internals/global"),a=e("../internals/engine-user-agent"),s=[].slice;i({global:!0,bind:!0,forced:/MSIE .\./.test(a)},{setTimeout:r(o.setTimeout),setInterval:r(o.setInterval)})},{"../internals/engine-user-agent":46,"../internals/export":49,"../internals/global":59}],370:[function(e,t,n){"use strict";e("../modules/es.array.iterator");function i(t){try{return decodeURIComponent(t)}catch(e){return t}}function a(e){var t,n=e.replace(_," "),r=4;try{return decodeURIComponent(n)}catch(e){for(;r;)n=n.replace((t=r--,F[t-1]||(F[t-1]=RegExp("((?:%[\\da-f]{2}){"+t+"})","gi"))),i);return n}}function r(e){return U[e]}function o(e){return encodeURIComponent(e).replace(Y,r)}function d(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:a(r.shift()),value:a(r.join("="))}))}function p(e){this.entries.length=0,d(this.entries,e)}function c(e,t){if(e<t)throw TypeError("Not enough arguments")}var s=e("../internals/export"),l=e("../internals/get-built-in"),u=e("../internals/native-url"),f=e("../internals/redefine"),h=e("../internals/redefine-all"),m=e("../internals/set-to-string-tag"),g=e("../internals/create-iterator-constructor"),y=e("../internals/internal-state"),b=e("../internals/an-instance"),v=e("../internals/has"),x=e("../internals/function-bind-context"),w=e("../internals/classof"),j=e("../internals/an-object"),C=e("../internals/is-object"),E=e("../internals/object-create"),S=e("../internals/create-property-descriptor"),O=e("../internals/get-iterator"),k=e("../internals/get-iterator-method"),A=e("../internals/well-known-symbol"),I=l("fetch"),N=l("Headers"),T=A("iterator"),L="URLSearchParams",R=L+"Iterator",P=y.set,M=y.getterFor(L),D=y.getterFor(R),_=/\+/g,F=Array(4),Y=/[!'()~]|%20/g,U={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+"},q=g(function(e,t){P(this,{type:R,iterator:O(M(e).entries),kind:t})},"Iterator",function(){var e=D(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}),X=function(e){b(this,X,L);var t,n,r,i,o,a,s,l,c,u=0<arguments.length?e:void 0,f=[];if(P(this,{type:L,entries:f,updateURL:function(){},updateSearchParams:p}),void 0!==u)if(C(u))if("function"==typeof(t=k(u)))for(r=(n=t.call(u)).next;!(i=r.call(n)).done;){if((s=(a=(o=O(j(i.value))).next).call(o)).done||(l=a.call(o)).done||!a.call(o).done)throw TypeError("Expected sequence with length 2");f.push({key:s.value+"",value:l.value+""})}else for(c in u)v(u,c)&&f.push({key:c,value:u[c]+""});else d(f,"string"==typeof u?"?"===u.charAt(0)?u.slice(1):u:u+"")},z=X.prototype;h(z,{append:function(e,t){c(arguments.length,2);var n=M(this);n.entries.push({key:e+"",value:t+""}),n.updateURL()},delete:function(e){c(arguments.length,1);for(var t=M(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){c(arguments.length,1);for(var t=M(this).entries,n=e+"",r=0;r<t.length;r++)if(t[r].key===n)return t[r].value;return null},getAll:function(e){c(arguments.length,1);for(var t=M(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){c(arguments.length,1);for(var t=M(this).entries,n=e+"",r=0;r<t.length;)if(t[r++].key===n)return!0;return!1},set:function(e,t){c(arguments.length,1);for(var n,r=M(this),i=r.entries,o=!1,a=e+"",s=t+"",l=0;l<i.length;l++)(n=i[l]).key===a&&(o?i.splice(l--,1):(o=!0,n.value=s));o||i.push({key:a,value:s}),r.updateURL()},sort:function(){var e,t,n,r=M(this),i=r.entries,o=i.slice();for(n=i.length=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,t){for(var n,r=M(this).entries,i=x(e,1<arguments.length?t:void 0,3),o=0;o<r.length;)i((n=r[o++]).value,n.key,this)},keys:function(){return new q(this,"keys")},values:function(){return new q(this,"values")},entries:function(){return new q(this,"entries")}},{enumerable:!0}),f(z,T,z.entries),f(z,"toString",function(){for(var e,t=M(this).entries,n=[],r=0;r<t.length;)e=t[r++],n.push(o(e.key)+"="+o(e.value));return n.join("&")},{enumerable:!0}),m(X,L),s({global:!0,forced:!u},{URLSearchParams:X}),u||"function"!=typeof I||"function"!=typeof N||s({global:!0,enumerable:!0,forced:!0},{fetch:function(e,t){var n,r,i,o=[e];return 1<arguments.length&&(C(n=t)&&(r=n.body,w(r)===L&&((i=n.headers?new N(n.headers):new N).has("content-type")||i.set("content-type","application/x-www-form-urlencoded;charset=UTF-8"),n=E(n,{body:S(0,String(r)),headers:S(0,i)}))),o.push(n)),I.apply(this,o)}}),t.exports={URLSearchParams:X,getState:M}},{"../internals/an-instance":6,"../internals/an-object":7,"../internals/classof":26,"../internals/create-iterator-constructor":34,"../internals/create-property-descriptor":36,"../internals/export":49,"../internals/function-bind-context":54,"../internals/get-built-in":56,"../internals/get-iterator":58,"../internals/get-iterator-method":57,"../internals/has":60,"../internals/internal-state":70,"../internals/is-object":75,"../internals/native-url":88,"../internals/object-create":96,"../internals/redefine":116,"../internals/redefine-all":115,"../internals/set-to-string-tag":125,"../internals/well-known-symbol":156,"../modules/es.array.iterator":175}],371:[function(e,t,n){"use strict";e("../modules/es.string.iterator");function x(e,t){var n,r,i;if("["==t.charAt(0)){if("]"!=t.charAt(t.length-1))return D;if(!(n=Z(t.slice(1,-1))))return D;e.host=n}else if(re(e)){if(t=g(t),B.test(t))return D;if(null===(n=$(t)))return D;e.host=n}else{if(H.test(t))return D;for(n="",r=k(t),i=0;i<r.length;i++)n+=te(r[i],J);e.host=n}}function u(e){var t,n,r,i;if("number"==typeof e){for(t=[],n=0;n<4;n++)t.unshift(e%256),e=R(e/256);return t.join(".")}if("object"!=typeof e)return e;for(t="",r=function(e){for(var t=null,n=1,r=null,i=0,o=0;o<8;o++)0!==e[o]?(n<i&&(t=r,n=i),r=null,i=0):(null===r&&(r=o),++i);return n<i&&(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+"]"}function w(e){return""!=e.username||""!=e.password}function i(e){return!e.host||e.cannotBeABaseURL||"file"==e.scheme}function j(e,t){var n;return 2==e.length&&F.test(e.charAt(0))&&(":"==(n=e.charAt(1))||!t&&"|"==n)}function C(e){var t;return 1<e.length&&j(e.slice(0,2))&&(2==e.length||"/"===(t=e.charAt(2))||"\\"===t||"?"===t||"#"===t)}function E(e){var t=e.path,n=t.length;!n||"file"==e.scheme&&1==n&&j(t[0],!0)||t.pop()}function f(e,t,n,r){var i,o,a,s,l,c,u=n||ie,f=0,d="",p=!1,h=!1,m=!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(G,"")),t=t.replace(V,""),i=k(t);f<=i.length;){switch(o=i[f],u){case ie:if(!o||!F.test(o)){if(n)return M;u=ae;continue}d+=o.toLowerCase(),u=oe;break;case oe:if(o&&(Y.test(o)||"+"==o||"-"==o||"."==o))d+=o.toLowerCase();else{if(":"!=o){if(n)return M;d="",u=ae,f=0;continue}if(n&&(re(e)!=O(ne,d)||"file"==d&&(w(e)||null!==e.port)||"file"==e.scheme&&!e.host))return;if(e.scheme=d,n)return void(re(e)&&ne[e.scheme]==e.port&&(e.port=null));d="","file"==e.scheme?u=ye:re(e)&&r&&r.scheme==e.scheme?u=se:re(e)?u=fe:"/"==i[f+1]?(u=le,f++):(e.cannotBeABaseURL=!0,e.path.push(""),u=je)}break;case ae:if(!r||r.cannotBeABaseURL&&"#"!=o)return M;if(r.cannotBeABaseURL&&"#"==o){e.scheme=r.scheme,e.path=r.path.slice(),e.query=r.query,e.fragment="",e.cannotBeABaseURL=!0,u=Ee;break}u="file"==r.scheme?ye:ce;continue;case se:if("/"!=o||"/"!=i[f+1]){u=ce;continue}u=de,f++;break;case le:if("/"==o){u=pe;break}u=we;continue;case ce:if(e.scheme=r.scheme,o==S)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&&re(e))u=ue;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=Ce;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=we;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=Ee}break;case ue:if(!re(e)||"/"!=o&&"\\"!=o){if("/"!=o){e.username=r.username,e.password=r.password,e.host=r.host,e.port=r.port,u=we;continue}u=pe}else u=de;break;case fe:if(u=de,"/"!=o||"/"!=d.charAt(f+1))continue;f++;break;case de:if("/"==o||"\\"==o)break;u=pe;continue;case pe:if("@"==o){p&&(d="%40"+d),p=!0,a=k(d);for(var g=0;g<a.length;g++){var y=a[g];if(":"!=y||m){var b=te(y,ee);m?e.password+=b:e.username+=b}else m=!0}d=""}else if(o==S||"/"==o||"?"==o||"#"==o||"\\"==o&&re(e)){if(p&&""==d)return"Invalid authority";f-=k(d).length+1,d="",u=he}else d+=o;break;case he:case me:if(n&&"file"==e.scheme){u=ve;continue}if(":"!=o||h){if(o==S||"/"==o||"?"==o||"#"==o||"\\"==o&&re(e)){if(re(e)&&""==d)return D;if(n&&""==d&&(w(e)||null!==e.port))return;if(s=x(e,d))return s;if(d="",u=xe,n)return;continue}"["==o?h=!0:"]"==o&&(h=!1),d+=o}else{if(""==d)return D;if(s=x(e,d))return s;if(d="",u=ge,n==me)return}break;case ge:if(!U.test(o)){if(o==S||"/"==o||"?"==o||"#"==o||"\\"==o&&re(e)||n){if(""!=d){var v=parseInt(d,10);if(65535<v)return _;e.port=re(e)&&v===ne[e.scheme]?null:v,d=""}if(n)return;u=xe;continue}return _}d+=o;break;case ye:if(e.scheme="file","/"==o||"\\"==o)u=be;else{if(!r||"file"!=r.scheme){u=we;continue}if(o==S)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=Ce;else{if("#"!=o){C(i.slice(f).join(""))||(e.host=r.host,e.path=r.path.slice(),E(e)),u=we;continue}e.host=r.host,e.path=r.path.slice(),e.query=r.query,e.fragment="",u=Ee}}break;case be:if("/"==o||"\\"==o){u=ve;break}r&&"file"==r.scheme&&!C(i.slice(f).join(""))&&(j(r.path[0],!0)?e.path.push(r.path[0]):e.host=r.host),u=we;continue;case ve:if(o==S||"/"==o||"\\"==o||"?"==o||"#"==o){if(!n&&j(d))u=we;else if(""==d){if(e.host="",n)return;u=xe}else{if(s=x(e,d))return s;if("localhost"==e.host&&(e.host=""),n)return;d="",u=xe}continue}d+=o;break;case xe:if(re(e)){if(u=we,"/"!=o&&"\\"!=o)continue}else if(n||"?"!=o)if(n||"#"!=o){if(o!=S&&(u=we,"/"!=o))continue}else e.fragment="",u=Ee;else e.query="",u=Ce;break;case we:if(o==S||"/"==o||"\\"==o&&re(e)||!n&&("?"==o||"#"==o)){if(".."===(c=(c=d).toLowerCase())||"%2e."===c||".%2e"===c||"%2e%2e"===c?(E(e),"/"==o||"\\"==o&&re(e)||e.path.push("")):"."===(l=d)||"%2e"===l.toLowerCase()?"/"==o||"\\"==o&&re(e)||e.path.push(""):("file"==e.scheme&&!e.path.length&&j(d)&&(e.host&&(e.host=""),d=d.charAt(0)+":"),e.path.push(d)),d="","file"==e.scheme&&(o==S||"?"==o||"#"==o))for(;1<e.path.length&&""===e.path[0];)e.path.shift();"?"==o?(e.query="",u=Ce):"#"==o&&(e.fragment="",u=Ee)}else d+=te(o,Q);break;case je:"?"==o?(e.query="",u=Ce):"#"==o?(e.fragment="",u=Ee):o!=S&&(e.path[0]+=te(o,J));break;case Ce:n||"#"!=o?o!=S&&("'"==o&&re(e)?e.query+="%27":e.query+="#"==o?"%23":te(o,J)):(e.fragment="",u=Ee);break;case Ee:o!=S&&(e.fragment+=te(o,K))}f++}}function r(e,t){return{get:e,set:t,configurable:!0,enumerable:!0}}var S,o=e("../internals/export"),d=e("../internals/descriptors"),a=e("../internals/native-url"),s=e("../internals/global"),l=e("../internals/object-define-properties"),c=e("../internals/redefine"),p=e("../internals/an-instance"),O=e("../internals/has"),h=e("../internals/object-assign"),k=e("../internals/array-from"),m=e("../internals/string-multibyte").codeAt,g=e("../internals/string-punycode-to-ascii"),y=e("../internals/set-to-string-tag"),b=e("../modules/web.url-search-params"),v=e("../internals/internal-state"),A=s.URL,I=b.URLSearchParams,N=b.getState,T=v.set,L=v.getterFor("URL"),R=Math.floor,P=Math.pow,M="Invalid scheme",D="Invalid host",_="Invalid port",F=/[A-Za-z]/,Y=/[\d+-.A-Za-z]/,U=/\d/,q=/^(0x|0X)/,X=/^[0-7]+$/,z=/^\d+$/,W=/^[\dA-Fa-f]+$/,B=/[\u0000\u0009\u000A\u000D #%/:?@[\\]]/,H=/[\u0000\u0009\u000A\u000D #/:?@[\\]]/,G=/^[\u0000-\u001F ]+|[\u0000-\u001F ]+$/g,V=/[\u0009\u000A\u000D]/g,$=function(e){var t,n,r,i,o,a,s,l=e.split(".");if(l.length&&""==l[l.length-1]&&l.pop(),4<(t=l.length))return e;for(n=[],r=0;r<t;r++){if(""==(i=l[r]))return e;if(o=10,1<i.length&&"0"==i.charAt(0)&&(o=q.test(i)?16:8,i=i.slice(8==o?1:2)),""===i)a=0;else{if(!(10==o?z:8==o?X:W).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>=P(256,5-t))return null}else if(255<a)return null;for(s=n.pop(),r=0;r<n.length;r++)s+=n[r]*P(256,3-r);return s},Z=function(e){function t(){return e.charAt(d)}var n,r,i,o,a,s,l,c=[0,0,0,0,0,0,0,0],u=0,f=null,d=0;if(":"==t()){if(":"!=e.charAt(1))return;d+=2,f=++u}for(;t();){if(8==u)return;if(":"!=t()){for(n=r=0;r<4&&W.test(t());)n=16*n+parseInt(t(),16),d++,r++;if("."==t()){if(0==r)return;if(d-=r,6<u)return;for(i=0;t();){if(o=null,0<i){if(!("."==t()&&i<4))return;d++}if(!U.test(t()))return;for(;U.test(t());){if(a=parseInt(t(),10),null===o)o=a;else{if(0==o)return;o=10*o+a}if(255<o)return;d++}c[u]=256*c[u]+o,2!=++i&&4!=i||u++}if(4!=i)return;break}if(":"==t()){if(d++,!t())return}else if(t())return;c[u++]=n}else{if(null!==f)return;d++,f=++u}}if(null!==f)for(s=u-f,u=7;0!=u&&0<s;)l=c[u],c[u--]=c[f+s-1],c[f+--s]=l;else if(8!=u)return;return c},J={},K=h({},J,{" ":1,'"':1,"<":1,">":1,"`":1}),Q=h({},K,{"#":1,"?":1,"{":1,"}":1}),ee=h({},Q,{"/":1,":":1,";":1,"=":1,"@":1,"[":1,"\\":1,"]":1,"^":1,"|":1}),te=function(e,t){var n=m(e,0);return 32<n&&n<127&&!O(t,e)?e:encodeURIComponent(e)},ne={ftp:21,file:null,http:80,https:443,ws:80,wss:443},re=function(e){return O(ne,e.scheme)},ie={},oe={},ae={},se={},le={},ce={},ue={},fe={},de={},pe={},he={},me={},ge={},ye={},be={},ve={},xe={},we={},je={},Ce={},Ee={},Se=function(e,t){var n,r,i=p(this,Se,"URL"),o=1<arguments.length?t:void 0,a=String(e),s=T(i,{type:"URL"});if(void 0!==o)if(o instanceof Se)n=L(o);else if(r=f(n={},String(o)))throw TypeError(r);if(r=f(s,a,null,n))throw TypeError(r);var l=s.searchParams=new I,c=N(l);c.updateSearchParams(s.query),c.updateURL=function(){s.query=String(l)||null},d||(i.href=ke.call(i),i.origin=Ae.call(i),i.protocol=Ie.call(i),i.username=Ne.call(i),i.password=Te.call(i),i.host=Le.call(i),i.hostname=Re.call(i),i.port=Pe.call(i),i.pathname=Me.call(i),i.search=De.call(i),i.searchParams=_e.call(i),i.hash=Fe.call(i))},Oe=Se.prototype,ke=function(){var e=L(this),t=e.scheme,n=e.username,r=e.password,i=e.host,o=e.port,a=e.path,s=e.query,l=e.fragment,c=t+":";return null!==i?(c+="//",w(e)&&(c+=n+(r?":"+r:"")+"@"),c+=u(i),null!==o&&(c+=":"+o)):"file"==t&&(c+="//"),c+=e.cannotBeABaseURL?a[0]:a.length?"/"+a.join("/"):"",null!==s&&(c+="?"+s),null!==l&&(c+="#"+l),c},Ae=function(){var e=L(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&&re(e)?t+"://"+u(e.host)+(null!==n?":"+n:""):"null"},Ie=function(){return L(this).scheme+":"},Ne=function(){return L(this).username},Te=function(){return L(this).password},Le=function(){var e=L(this),t=e.host,n=e.port;return null===t?"":null===n?u(t):u(t)+":"+n},Re=function(){var e=L(this).host;return null===e?"":u(e)},Pe=function(){var e=L(this).port;return null===e?"":String(e)},Me=function(){var e=L(this),t=e.path;return e.cannotBeABaseURL?t[0]:t.length?"/"+t.join("/"):""},De=function(){var e=L(this).query;return e?"?"+e:""},_e=function(){return L(this).searchParams},Fe=function(){var e=L(this).fragment;return e?"#"+e:""};if(d&&l(Oe,{href:r(ke,function(e){var t=L(this),n=String(e),r=f(t,n);if(r)throw TypeError(r);N(t.searchParams).updateSearchParams(t.query)}),origin:r(Ae),protocol:r(Ie,function(e){var t=L(this);f(t,String(e)+":",ie)}),username:r(Ne,function(e){var t=L(this),n=k(String(e));if(!i(t)){t.username="";for(var r=0;r<n.length;r++)t.username+=te(n[r],ee)}}),password:r(Te,function(e){var t=L(this),n=k(String(e));if(!i(t)){t.password="";for(var r=0;r<n.length;r++)t.password+=te(n[r],ee)}}),host:r(Le,function(e){var t=L(this);t.cannotBeABaseURL||f(t,String(e),he)}),hostname:r(Re,function(e){var t=L(this);t.cannotBeABaseURL||f(t,String(e),me)}),port:r(Pe,function(e){var t=L(this);i(t)||(""==(e=String(e))?t.port=null:f(t,e,ge))}),pathname:r(Me,function(e){var t=L(this);t.cannotBeABaseURL||(t.path=[],f(t,e+"",xe))}),search:r(De,function(e){var t=L(this);""==(e=String(e))?t.query=null:("?"==e.charAt(0)&&(e=e.slice(1)),t.query="",f(t,e,Ce)),N(t.searchParams).updateSearchParams(t.query)}),searchParams:r(_e),hash:r(Fe,function(e){var t=L(this);""!=(e=String(e))?("#"==e.charAt(0)&&(e=e.slice(1)),t.fragment="",f(t,e,Ee)):t.fragment=null})}),c(Oe,"toJSON",function(){return ke.call(this)},{enumerable:!0}),c(Oe,"toString",function(){return ke.call(this)},{enumerable:!0}),A){var Ye=A.createObjectURL,Ue=A.revokeObjectURL;Ye&&c(Se,"createObjectURL",function(e){return Ye.apply(A,arguments)}),Ue&&c(Se,"revokeObjectURL",function(e){return Ue.apply(A,arguments)})}y(Se,"URL"),o({global:!0,forced:!a,sham:!d},{URL:Se})},{"../internals/an-instance":6,"../internals/array-from":14,"../internals/descriptors":42,"../internals/export":49,"../internals/global":59,"../internals/has":60,"../internals/internal-state":70,"../internals/native-url":88,"../internals/object-assign":95,"../internals/object-define-properties":97,"../internals/redefine":116,"../internals/set-to-string-tag":125,"../internals/string-multibyte":131,"../internals/string-punycode-to-ascii":134,"../modules/es.string.iterator":295,"../modules/web.url-search-params":370}],372:[function(e,t,n){"use strict";e("../internals/export")({target:"URL",proto:!0,enumerable:!0},{toJSON:function(){return URL.prototype.toString.call(this)}})},{"../internals/export":49}],373:[function(e,t,n){e("../es"),e("../web");var r=e("../internals/path");t.exports=r},{"../es":1,"../internals/path":112,"../web":374}],374:[function(e,t,n){e("../modules/web.dom-collections.for-each"),e("../modules/web.dom-collections.iterator"),e("../modules/web.immediate"),e("../modules/web.queue-microtask"),e("../modules/web.timers"),e("../modules/web.url"),e("../modules/web.url.to-json"),e("../modules/web.url-search-params");var r=e("../internals/path");t.exports=r},{"../internals/path":112,"../modules/web.dom-collections.for-each":365,"../modules/web.dom-collections.iterator":366,"../modules/web.immediate":367,"../modules/web.queue-microtask":368,"../modules/web.timers":369,"../modules/web.url":371,"../modules/web.url-search-params":370,"../modules/web.url.to-json":372}],375:[function(e,t,n){var r=function(a){"use strict";var l,e=Object.prototype,u=e.hasOwnProperty,t="function"==typeof Symbol?Symbol:{},i=t.iterator||"@@iterator",n=t.asyncIterator||"@@asyncIterator",r=t.toStringTag||"@@toStringTag";function s(e,t,n,r){var o,a,s,l,i=t&&t.prototype instanceof y?t:y,c=Object.create(i.prototype),u=new k(r||[]);return c._invoke=(o=e,a=n,s=u,l=d,function(e,t){if(l===h)throw new Error("Generator is already running");if(l===m){if("throw"===e)throw t;return I()}for(s.method=e,s.arg=t;;){var n=s.delegate;if(n){var r=E(n,s);if(r){if(r===g)continue;return r}}if("next"===s.method)s.sent=s._sent=s.arg;else if("throw"===s.method){if(l===d)throw l=m,s.arg;s.dispatchException(s.arg)}else"return"===s.method&&s.abrupt("return",s.arg);l=h;var i=f(o,a,s);if("normal"===i.type){if(l=s.done?m:p,i.arg===g)continue;return{value:i.arg,done:s.done}}"throw"===i.type&&(l=m,s.method="throw",s.arg=i.arg)}}),c}function f(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(e){return{type:"throw",arg:e}}}a.wrap=s;var d="suspendedStart",p="suspendedYield",h="executing",m="completed",g={};function y(){}function o(){}function c(){}var b={};b[i]=function(){return this};var v=Object.getPrototypeOf,x=v&&v(v(A([])));x&&x!==e&&u.call(x,i)&&(b=x);var w=c.prototype=y.prototype=Object.create(b);function j(e){["next","throw","return"].forEach(function(t){e[t]=function(e){return this._invoke(t,e)}})}function C(l,c){var t;this._invoke=function(n,r){function e(){return new c(function(e,t){!function t(e,n,r,i){var o=f(l[e],l,n);if("throw"!==o.type){var a=o.arg,s=a.value;return s&&"object"==typeof s&&u.call(s,"__await")?c.resolve(s.__await).then(function(e){t("next",e,r,i)},function(e){t("throw",e,r,i)}):c.resolve(s).then(function(e){a.value=e,r(a)},function(e){return t("throw",e,r,i)})}i(o.arg)}(n,r,e,t)})}return t=t?t.then(e,e):e()}}function E(e,t){var n=e.iterator[t.method];if(n===l){if(t.delegate=null,"throw"===t.method){if(e.iterator.return&&(t.method="return",t.arg=l,E(e,t),"throw"===t.method))return g;t.method="throw",t.arg=new TypeError("The iterator does not provide a 'throw' method")}return g}var r=f(n,e.iterator,t.arg);if("throw"===r.type)return t.method="throw",t.arg=r.arg,t.delegate=null,g;var i=r.arg;return i?i.done?(t[e.resultName]=i.value,t.next=e.nextLoc,"return"!==t.method&&(t.method="next",t.arg=l),t.delegate=null,g):i:(t.method="throw",t.arg=new TypeError("iterator result is not an object"),t.delegate=null,g)}function S(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function O(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function k(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(S,this),this.reset(!0)}function A(t){if(t){var e=t[i];if(e)return e.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var n=-1,r=function e(){for(;++n<t.length;)if(u.call(t,n))return e.value=t[n],e.done=!1,e;return e.value=l,e.done=!0,e};return r.next=r}}return{next:I}}function I(){return{value:l,done:!0}}return o.prototype=w.constructor=c,c.constructor=o,c[r]=o.displayName="GeneratorFunction",a.isGeneratorFunction=function(e){var t="function"==typeof e&&e.constructor;return!!t&&(t===o||"GeneratorFunction"===(t.displayName||t.name))},a.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,c):(e.__proto__=c,r in e||(e[r]="GeneratorFunction")),e.prototype=Object.create(w),e},a.awrap=function(e){return{__await:e}},j(C.prototype),C.prototype[n]=function(){return this},a.AsyncIterator=C,a.async=function(e,t,n,r,i){void 0===i&&(i=Promise);var o=new C(s(e,t,n,r),i);return a.isGeneratorFunction(t)?o:o.next().then(function(e){return e.done?e.value:o.next()})},j(w),w[r]="Generator",w[i]=function(){return this},w.toString=function(){return"[object Generator]"},a.keys=function(n){var r=[];for(var e in n)r.push(e);return r.reverse(),function e(){for(;r.length;){var t=r.pop();if(t in n)return e.value=t,e.done=!1,e}return e.done=!0,e}},a.values=A,k.prototype={constructor:k,reset:function(e){if(this.prev=0,this.next=0,this.sent=this._sent=l,this.done=!1,this.delegate=null,this.method="next",this.arg=l,this.tryEntries.forEach(O),!e)for(var t in this)"t"===t.charAt(0)&&u.call(this,t)&&!isNaN(+t.slice(1))&&(this[t]=l)},stop:function(){this.done=!0;var e=this.tryEntries[0].completion;if("throw"===e.type)throw e.arg;return this.rval},dispatchException:function(n){if(this.done)throw n;var r=this;function e(e,t){return o.type="throw",o.arg=n,r.next=e,t&&(r.method="next",r.arg=l),!!t}for(var t=this.tryEntries.length-1;0<=t;--t){var i=this.tryEntries[t],o=i.completion;if("root"===i.tryLoc)return e("end");if(i.tryLoc<=this.prev){var a=u.call(i,"catchLoc"),s=u.call(i,"finallyLoc");if(a&&s){if(this.prev<i.catchLoc)return e(i.catchLoc,!0);if(this.prev<i.finallyLoc)return e(i.finallyLoc)}else if(a){if(this.prev<i.catchLoc)return e(i.catchLoc,!0)}else{if(!s)throw new Error("try statement without catch or finally");if(this.prev<i.finallyLoc)return e(i.finallyLoc)}}}},abrupt:function(e,t){for(var n=this.tryEntries.length-1;0<=n;--n){var r=this.tryEntries[n];if(r.tryLoc<=this.prev&&u.call(r,"finallyLoc")&&this.prev<r.finallyLoc){var i=r;break}}i&&("break"===e||"continue"===e)&&i.tryLoc<=t&&t<=i.finallyLoc&&(i=null);var o=i?i.completion:{};return o.type=e,o.arg=t,i?(this.method="next",this.next=i.finallyLoc,g):this.complete(o)},complete:function(e,t){if("throw"===e.type)throw e.arg;return"break"===e.type||"continue"===e.type?this.next=e.arg:"return"===e.type?(this.rval=this.arg=e.arg,this.method="return",this.next="end"):"normal"===e.type&&t&&(this.next=t),g},finish:function(e){for(var t=this.tryEntries.length-1;0<=t;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),O(n),g}},catch:function(e){for(var t=this.tryEntries.length-1;0<=t;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var r=n.completion;if("throw"===r.type){var i=r.arg;O(n)}return i}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,n){return this.delegate={iterator:A(e),resultName:t,nextLoc:n},"next"===this.method&&(this.arg=l),g}},a}("object"==typeof t?t.exports:{});try{regeneratorRuntime=r}catch(e){Function("r","regeneratorRuntime = r")(r)}},{}],376:[function(o,e,t){(function(i){(function(){"use strict";function a(e){return(a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function s(e,t,n){var r=2<arguments.length?n:[];if(!1===l(e))throw new TypeError(Object.prototype.toString.call(e)+"is not a function.");return e.apply(t,r)}function f(e,t){return e[t]}function l(e){return"function"==typeof e}function d(e){var t=Number(e);return isNaN(t)?0:1/t==1/0||1/t==-1/0||t===1/0||t===-1/0?t:(t<0?-1:1)*Math.floor(Math.abs(t))}function p(e){if(null===e||e===g)throw TypeError();return Object(e)}function c(e,t){var n,r=(n=t,p(e)[n]);if(null===r||r===g)return g;if(!1===l(r))throw new TypeError("Method not callable: "+t);return r}function h(e){switch(a(e)){case"undefined":return"undefined";case"boolean":return"boolean";case"number":return"number";case"string":return"string";case"symbol":return"symbol";default:return null===e?"null":"Symbol"in u&&(e instanceof u.Symbol||e.constructor===u.Symbol)?"symbol":"object"}}function t(e,t){var n=1<arguments.length?t:g;if("object"!==h(e))return e;if(arguments.length<2)var r="default";else n===String?r="string":n===Number&&(r="number");var i="function"==typeof u.Symbol&&"symbol"==a(u.Symbol.toPrimitive)?c(e,u.Symbol.toPrimitive):g;if(i===g)return"default"===r&&(r="number"),function(e,t){if("string"===t)var n=["toString","valueOf"];else n=["valueOf","toString"];for(var r=0;r<n.length;++r){var i=f(e,n[r]);if(l(i)){var o=s(i,e);if("object"!==h(o))return o}}throw new TypeError("Cannot convert to primitive.")}(e,r);var o=s(i,e,[r]);if("object"!==h(o))return o;throw new TypeError("Cannot convert exotic object to primitive.")}function m(e){switch(h(e)){case"symbol":throw new TypeError("Cannot convert a Symbol value to a string");case"object":return m(t(e,String));default:return String(e)}}var u,g,e,n,r;o("core-js/stable"),o("regenerator-runtime/runtime"),u="object"===("undefined"==typeof window?"undefined":a(window))&&window||"object"===("undefined"==typeof self?"undefined":a(self))&&self||"object"===(void 0===i?"undefined":a(i))&&i||{},e=Array.prototype,r={value:function(e,t){var n,r,i=p(this),o=(n=f(i,"length"),(r=d(n))<=0?0:Math.min(r,Math.pow(2,53)-1));if(0===o)return!1;var a,s,l=d(t);if(0<=l)var c=l;else(c=o+l)<0&&(c=0);for(;c<o;){var u=f(i,m(c));if(s=u,h(a=e)===h(s)&&("number"===h(a)&&(isNaN(a)&&isNaN(s)||1/a==1/0&&1/s==-1/0||1/a==-1/0&&1/s==1/0)||a===s))return!0;c+=1}return!1},writable:!0,enumerable:!(n="includes"),configurable:!0},Object.defineProperty(e,n,r),function(){function e(e,t){if(!e)throw new Error("Not enough arguments");var n;if("createEvent"in document){n=document.createEvent("Event");var r=!(!t||t.bubbles===g)&&t.bubbles,i=!(!t||t.cancelable===g)&&t.cancelable;return n.initEvent(e,r,i),n}return(n=document.createEventObject()).type=e,n.bubbles=!(!t||t.bubbles===g)&&t.bubbles,n.cancelable=!(!t||t.cancelable===g)&&t.cancelable,n}var n={click:1,dblclick:1,keyup:1,keypress:1,keydown:1,mousedown:1,mouseup:1,mousemove:1,mouseover:1,mouseenter:1,mouseleave:1,mouseout:1,storage:1,storagecommit:1,textinput:1};if("undefined"!=typeof document&&"undefined"!=typeof window){var t=window.Event&&window.Event.prototype||null;e.NONE=0,e.CAPTURING_PHASE=1,e.AT_TARGET=2,e.BUBBLING_PHASE=3,window.Event=Window.prototype.Event=e,t&&Object.defineProperty(window.Event,"prototype",{configurable:!1,enumerable:!1,writable:!0,value:t}),"createEvent"in document||(window.addEventListener=Window.prototype.addEventListener=Document.prototype.addEventListener=Element.prototype.addEventListener=function(){var a=this,e=arguments[0],t=arguments[1];if(a===window&&e in n)throw new Error("In IE8 the event: "+e+" is not available on the window object. Please see https://github.com/Financial-Times/polyfill-service/issues/317 for more information.");a._events||(a._events={}),a._events[e]||(a._events[e]=function(e){var t,n=a._events[e.type].list,r=n.slice(),i=-1,o=r.length;for(e.preventDefault=function(){!1!==e.cancelable&&(e.returnValue=!1)},e.stopPropagation=function(){e.cancelBubble=!0},e.stopImmediatePropagation=function(){e.cancelBubble=!0,e.cancelImmediate=!0},e.currentTarget=a,e.relatedTarget=e.fromElement||null,e.target=e.target||e.srcElement||a,e.timeStamp=(new Date).getTime(),e.clientX&&(e.pageX=e.clientX+document.documentElement.scrollLeft,e.pageY=e.clientY+document.documentElement.scrollTop);++i<o&&!e.cancelImmediate;)i in r&&(t=r[i],n.includes(t)&&"function"==typeof t&&t.call(a,e))},a._events[e].list=[],a.attachEvent&&a.attachEvent("on"+e,a._events[e])),a._events[e].list.push(t)},window.removeEventListener=Window.prototype.removeEventListener=Document.prototype.removeEventListener=Element.prototype.removeEventListener=function(e,t){var n,r=this,i=e,o=t;r._events&&r._events[i]&&r._events[i].list&&-1!==(n=r._events[i].list.indexOf(o))&&(r._events[i].list.splice(n,1),r._events[i].list.length||(r.detachEvent&&r.detachEvent("on"+i,r._events[i]),delete r._events[i]))},window.dispatchEvent=Window.prototype.dispatchEvent=Document.prototype.dispatchEvent=Element.prototype.dispatchEvent=function(t){if(!arguments.length)throw new Error("Not enough arguments");if(!t||"string"!=typeof t.type)throw new Error("DOM Events Exception 0");var n=this,r=t.type;try{if(!t.bubbles){t.cancelBubble=!0;this.attachEvent("on"+r,function e(t){t.cancelBubble=!0,(n||window).detachEvent("on"+r,e)})}this.fireEvent("on"+r,t)}catch(e){for(t.target=n;"_events"in(t.currentTarget=n)&&"function"==typeof n._events[r]&&n._events[r].call(n,t),"function"==typeof n["on"+r]&&n["on"+r].call(n,t),(n=9===n.nodeType?n.parentWindow:n.parentNode)&&!t.cancelBubble;);}return!0},document.attachEvent("onreadystatechange",function(){"complete"===document.readyState&&document.dispatchEvent(new e("DOMContentLoaded",{bubbles:!0}))}))}}(),u.CustomEvent=function(t,n){if(!t)throw Error('TypeError: Failed to construct "CustomEvent": An event name must be provided.');var r;if(n=n||{bubbles:!1,cancelable:!1,detail:null},"createEvent"in document)try{(r=document.createEvent("CustomEvent")).initCustomEvent(t,n.bubbles,n.cancelable,n.detail)}catch(e){(r=document.createEvent("Event")).initEvent(t,n.bubbles,n.cancelable),r.detail=n.detail}else(r=new Event(t,n)).detail=n&&n.detail||null;return r},CustomEvent.prototype=Event.prototype,o("./simple-lightbox")}).call(this)}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"./simple-lightbox":377,"core-js/stable":373,"regenerator-runtime/runtime":375}],377:[function(e,t,i){(function(n){(function(){"use strict";function f(e,t){var n;if("undefined"==typeof Symbol||null==e[Symbol.iterator]){if(Array.isArray(e)||(n=function(e,t){if(!e)return;if("string"==typeof e)return l(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return l(e,t)}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0,i=function(){};return{s:i,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,s=!1;return{s:function(){n=e[Symbol.iterator]()},n:function(){var e=n.next();return a=e.done,e},e:function(e){s=!0,o=e},f:function(){try{a||null==n.return||n.return()}finally{if(s)throw o}}}}function l(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}function r(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 o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}Object.defineProperty(i,"__esModule",{value:!0}),i.default=void 0;var e=function(){function i(e,t){var n=this;if(!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,i),o(this,"defaultOptions",{sourceAttr:"href",overlay:!0,spinner:!0,nav:!0,navText:["&lsaquo;","&rsaquo;"],captions:!0,captionDelay:0,captionSelector:"img",captionType:"attr",captionsData:"title",captionPosition:"bottom",captionClass:"",close:!0,closeText:"&times;",swipeClose:!0,showCounter:!0,fileExt:"png|jpg|jpeg|gif|webp",animationSlide:!0,animationSpeed:250,preloading:!0,enableKeyboard:!0,loop:!0,rel:!1,docClose:!0,swipeTolerance:50,className:"simple-lightbox",widthRatio:.8,heightRatio:.9,scaleImageToRatio:!1,disableRightClick:!1,disableScroll:!0,alertError:!0,alertErrorMessage:"Image not found, next image will be loaded",additionalHtml:!1,history:!0,throttleInterval:0,doubleTapZoom:2,maxZoom:10,htmlClass:"has-lightbox",rtl:!1,fixedClass:"sl-fixed",fadeSpeed:300,uniqueImages:!0,focus:!0}),o(this,"transitionPrefix",void 0),o(this,"transitionCapable",!1),o(this,"isTouchDevice","ontouchstart"in window),o(this,"initialLocationHash",void 0),o(this,"pushStateSupport","pushState"in history),o(this,"isOpen",!1),o(this,"isAnimating",!1),o(this,"isClosing",!1),o(this,"isFadeIn",!1),o(this,"urlChangedOnce",!1),o(this,"hashReseted",!1),o(this,"historyHasChanges",!1),o(this,"historyUpdateTimeout",null),o(this,"currentImage",void 0),o(this,"eventNamespace","simplelightbox"),o(this,"domNodes",{}),o(this,"loadedImages",[]),o(this,"initialImageIndex",0),o(this,"currentImageIndex",0),o(this,"initialSelector",null),o(this,"globalScrollbarWidth",0),o(this,"controlCoordinates",{swipeDiff:0,swipeYDiff:0,swipeStart:0,swipeEnd:0,swipeYStart:0,swipeYEnd:0,mousedown:!1,imageLeft:0,zoomed:!1,containerHeight:0,containerWidth:0,containerOffsetX:0,containerOffsetY:0,imgHeight:0,imgWidth:0,capture:!1,initialOffsetX:0,initialOffsetY:0,initialPointerOffsetX:0,initialPointerOffsetY:0,initialPointerOffsetX2:0,initialPointerOffsetY2:0,initialScale:1,initialPinchDistance:0,pointerOffsetX:0,pointerOffsetY:0,pointerOffsetX2:0,pointerOffsetY2:0,targetOffsetX:0,targetOffsetY:0,targetScale:0,pinchOffsetX:0,pinchOffsetY:0,limitOffsetX:0,limitOffsetY:0,scaleDifference:0,targetPinchDistance:0,touchCount:0,doubleTapped:!1,touchmoveCount:0}),this.options=Object.assign(this.defaultOptions,t),"string"==typeof e?(this.initialSelector=e,this.elements=Array.from(document.querySelectorAll(e))):this.elements=void 0!==e.length&&0<e.length?Array.from(e):[e],this.relatedElements=[],this.transitionPrefix=this.calculateTransitionPrefix(),this.transitionCapable=!1!==this.transitionPrefix,this.initialLocationHash=this.hash,this.options.rel&&(this.elements=this.getRelated(this.options.rel)),this.options.uniqueImages){var r=[];this.elements=Array.from(this.elements).filter(function(e){var t=e.getAttribute(n.options.sourceAttr);return-1===r.indexOf(t)&&(r.push(t),!0)})}this.createDomNodes(),this.options.close&&this.domNodes.wrapper.appendChild(this.domNodes.closeButton),this.options.nav&&this.domNodes.wrapper.appendChild(this.domNodes.navigation),this.options.spinner&&this.domNodes.wrapper.appendChild(this.domNodes.spinner),this.addEventListener(this.elements,"click."+this.eventNamespace,function(e){if(n.isValidLink(e.currentTarget)){if(e.preventDefault(),n.isAnimating)return!1;n.initialImageIndex=n.elements.indexOf(e.currentTarget),n.openImage(e.currentTarget)}}),this.options.docClose&&this.addEventListener(this.domNodes.wrapper,["click."+this.eventNamespace,"touchstart."+this.eventNamespace],function(e){n.isOpen&&e.target===e.currentTarget&&n.close()}),this.options.disableRightClick&&this.addEventListener(document.body,"contextmenu."+this.eventNamespace,function(e){e.target.classList.contains("sl-overlay")&&e.preventDefault()}),this.options.enableKeyboard&&this.addEventListener(document.body,"keyup."+this.eventNamespace,this.throttle(function(e){if(n.controlCoordinates.swipeDiff=0,n.isAnimating&&"Escape"===e.key)return n.currentImage.setAttribute("src",""),n.isAnimating=!1,n.close();n.isOpen&&(e.preventDefault(),"Escape"===e.key&&n.close(),!n.isAnimating&&-1<["ArrowLeft","ArrowRight"].indexOf(e.key)&&n.loadImage("ArrowRight"===e.key?1:-1))},this.options.throttleInterval)),this.addEvents()}var e,t,n;return e=i,(t=[{key:"createDomNodes",value:function(){this.domNodes.overlay=document.createElement("div"),this.domNodes.overlay.classList.add("sl-overlay"),this.domNodes.overlay.dataset.opacityTarget=".7",this.domNodes.closeButton=document.createElement("button"),this.domNodes.closeButton.classList.add("sl-close"),this.domNodes.closeButton.innerHTML=this.options.closeText,this.domNodes.spinner=document.createElement("div"),this.domNodes.spinner.classList.add("sl-spinner"),this.domNodes.spinner.innerHTML="<div></div>",this.domNodes.navigation=document.createElement("div"),this.domNodes.navigation.classList.add("sl-navigation"),this.domNodes.navigation.innerHTML='<button class="sl-prev">'.concat(this.options.navText[0],'</button><button class="sl-next">').concat(this.options.navText[1],"</button>"),this.domNodes.counter=document.createElement("div"),this.domNodes.counter.classList.add("sl-counter"),this.domNodes.counter.innerHTML='<span class="sl-current"></span>/<span class="sl-total"></span>',this.domNodes.caption=document.createElement("div"),this.domNodes.caption.classList.add("sl-caption","pos-"+this.options.captionPosition),this.options.captionClass&&this.domNodes.caption.classList.add(this.options.captionClass),this.domNodes.image=document.createElement("div"),this.domNodes.image.classList.add("sl-image"),this.domNodes.wrapper=document.createElement("div"),this.domNodes.wrapper.classList.add("sl-wrapper"),this.domNodes.wrapper.setAttribute("tabindex",-1),this.domNodes.wrapper.setAttribute("role","dialog"),this.domNodes.wrapper.setAttribute("aria-hidden",!1),this.options.className&&this.domNodes.wrapper.classList.add(this.options.className),this.options.rtl&&this.domNodes.wrapper.classList.add("sl-dir-rtl")}},{key:"throttle",value:function(e,t){var n;return function(){n||(e.apply(this,arguments),n=!0,setTimeout(function(){return n=!1},t))}}},{key:"isValidLink",value:function(e){return!this.options.fileExt||"pathname"in e&&new RegExp("("+this.options.fileExt+")$","i").test(e.pathname)}},{key:"calculateTransitionPrefix",value:function(){var e=(document.body||document.documentElement).style;return"transition"in e?"":"WebkitTransition"in e?"-webkit-":"MozTransition"in e?"-moz-":"OTransition"in e&&"-o"}},{key:"toggleScrollbar",value:function(e){var r=0,t=[].slice.call(document.querySelectorAll("."+this.options.fixedClass));if("hide"===e){var n=window.innerWidth;if(!n){var i=document.documentElement.getBoundingClientRect();n=i.right-Math.abs(i.left)}if(document.body.clientWidth<n){var o=document.createElement("div"),a=parseInt(document.body.style.paddingRight||0,10);o.classList.add("sl-scrollbar-measure"),document.body.appendChild(o),r=o.offsetWidth-o.clientWidth,document.body.removeChild(o),document.body.dataset.originalPaddingRight=a,0<r&&(document.body.classList.add("hidden-scroll"),document.body.style.paddingRight=a+r+"px",t.forEach(function(e){var t=e.style.paddingRight,n=window.getComputedStyle(e)["padding-right"];e.dataset.originalPaddingRight=t,e.style.paddingRight="".concat(parseFloat(n)+r,"px")}))}}else document.body.classList.remove("hidden-scroll"),document.body.style.paddingRight=document.body.dataset.originalPaddingRight,t.forEach(function(e){var t=e.dataset.originalPaddingRight;void 0!==t&&(e.style.paddingRight=t)});return r}},{key:"close",value:function(){var e=this;if(!this.isOpen||this.isAnimating||this.isClosing)return!1;this.isClosing=!0;var t=this.relatedElements[this.currentImageIndex];for(var n in t.dispatchEvent(new Event("close.simplelightbox")),this.options.history&&(this.historyHasChanges=!1,this.hashReseted||this.resetHash()),this.removeEventListener(document,"focusin."+this.eventNamespace),this.fadeOut(document.querySelectorAll(".sl-image img, .sl-overlay, .sl-close, .sl-navigation, .sl-image .sl-caption, .sl-counter"),this.options.fadeSpeed,function(){e.options.disableScroll&&e.toggleScrollbar("show"),e.options.htmlClass&&""!==e.options.htmlClass&&document.querySelector("html").classList.remove(e.options.htmlClass),document.body.removeChild(e.domNodes.wrapper),document.body.removeChild(e.domNodes.overlay),e.domNodes.additionalHtml=null,t.dispatchEvent(new Event("closed.simplelightbox")),e.isClosing=!1}),this.currentImage=null,this.isOpen=!1,this.isAnimating=!1,this.controlCoordinates)this.controlCoordinates[n]=0;this.controlCoordinates.mousedown=!1,this.controlCoordinates.zoomed=!1,this.controlCoordinates.capture=!1,this.controlCoordinates.initialScale=this.minMax(1,1,this.options.maxZoom),this.controlCoordinates.doubleTapped=!1}},{key:"preload",value:function(){var n=this,r=this.currentImageIndex,e=this.relatedElements.length,t=r+1<0?e-1:e-1<=r+1?0:r+1,i=r-1<0?e-1:e-1<=r-1?0:r-1,o=new Image,a=new Image;o.addEventListener("load",function(e){var t=e.target.getAttribute("src");-1===n.loadedImages.indexOf(t)&&n.loadedImages.push(t),n.relatedElements[r].dispatchEvent(new Event("nextImageLoaded."+n.eventNamespace))}),o.setAttribute("src",this.relatedElements[t].getAttribute(this.options.sourceAttr)),a.addEventListener("load",function(e){var t=e.target.getAttribute("src");-1===n.loadedImages.indexOf(t)&&n.loadedImages.push(t),n.relatedElements[r].dispatchEvent(new Event("prevImageLoaded."+n.eventNamespace))}),a.setAttribute("src",this.relatedElements[i].getAttribute(this.options.sourceAttr))}},{key:"loadImage",value:function(e){var t=this,n=e;this.options.rtl&&(e=-e),this.relatedElements[this.currentImageIndex].dispatchEvent(new Event("change."+this.eventNamespace)),this.relatedElements[this.currentImageIndex].dispatchEvent(new Event((1===e?"next":"prev")+"."+this.eventNamespace));var r=this.currentImageIndex+e;if(this.isAnimating||(r<0||r>=this.relatedElements.length)&&!1===this.options.loop)return!1;this.currentImageIndex=r<0?this.relatedElements.length-1:r>this.relatedElements.length-1?0:r,this.domNodes.counter.querySelector(".sl-current").innerHTML=this.currentImageIndex+1,this.options.animationSlide&&this.slide(this.options.animationSpeed/1e3,-100*n-this.controlCoordinates.swipeDiff+"px"),this.fadeOut(this.domNodes.image,this.options.fadeSpeed,function(){t.isAnimating=!0,t.isClosing?t.isAnimating=!1:setTimeout(function(){var e=t.relatedElements[t.currentImageIndex];t.currentImage.setAttribute("src",e.getAttribute(t.options.sourceAttr)),-1===t.loadedImages.indexOf(e.getAttribute(t.options.sourceAttr))&&t.show(t.domNodes.spinner),t.domNodes.image.contains(t.domNodes.caption)&&t.domNodes.image.removeChild(t.domNodes.caption),t.adjustImage(n),t.options.preloading&&t.preload()},100)})}},{key:"adjustImage",value:function(a){var s=this;if(!this.currentImage)return!1;var e=new Image,l=window.innerWidth*this.options.widthRatio,c=window.innerHeight*this.options.heightRatio;e.setAttribute("src",this.currentImage.getAttribute("src")),this.currentImage.dataset.scale=1,this.currentImage.dataset.translateX=0,this.currentImage.dataset.translateY=0,this.zoomPanElement(0,0,1),e.addEventListener("error",function(e){s.relatedElements[s.currentImageIndex].dispatchEvent(new Event("error."+s.eventNamespace)),s.isAnimating=!1,s.isOpen=!1,s.domNodes.spinner.style.display="none";var t=1===a||-1===a;if(s.initialImageIndex===s.currentImageIndex&&t)return s.close();s.options.alertError&&alert(s.options.alertErrorMessage),s.loadImage(t?a:1)}),e.addEventListener("load",function(e){void 0!==a&&(s.relatedElements[s.currentImageIndex].dispatchEvent(new Event("changed."+s.eventNamespace)),s.relatedElements[s.currentImageIndex].dispatchEvent(new Event((1===a?"nextDone":"prevDone")+"."+s.eventNamespace))),s.options.history&&s.updateURL(),-1===s.loadedImages.indexOf(s.currentImage.getAttribute("src"))&&s.loadedImages.push(s.currentImage.getAttribute("src"));var t,n,r=e.target.width,i=e.target.height;if(s.options.scaleImageToRatio||l<r||c<i){var o=l/c<r/i?r/l:i/c;r/=o,i/=o}s.domNodes.image.style.top=(window.innerHeight-i)/2+"px",s.domNodes.image.style.left=(window.innerWidth-r-s.globalScrollbarWidth)/2+"px",s.domNodes.image.style.width=r+"px",s.domNodes.image.style.height=i+"px",s.domNodes.spinner.style.display="none",s.options.focus&&s.forceFocus(),s.fadeIn(s.currentImage,s.options.fadeSpeed,function(){s.options.focus&&s.domNodes.wrapper.focus()}),s.isOpen=!0,"string"==typeof s.options.captionSelector?t="self"===s.options.captionSelector?s.relatedElements[s.currentImageIndex]:s.relatedElements[s.currentImageIndex].querySelector(s.options.captionSelector):"function"==typeof s.options.captionSelector&&(t=s.options.captionSelector(s.relatedElements[s.currentImageIndex])),s.options.captions&&t&&(n="data"===s.options.captionType?t.dataset[s.options.captionsData]:"text"===s.options.captionType?t.innerHTML:t.getAttribute(s.options.captionsData)),s.options.loop||(0===s.currentImageIndex&&s.hide(s.domNodes.navigation.querySelector(".sl-prev")),s.currentImageIndex>=s.relatedElements.length-1&&s.hide(s.domNodes.navigation.querySelector(".sl-next")),0<s.currentImageIndex&&s.show(s.domNodes.navigation.querySelector(".sl-prev")),s.currentImageIndex<s.relatedElements.length-1&&s.show(s.domNodes.navigation.querySelector(".sl-next"))),1===s.relatedElements.length?s.hide(s.domNodes.navigation.querySelectorAll(".sl-prev, .sl-next")):s.show(s.domNodes.navigation.querySelectorAll(".sl-prev, .sl-next")),1===a||-1===a?(s.options.animationSlide&&(s.slide(0,100*a+"px"),setTimeout(function(){s.slide(s.options.animationSpeed/1e3,"0px")},50)),s.fadeIn(s.domNodes.image,s.options.fadeSpeed,function(){s.isAnimating=!1,s.setCaption(n,r)})):(s.isAnimating=!1,s.setCaption(n,r)),s.options.additionalHtml&&!s.domNodes.additionalHtml&&(s.domNodes.additionalHtml=document.createElement("div"),s.domNodes.additionalHtml.classList.add("sl-additional-html"),s.domNodes.additionalHtml.innerHTML=s.options.additionalHtml,s.domNodes.image.appendChild(s.domNodes.additionalHtml))})}},{key:"zoomPanElement",value:function(e,t,n){this.currentImage.style[this.transitionPrefix+"transform"]="translate("+e+","+t+") scale("+n+")"}},{key:"minMax",value:function(e,t,n){return e<t?t:n<e?n:e}},{key:"setZoomData",value:function(e,t,n){this.currentImage.dataset.scale=e,this.currentImage.dataset.translateX=t,this.currentImage.dataset.translateY=n}},{key:"hashchangeHandler",value:function(){this.isOpen&&this.hash===this.initialLocationHash&&(this.hashReseted=!0,this.close())}},{key:"addEvents",value:function(){var n=this;this.addEventListener(window,"resize."+this.eventNamespace,function(e){n.isOpen&&n.adjustImage()}),this.addEventListener(this.domNodes.closeButton,["click."+this.eventNamespace,"touchstart."+this.eventNamespace],this.close.bind(this)),this.options.history&&setTimeout(function(){n.addEventListener(window,"hashchange."+n.eventNamespace,function(e){n.isOpen&&n.hashchangeHandler()})},40),this.addEventListener(this.domNodes.navigation.getElementsByTagName("button"),"click."+this.eventNamespace,function(e){if(!e.currentTarget.tagName.match(/button/i))return!0;e.preventDefault(),n.controlCoordinates.swipeDiff=0,n.loadImage(e.currentTarget.classList.contains("sl-next")?1:-1)}),this.addEventListener(this.domNodes.image,["touchstart."+this.eventNamespace,"mousedown."+this.eventNamespace],function(e){if("A"===e.target.tagName&&"touchstart"===e.type)return!0;if("mousedown"===e.type)n.controlCoordinates.initialPointerOffsetX=e.clientX,n.controlCoordinates.initialPointerOffsetY=e.clientY,n.controlCoordinates.containerHeight=n.getDimensions(n.domNodes.image).height,n.controlCoordinates.containerWidth=n.getDimensions(n.domNodes.image).width,n.controlCoordinates.imgHeight=n.getDimensions(n.currentImage).height,n.controlCoordinates.imgWidth=n.getDimensions(n.currentImage).width,n.controlCoordinates.containerOffsetX=n.domNodes.image.offsetLeft,n.controlCoordinates.containerOffsetY=n.domNodes.image.offsetTop,n.controlCoordinates.initialOffsetX=parseFloat(n.currentImage.dataset.translateX),n.controlCoordinates.initialOffsetY=parseFloat(n.currentImage.dataset.translateY),n.controlCoordinates.capture=!0;else{if(n.controlCoordinates.touchCount=e.touches.length,n.controlCoordinates.initialPointerOffsetX=e.touches[0].clientX,n.controlCoordinates.initialPointerOffsetY=e.touches[0].clientY,n.controlCoordinates.containerHeight=n.getDimensions(n.domNodes.image).height,n.controlCoordinates.containerWidth=n.getDimensions(n.domNodes.image).width,n.controlCoordinates.imgHeight=n.getDimensions(n.currentImage).height,n.controlCoordinates.imgWidth=n.getDimensions(n.currentImage).width,n.controlCoordinates.containerOffsetX=n.domNodes.image.offsetLeft,n.controlCoordinates.containerOffsetY=n.domNodes.image.offsetTop,1===n.controlCoordinates.touchCount){if(n.controlCoordinates.doubleTapped)return n.currentImage.classList.add("sl-transition"),n.controlCoordinates.zoomed?(n.controlCoordinates.initialScale=1,n.setZoomData(n.controlCoordinates.initialScale,0,0),n.zoomPanElement("0px","0px",n.controlCoordinates.initialScale),n.controlCoordinates.zoomed=!1):(n.controlCoordinates.initialScale=n.options.doubleTapZoom,n.setZoomData(n.controlCoordinates.initialScale,0,0),n.zoomPanElement("0px","0px",n.controlCoordinates.initialScale),n.domNodes.caption.style.opacity||"none"===n.domNodes.caption.style.display||n.fadeOut(n.domNodes.caption,n.options.fadeSpeed),n.controlCoordinates.zoomed=!0),setTimeout(function(){n.currentImage&&n.currentImage.classList.remove("sl-transition")},200),!1;n.controlCoordinates.doubleTapped=!0,setTimeout(function(){n.controlCoordinates.doubleTapped=!1},300),n.controlCoordinates.initialOffsetX=parseFloat(n.currentImage.dataset.translateX),n.controlCoordinates.initialOffsetY=parseFloat(n.currentImage.dataset.translateY)}else 2===n.controlCoordinates.touchCount&&(n.controlCoordinates.initialPointerOffsetX2=e.touches[1].clientX,n.controlCoordinates.initialPointerOffsetY2=e.touches[1].clientY,n.controlCoordinates.initialOffsetX=parseFloat(n.currentImage.dataset.translateX),n.controlCoordinates.initialOffsetY=parseFloat(n.currentImage.dataset.translateY),n.controlCoordinates.pinchOffsetX=(n.controlCoordinates.initialPointerOffsetX+n.controlCoordinates.initialPointerOffsetX2)/2,n.controlCoordinates.pinchOffsetY=(n.controlCoordinates.initialPointerOffsetY+n.controlCoordinates.initialPointerOffsetY2)/2,n.controlCoordinates.initialPinchDistance=Math.sqrt((n.controlCoordinates.initialPointerOffsetX-n.controlCoordinates.initialPointerOffsetX2)*(n.controlCoordinates.initialPointerOffsetX-n.controlCoordinates.initialPointerOffsetX2)+(n.controlCoordinates.initialPointerOffsetY-n.controlCoordinates.initialPointerOffsetY2)*(n.controlCoordinates.initialPointerOffsetY-n.controlCoordinates.initialPointerOffsetY2)));n.controlCoordinates.capture=!0}return!!n.controlCoordinates.mousedown||(n.transitionCapable&&(n.controlCoordinates.imageLeft=parseInt(n.domNodes.image.style.left,10)),n.controlCoordinates.mousedown=!0,n.controlCoordinates.swipeDiff=0,n.controlCoordinates.swipeYDiff=0,n.controlCoordinates.swipeStart=e.pageX||e.touches[0].pageX,n.controlCoordinates.swipeYStart=e.pageY||e.touches[0].pageY,!1)}),this.addEventListener(this.domNodes.image,["touchmove."+this.eventNamespace,"mousemove."+this.eventNamespace,"MSPointerMove"],function(e){if(!n.controlCoordinates.mousedown)return!0;if(e.preventDefault(),"touchmove"===e.type){if(!1===n.controlCoordinates.capture)return!1;n.controlCoordinates.pointerOffsetX=e.touches[0].clientX,n.controlCoordinates.pointerOffsetY=e.touches[0].clientY,n.controlCoordinates.touchCount=e.touches.length,n.controlCoordinates.touchmoveCount++,1<n.controlCoordinates.touchCount?(n.controlCoordinates.pointerOffsetX2=e.touches[1].clientX,n.controlCoordinates.pointerOffsetY2=e.touches[1].clientY,n.controlCoordinates.targetPinchDistance=Math.sqrt((n.controlCoordinates.pointerOffsetX-n.controlCoordinates.pointerOffsetX2)*(n.controlCoordinates.pointerOffsetX-n.controlCoordinates.pointerOffsetX2)+(n.controlCoordinates.pointerOffsetY-n.controlCoordinates.pointerOffsetY2)*(n.controlCoordinates.pointerOffsetY-n.controlCoordinates.pointerOffsetY2)),null===n.controlCoordinates.initialPinchDistance&&(n.controlCoordinates.initialPinchDistance=n.controlCoordinates.targetPinchDistance),1<=Math.abs(n.controlCoordinates.initialPinchDistance-n.controlCoordinates.targetPinchDistance)&&(n.controlCoordinates.targetScale=n.minMax(n.controlCoordinates.targetPinchDistance/n.controlCoordinates.initialPinchDistance*n.controlCoordinates.initialScale,1,n.options.maxZoom),n.controlCoordinates.limitOffsetX=(n.controlCoordinates.imgWidth*n.controlCoordinates.targetScale-n.controlCoordinates.containerWidth)/2,n.controlCoordinates.limitOffsetY=(n.controlCoordinates.imgHeight*n.controlCoordinates.targetScale-n.controlCoordinates.containerHeight)/2,n.controlCoordinates.scaleDifference=n.controlCoordinates.targetScale-n.controlCoordinates.initialScale,n.controlCoordinates.targetOffsetX=n.controlCoordinates.imgWidth*n.controlCoordinates.targetScale<=n.controlCoordinates.containerWidth?0:n.minMax(n.controlCoordinates.initialOffsetX-(n.controlCoordinates.pinchOffsetX-n.controlCoordinates.containerOffsetX-n.controlCoordinates.containerWidth/2-n.controlCoordinates.initialOffsetX)/(n.controlCoordinates.targetScale-n.controlCoordinates.scaleDifference)*n.controlCoordinates.scaleDifference,-1*n.controlCoordinates.limitOffsetX,n.controlCoordinates.limitOffsetX),n.controlCoordinates.targetOffsetY=n.controlCoordinates.imgHeight*n.controlCoordinates.targetScale<=n.controlCoordinates.containerHeight?0:n.minMax(n.controlCoordinates.initialOffsetY-(n.controlCoordinates.pinchOffsetY-n.controlCoordinates.containerOffsetY-n.controlCoordinates.containerHeight/2-n.controlCoordinates.initialOffsetY)/(n.controlCoordinates.targetScale-n.controlCoordinates.scaleDifference)*n.controlCoordinates.scaleDifference,-1*n.controlCoordinates.limitOffsetY,n.controlCoordinates.limitOffsetY),n.zoomPanElement(n.controlCoordinates.targetOffsetX+"px",n.controlCoordinates.targetOffsetY+"px",n.controlCoordinates.targetScale),1<n.controlCoordinates.targetScale&&(n.controlCoordinates.zoomed=!0,n.domNodes.caption.style.opacity||"none"===n.domNodes.caption.style.display||n.fadeOut(n.domNodes.caption,n.options.fadeSpeed)),n.controlCoordinates.initialPinchDistance=n.controlCoordinates.targetPinchDistance,n.controlCoordinates.initialScale=n.controlCoordinates.targetScale,n.controlCoordinates.initialOffsetX=n.controlCoordinates.targetOffsetX,n.controlCoordinates.initialOffsetY=n.controlCoordinates.targetOffsetY)):(n.controlCoordinates.targetScale=n.controlCoordinates.initialScale,n.controlCoordinates.limitOffsetX=(n.controlCoordinates.imgWidth*n.controlCoordinates.targetScale-n.controlCoordinates.containerWidth)/2,n.controlCoordinates.limitOffsetY=(n.controlCoordinates.imgHeight*n.controlCoordinates.targetScale-n.controlCoordinates.containerHeight)/2,n.controlCoordinates.targetOffsetX=n.controlCoordinates.imgWidth*n.controlCoordinates.targetScale<=n.controlCoordinates.containerWidth?0:n.minMax(n.controlCoordinates.pointerOffsetX-(n.controlCoordinates.initialPointerOffsetX-n.controlCoordinates.initialOffsetX),-1*n.controlCoordinates.limitOffsetX,n.controlCoordinates.limitOffsetX),n.controlCoordinates.targetOffsetY=n.controlCoordinates.imgHeight*n.controlCoordinates.targetScale<=n.controlCoordinates.containerHeight?0:n.minMax(n.controlCoordinates.pointerOffsetY-(n.controlCoordinates.initialPointerOffsetY-n.controlCoordinates.initialOffsetY),-1*n.controlCoordinates.limitOffsetY,n.controlCoordinates.limitOffsetY),Math.abs(n.controlCoordinates.targetOffsetX)===Math.abs(n.controlCoordinates.limitOffsetX)&&(n.controlCoordinates.initialOffsetX=n.controlCoordinates.targetOffsetX,n.controlCoordinates.initialPointerOffsetX=n.controlCoordinates.pointerOffsetX),Math.abs(n.controlCoordinates.targetOffsetY)===Math.abs(n.controlCoordinates.limitOffsetY)&&(n.controlCoordinates.initialOffsetY=n.controlCoordinates.targetOffsetY,n.controlCoordinates.initialPointerOffsetY=n.controlCoordinates.pointerOffsetY),n.setZoomData(n.controlCoordinates.initialScale,n.controlCoordinates.targetOffsetX,n.controlCoordinates.targetOffsetY),n.zoomPanElement(n.controlCoordinates.targetOffsetX+"px",n.controlCoordinates.targetOffsetY+"px",n.controlCoordinates.targetScale))}if("mousemove"===e.type&&n.controlCoordinates.mousedown){if("touchmove"==e.type)return!0;if(!1===n.controlCoordinates.capture)return!1;n.controlCoordinates.pointerOffsetX=e.clientX,n.controlCoordinates.pointerOffsetY=e.clientY,n.controlCoordinates.targetScale=n.controlCoordinates.initialScale,n.controlCoordinates.limitOffsetX=(n.controlCoordinates.imgWidth*n.controlCoordinates.targetScale-n.controlCoordinates.containerWidth)/2,n.controlCoordinates.limitOffsetY=(n.controlCoordinates.imgHeight*n.controlCoordinates.targetScale-n.controlCoordinates.containerHeight)/2,n.controlCoordinates.targetOffsetX=n.controlCoordinates.imgWidth*n.controlCoordinates.targetScale<=n.controlCoordinates.containerWidth?0:n.minMax(n.controlCoordinates.pointerOffsetX-(n.controlCoordinates.initialPointerOffsetX-n.controlCoordinates.initialOffsetX),-1*n.controlCoordinates.limitOffsetX,n.controlCoordinates.limitOffsetX),n.controlCoordinates.targetOffsetY=n.controlCoordinates.imgHeight*n.controlCoordinates.targetScale<=n.controlCoordinates.containerHeight?0:n.minMax(n.controlCoordinates.pointerOffsetY-(n.controlCoordinates.initialPointerOffsetY-n.controlCoordinates.initialOffsetY),-1*n.controlCoordinates.limitOffsetY,n.controlCoordinates.limitOffsetY),Math.abs(n.controlCoordinates.targetOffsetX)===Math.abs(n.controlCoordinates.limitOffsetX)&&(n.controlCoordinates.initialOffsetX=n.controlCoordinates.targetOffsetX,n.controlCoordinates.initialPointerOffsetX=n.controlCoordinates.pointerOffsetX),Math.abs(n.controlCoordinates.targetOffsetY)===Math.abs(n.controlCoordinates.limitOffsetY)&&(n.controlCoordinates.initialOffsetY=n.controlCoordinates.targetOffsetY,n.controlCoordinates.initialPointerOffsetY=n.controlCoordinates.pointerOffsetY),n.setZoomData(n.controlCoordinates.initialScale,n.controlCoordinates.targetOffsetX,n.controlCoordinates.targetOffsetY),n.zoomPanElement(n.controlCoordinates.targetOffsetX+"px",n.controlCoordinates.targetOffsetY+"px",n.controlCoordinates.targetScale)}n.controlCoordinates.zoomed||(n.controlCoordinates.swipeEnd=e.pageX||e.touches[0].pageX,n.controlCoordinates.swipeYEnd=e.pageY||e.touches[0].pageY,n.controlCoordinates.swipeDiff=n.controlCoordinates.swipeStart-n.controlCoordinates.swipeEnd,n.controlCoordinates.swipeYDiff=n.controlCoordinates.swipeYStart-n.controlCoordinates.swipeYEnd,n.options.animationSlide&&n.slide(0,-n.controlCoordinates.swipeDiff+"px"))}),this.addEventListener(this.domNodes.image,["touchend."+this.eventNamespace,"mouseup."+this.eventNamespace,"touchcancel."+this.eventNamespace,"mouseleave."+this.eventNamespace,"pointerup","pointercancel","MSPointerUp","MSPointerCancel"],function(e){if(n.isTouchDevice&&"touchend"===e.type&&(n.controlCoordinates.touchCount=e.touches.length,0===n.controlCoordinates.touchCount?(n.currentImage&&n.setZoomData(n.controlCoordinates.initialScale,n.controlCoordinates.targetOffsetX,n.controlCoordinates.targetOffsetY),1===n.controlCoordinates.initialScale&&(n.controlCoordinates.zoomed=!1,"none"===n.domNodes.caption.style.display&&n.fadeIn(n.domNodes.caption,n.options.fadeSpeed)),n.controlCoordinates.initialPinchDistance=null,n.controlCoordinates.capture=!1):1===n.controlCoordinates.touchCount?(n.controlCoordinates.initialPointerOffsetX=e.touches[0].clientX,n.controlCoordinates.initialPointerOffsetY=e.touches[0].clientY):1<n.controlCoordinates.touchCount&&(n.controlCoordinates.initialPinchDistance=null)),n.controlCoordinates.mousedown){var t=!(n.controlCoordinates.mousedown=!1);n.options.loop||(0===n.currentImageIndex&&n.controlCoordinates.swipeDiff<0&&(t=!1),n.currentImageIndex>=n.relatedElements.length-1&&0<n.controlCoordinates.swipeDiff&&(t=!1)),Math.abs(n.controlCoordinates.swipeDiff)>n.options.swipeTolerance&&t?n.loadImage(0<n.controlCoordinates.swipeDiff?1:-1):n.options.animationSlide&&n.slide(n.options.animationSpeed/1e3,"0px"),n.options.swipeClose&&50<Math.abs(n.controlCoordinates.swipeYDiff)&&Math.abs(n.controlCoordinates.swipeDiff)<n.options.swipeTolerance&&n.close()}}),this.addEventListener(this.domNodes.image,["dblclick"],function(e){if(!n.isTouchDevice)return n.controlCoordinates.initialPointerOffsetX=e.clientX,n.controlCoordinates.initialPointerOffsetY=e.clientY,n.controlCoordinates.containerHeight=n.getDimensions(n.domNodes.image).height,n.controlCoordinates.containerWidth=n.getDimensions(n.domNodes.image).width,n.controlCoordinates.imgHeight=n.getDimensions(n.currentImage).height,n.controlCoordinates.imgWidth=n.getDimensions(n.currentImage).width,n.controlCoordinates.containerOffsetX=n.domNodes.image.offsetLeft,n.controlCoordinates.containerOffsetY=n.domNodes.image.offsetTop,n.currentImage.classList.add("sl-transition"),n.controlCoordinates.zoomed?(n.controlCoordinates.initialScale=1,n.setZoomData(n.controlCoordinates.initialScale,0,0),n.zoomPanElement("0px","0px",n.controlCoordinates.initialScale),n.controlCoordinates.zoomed=!1,"none"===n.domNodes.caption.style.display&&n.fadeIn(n.domNodes.caption,n.options.fadeSpeed)):(n.controlCoordinates.initialScale=n.options.doubleTapZoom,n.setZoomData(n.controlCoordinates.initialScale,0,0),n.zoomPanElement("0px","0px",n.controlCoordinates.initialScale),n.domNodes.caption.style.opacity||"none"===n.domNodes.caption.style.display||n.fadeOut(n.domNodes.caption,n.options.fadeSpeed),n.controlCoordinates.zoomed=!0),setTimeout(function(){n.currentImage&&n.currentImage.classList.remove("sl-transition")},200),!(n.controlCoordinates.capture=!0)})}},{key:"getDimensions",value:function(e){var t=window.getComputedStyle(e),n=e.offsetHeight,r=e.offsetWidth,i=parseFloat(t.borderTopWidth);return{height:n-parseFloat(t.borderBottomWidth)-i-parseFloat(t.paddingTop)-parseFloat(t.paddingBottom),width:r-parseFloat(t.borderLeftWidth)-parseFloat(t.borderRightWidth)-parseFloat(t.paddingLeft)-parseFloat(t.paddingRight)}}},{key:"updateHash",value:function(){var e="pid="+(this.currentImageIndex+1),t=window.location.href.split("#")[0]+"#"+e;this.hashReseted=!1,this.pushStateSupport?window.history[this.historyHasChanges?"replaceState":"pushState"]("",document.title,t):this.historyHasChanges?window.location.replace(t):window.location.hash=e,this.historyHasChanges||(this.urlChangedOnce=!0),this.historyHasChanges=!0}},{key:"resetHash",value:function(){this.hashReseted=!0,this.urlChangedOnce?history.back():this.pushStateSupport?history.pushState("",document.title,window.location.pathname+window.location.search):window.location.hash="",clearTimeout(this.historyUpdateTimeout)}},{key:"updateURL",value:function(){clearTimeout(this.historyUpdateTimeout),this.historyHasChanges?this.historyUpdateTimeout=setTimeout(this.updateHash.bind(this),800):this.updateHash()}},{key:"setCaption",value:function(e,t){var n=this;this.options.captions&&e&&""!==e&&void 0!==e&&(this.hide(this.domNodes.caption),this.domNodes.caption.style.width=t+"px",this.domNodes.caption.innerHTML=e,this.domNodes.image.appendChild(this.domNodes.caption),setTimeout(function(){n.fadeIn(n.domNodes.caption,n.options.fadeSpeed)},this.options.captionDelay))}},{key:"slide",value:function(e,t){if(!this.transitionCapable)return this.domNodes.image.style.left=t;this.domNodes.image.style[this.transitionPrefix+"transform"]="translateX("+t+")",this.domNodes.image.style[this.transitionPrefix+"transition"]=this.transitionPrefix+"transform "+e+"s linear"}},{key:"getRelated",value:function(t){return t&&!1!==t&&"nofollow"!==t?Array.from(this.elements).filter(function(e){return e.getAttribute("rel")===t}):this.elements}},{key:"openImage",value:function(e){var t=this;e.dispatchEvent(new Event("show."+this.eventNamespace)),this.options.disableScroll&&(this.globalScrollbarWidth=this.toggleScrollbar("hide")),this.options.htmlClass&&""!==this.options.htmlClass&&document.querySelector("html").classList.add(this.options.htmlClass),document.body.appendChild(this.domNodes.wrapper),this.domNodes.wrapper.appendChild(this.domNodes.image),this.options.overlay&&document.body.appendChild(this.domNodes.overlay),this.relatedElements=this.getRelated(e.rel),this.options.showCounter&&(1==this.relatedElements.length&&this.domNodes.wrapper.contains(this.domNodes.counter)?this.domNodes.wrapper.removeChild(this.domNodes.counter):1<this.relatedElements.length&&!this.domNodes.wrapper.contains(this.domNodes.counter)&&this.domNodes.wrapper.appendChild(this.domNodes.counter)),this.isAnimating=!0,this.currentImageIndex=this.relatedElements.indexOf(e);var n=e.getAttribute(this.options.sourceAttr);this.currentImage=document.createElement("img"),this.currentImage.style.display="none",this.currentImage.setAttribute("src",n),this.currentImage.dataset.scale=1,this.currentImage.dataset.translateX=0,this.currentImage.dataset.translateY=0,-1===this.loadedImages.indexOf(n)&&this.loadedImages.push(n),this.domNodes.image.innerHTML="",this.domNodes.image.setAttribute("style",""),this.domNodes.image.appendChild(this.currentImage),this.fadeIn(this.domNodes.overlay,this.options.fadeSpeed),this.fadeIn([this.domNodes.counter,this.domNodes.navigation,this.domNodes.closeButton],this.options.fadeSpeed),this.show(this.domNodes.spinner),this.domNodes.counter.querySelector(".sl-current").innerHTML=this.currentImageIndex+1,this.domNodes.counter.querySelector(".sl-total").innerHTML=this.relatedElements.length,this.adjustImage(),this.options.preloading&&this.preload(),setTimeout(function(){e.dispatchEvent(new Event("shown."+t.eventNamespace))},this.options.animationSpeed)}},{key:"forceFocus",value:function(){var t=this;this.removeEventListener(document,"focusin."+this.eventNamespace),this.addEventListener(document,"focusin."+this.eventNamespace,function(e){document===e.target||t.domNodes.wrapper===e.target||t.domNodes.wrapper.contains(e.target)||t.domNodes.wrapper.focus()})}},{key:"addEventListener",value:function(e,t,n,r){e=this.wrap(e),t=this.wrap(t);var i,o=f(e);try{for(o.s();!(i=o.n()).done;){var a=i.value;a.namespaces||(a.namespaces={});var s,l=f(t);try{for(l.s();!(s=l.n()).done;){var c=s.value,u=r||!1;a.namespaces[c]=n,a.addEventListener(c.split(".")[0],n,u)}}catch(e){l.e(e)}finally{l.f()}}}catch(e){o.e(e)}finally{o.f()}}},{key:"removeEventListener",value:function(e,t){e=this.wrap(e),t=this.wrap(t);var n,r=f(e);try{for(r.s();!(n=r.n()).done;){var i,o=n.value,a=f(t);try{for(a.s();!(i=a.n()).done;){var s=i.value;o.namespaces&&o.namespaces[s]&&(o.removeEventListener(s.split(".")[0],o.namespaces[s]),delete o.namespaces[s])}}catch(e){a.e(e)}finally{a.f()}}}catch(e){r.e(e)}finally{r.f()}}},{key:"fadeOut",value:function(s,e,l){var t,c=this,n=f(s=this.wrap(s));try{for(n.s();!(t=n.n()).done;){t.value.style.opacity=1}}catch(e){n.e(e)}finally{n.f()}this.isFadeIn=!1;var u=16.66666/(e||this.options.fadeSpeed);!function e(){var t=parseFloat(s[0].style.opacity);if((t-=u)<0){var n,r=f(s);try{for(r.s();!(n=r.n()).done;){var i=n.value;i.style.display="none",i.style.opacity=""}}catch(e){r.e(e)}finally{r.f()}l&&l.call(c,s)}else{var o,a=f(s);try{for(a.s();!(o=a.n()).done;){o.value.style.opacity=t}}catch(e){a.e(e)}finally{a.f()}requestAnimationFrame(e)}}()}},{key:"fadeIn",value:function(a,e,s,t){var n,l=this,r=f(a=this.wrap(a));try{for(r.s();!(n=r.n()).done;){var i=n.value;i.style.opacity=0,i.style.display=t||"block"}}catch(e){r.e(e)}finally{r.f()}this.isFadeIn=!0;var c=parseFloat(a[0].dataset.opacityTarget||1),u=16.66666*c/(e||this.options.fadeSpeed);!function e(){var t=parseFloat(a[0].style.opacity);if((t+=u)>c){var n,r=f(a);try{for(r.s();!(n=r.n()).done;){n.value.style.opacity=""}}catch(e){r.e(e)}finally{r.f()}s&&s.call(l,a)}else{var i,o=f(a);try{for(o.s();!(i=o.n()).done;){i.value.style.opacity=t}}catch(e){o.e(e)}finally{o.f()}if(!l.isFadeIn)return;requestAnimationFrame(e)}}()}},{key:"hide",value:function(e){var t,n=f(e=this.wrap(e));try{for(n.s();!(t=n.n()).done;){var r=t.value;r.dataset.initialDisplay=r.style.display,r.style.display="none"}}catch(e){n.e(e)}finally{n.f()}}},{key:"show",value:function(e,t){var n,r=f(e=this.wrap(e));try{for(r.s();!(n=r.n()).done;){var i=n.value;i.style.display=i.dataset.initialDisplay||t||"block"}}catch(e){r.e(e)}finally{r.f()}}},{key:"wrap",value:function(e){return"function"==typeof e[Symbol.iterator]&&"string"!=typeof e?e:[e]}},{key:"on",value:function(e,t){e=this.wrap(e);var n,r=f(this.elements);try{for(r.s();!(n=r.n()).done;){var i=n.value;i.fullyNamespacedEvents||(i.fullyNamespacedEvents={});var o,a=f(e);try{for(a.s();!(o=a.n()).done;){var s=o.value;i.fullyNamespacedEvents[s]=t,i.addEventListener(s,t)}}catch(e){a.e(e)}finally{a.f()}}}catch(e){r.e(e)}finally{r.f()}return this}},{key:"off",value:function(e){e=this.wrap(e);var t,n=f(this.elements);try{for(n.s();!(t=n.n()).done;){var r,i=t.value,o=f(e);try{for(o.s();!(r=o.n()).done;){var a=r.value;void 0!==i.fullyNamespacedEvents&&a in i.fullyNamespacedEvents&&i.removeEventListener(a,i.fullyNamespacedEvents[a])}}catch(e){o.e(e)}finally{o.f()}}}catch(e){n.e(e)}finally{n.f()}return this}},{key:"open",value:function(e){e=e||this.elements[0],"undefined"!=typeof jQuery&&e instanceof jQuery&&(e=e.get(0)),this.initialImageIndex=this.elements.indexOf(e),-1<this.initialImageIndex&&this.openImage(e)}},{key:"next",value:function(){this.loadImage(1)}},{key:"prev",value:function(){this.loadImage(-1)}},{key:"destroy",value:function(){this.off(["close."+this.eventNamespace,"closed."+this.eventNamespace,"nextImageLoaded."+this.eventNamespace,"prevImageLoaded."+this.eventNamespace,"change."+this.eventNamespace,"nextDone."+this.eventNamespace,"prevDone."+this.eventNamespace,"error."+this.eventNamespace,"changed."+this.eventNamespace,"next."+this.eventNamespace,"prev."+this.eventNamespace,"show."+this.eventNamespace,"shown."+this.eventNamespace]),this.removeEventListener(this.elements,"click."+this.eventNamespace),this.removeEventListener(document,"focusin."+this.eventNamespace),this.removeEventListener(document.body,"contextmenu."+this.eventNamespace),this.removeEventListener(document.body,"keyup."+this.eventNamespace),this.removeEventListener(this.domNodes.navigation.getElementsByTagName("button"),"click."+this.eventNamespace),this.removeEventListener(this.domNodes.closeButton,"click."+this.eventNamespace),this.removeEventListener(window,"resize."+this.eventNamespace),this.removeEventListener(window,"hashchange."+this.eventNamespace),this.close(),this.isOpen&&(document.body.removeChild(this.domNodes.wrapper),document.body.removeChild(this.domNodes.overlay)),this.elements=null}},{key:"refresh",value:function(){if(!this.initialSelector)throw"refreshing only works when you initialize using a selector!";var e=this.options,t=this.initialSelector;return this.destroy(),this.constructor(t,e),this}},{key:"hash",get:function(){return window.location.hash.substring(1)}}])&&r(e.prototype,t),n&&r(e,n),i}(),t=e;i.default=t,n.SimpleLightbox=e}).call(this)}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}]},{},[376]);
\ No newline at end of file
diff --git a/photos/simplelightbox-master/dist/simple-lightbox.min.css b/photos/simplelightbox-master/dist/simple-lightbox.min.css
new file mode 100644
index 0000000000000000000000000000000000000000..9a3f6186bc931a283d9b7378f931fef25b7a34ea
--- /dev/null
+++ b/photos/simplelightbox-master/dist/simple-lightbox.min.css
@@ -0,0 +1,7 @@
+/*!
+	By André Rinas, www.andrerinas.de
+	Documentation, www.simplelightbox.de
+	Available for use under the MIT License
+	Version 2.7.0
+*/
+body.hidden-scroll{overflow:hidden}.sl-overlay{position:fixed;left:0;right:0;top:0;bottom:0;background:#fff;opacity:.7;display:none;z-index:1035}.sl-wrapper{z-index:1040;width:100%;height:100%;left:0;top:0;position:fixed}.sl-wrapper *{box-sizing:border-box}.sl-wrapper button{border:0 none;background:transparent;font-size:28px;padding:0;cursor:pointer}.sl-wrapper button:hover{opacity:0.7}.sl-wrapper .sl-close{display:none;position:fixed;right:30px;top:30px;z-index:10060;margin-top:-14px;margin-right:-14px;height:44px;width:44px;line-height:44px;font-family:Arial,Baskerville,monospace;color:#000;font-size:3rem}.sl-wrapper .sl-counter{display:none;position:fixed;top:30px;left:30px;z-index:1060;color:#000;font-size:1rem}.sl-wrapper .sl-navigation{width:100%;display:none}.sl-wrapper .sl-navigation button{position:fixed;top:50%;margin-top:-22px;height:44px;width:22px;line-height:44px;text-align:center;display:block;z-index:10060;font-family:Arial,Baskerville,monospace;color:#000}.sl-wrapper .sl-navigation button.sl-next{right:5px;font-size:2rem}.sl-wrapper .sl-navigation button.sl-prev{left:5px;font-size:2rem}@media (min-width: 35.5em){.sl-wrapper .sl-navigation button{width:44px}.sl-wrapper .sl-navigation button.sl-next{right:10px;font-size:3rem}.sl-wrapper .sl-navigation button.sl-prev{left:10px;font-size:3rem}}@media (min-width: 50em){.sl-wrapper .sl-navigation button{width:44px}.sl-wrapper .sl-navigation button.sl-next{right:20px;font-size:3rem}.sl-wrapper .sl-navigation button.sl-prev{left:20px;font-size:3rem}}.sl-wrapper.sl-dir-rtl .sl-navigation{direction:ltr}.sl-wrapper .sl-image{position:fixed;-ms-touch-action:none;touch-action:none;z-index:10000}.sl-wrapper .sl-image img{margin:0;padding:0;display:block;border:0 none;width:100%;height:auto}@media (min-width: 35.5em){.sl-wrapper .sl-image img{border:0 none}}@media (min-width: 50em){.sl-wrapper .sl-image img{border:0 none}}.sl-wrapper .sl-image iframe{background:#000;border:0 none}@media (min-width: 35.5em){.sl-wrapper .sl-image iframe{border:0 none}}@media (min-width: 50em){.sl-wrapper .sl-image iframe{border:0 none}}.sl-wrapper .sl-image .sl-caption{display:none;padding:10px;color:#fff;background:rgba(0,0,0,0.8);font-size:1rem;position:absolute;bottom:0;left:0;right:0}.sl-wrapper .sl-image .sl-caption.pos-top{bottom:auto;top:0}.sl-wrapper .sl-image .sl-caption.pos-outside{bottom:auto}.sl-wrapper .sl-image .sl-download{display:none;position:absolute;bottom:5px;right:5px;color:#000;z-index:1060}.sl-spinner{display:none;border:5px solid #333;border-radius:40px;height:40px;left:50%;margin:-20px 0 0 -20px;opacity:0;position:fixed;top:50%;width:40px;z-index:1007;-webkit-animation:pulsate 1s ease-out infinite;-moz-animation:pulsate 1s ease-out infinite;-ms-animation:pulsate 1s ease-out infinite;-o-animation:pulsate 1s ease-out infinite;animation:pulsate 1s ease-out infinite}.sl-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}.sl-transition{transition:-moz-transform ease 200ms;transition:-ms-transform ease 200ms;transition:-o-transform ease 200ms;transition:-webkit-transform ease 200ms;transition:transform ease 200ms}@-webkit-keyframes pulsate{0%{transform:scale(0.1);opacity:0.0}50%{opacity:1}100%{transform:scale(1.2);opacity:0}}@keyframes pulsate{0%{transform:scale(0.1);opacity:0.0}50%{opacity:1}100%{transform:scale(1.2);opacity:0}}@-moz-keyframes pulsate{0%{transform:scale(0.1);opacity:0.0}50%{opacity:1}100%{transform:scale(1.2);opacity:0}}@-o-keyframes pulsate{0%{transform:scale(0.1);opacity:0.0}50%{opacity:1}100%{transform:scale(1.2);opacity:0}}@-ms-keyframes pulsate{0%{transform:scale(0.1);opacity:0.0}50%{opacity:1}100%{transform:scale(1.2);opacity:0}}
diff --git a/photos/simplelightbox-master/dist/simple-lightbox.min.js b/photos/simplelightbox-master/dist/simple-lightbox.min.js
new file mode 100644
index 0000000000000000000000000000000000000000..dc8ce01404c5e62073b7610208e82557a9a671ed
--- /dev/null
+++ b/photos/simplelightbox-master/dist/simple-lightbox.min.js
@@ -0,0 +1 @@
+!function s(a,r,l){function d(e,t){if(!r[e]){if(!a[e]){var o="function"==typeof require&&require;if(!t&&o)return o(e,!0);if(c)return c(e,!0);var i=new Error("Cannot find module '"+e+"'");throw i.code="MODULE_NOT_FOUND",i}var n=r[e]={exports:{}};a[e][0].call(n.exports,function(t){return d(a[e][1][t]||t)},n,n.exports,s,a,r,l)}return r[e].exports}for(var c="function"==typeof require&&require,t=0;t<l.length;t++)d(l[t]);return d}({1:[function(t,e,n){(function(o){(function(){"use strict";function h(t,e){var o;if("undefined"==typeof Symbol||null==t[Symbol.iterator]){if(Array.isArray(t)||(o=function(t,e){if(!t)return;if("string"==typeof t)return l(t,e);var o=Object.prototype.toString.call(t).slice(8,-1);"Object"===o&&t.constructor&&(o=t.constructor.name);if("Map"===o||"Set"===o)return Array.from(t);if("Arguments"===o||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(o))return l(t,e)}(t))||e&&t&&"number"==typeof t.length){o&&(t=o);var i=0,n=function(){};return{s:n,n:function(){return i>=t.length?{done:!0}:{done:!1,value:t[i++]}},e:function(t){throw t},f:n}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var s,a=!0,r=!1;return{s:function(){o=t[Symbol.iterator]()},n:function(){var t=o.next();return a=t.done,t},e:function(t){r=!0,s=t},f:function(){try{a||null==o.return||o.return()}finally{if(r)throw s}}}}function l(t,e){(null==e||e>t.length)&&(e=t.length);for(var o=0,i=new Array(e);o<e;o++)i[o]=t[o];return i}function i(t,e){for(var o=0;o<e.length;o++){var i=e[o];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function s(t,e,o){return e in t?Object.defineProperty(t,e,{value:o,enumerable:!0,configurable:!0,writable:!0}):t[e]=o,t}Object.defineProperty(n,"__esModule",{value:!0}),n.default=void 0;var t=function(){function n(t,e){var o=this;if(!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,n),s(this,"defaultOptions",{sourceAttr:"href",overlay:!0,spinner:!0,nav:!0,navText:["&lsaquo;","&rsaquo;"],captions:!0,captionDelay:0,captionSelector:"img",captionType:"attr",captionsData:"title",captionPosition:"bottom",captionClass:"",close:!0,closeText:"&times;",swipeClose:!0,showCounter:!0,fileExt:"png|jpg|jpeg|gif|webp",animationSlide:!0,animationSpeed:250,preloading:!0,enableKeyboard:!0,loop:!0,rel:!1,docClose:!0,swipeTolerance:50,className:"simple-lightbox",widthRatio:.8,heightRatio:.9,scaleImageToRatio:!1,disableRightClick:!1,disableScroll:!0,alertError:!0,alertErrorMessage:"Image not found, next image will be loaded",additionalHtml:!1,history:!0,throttleInterval:0,doubleTapZoom:2,maxZoom:10,htmlClass:"has-lightbox",rtl:!1,fixedClass:"sl-fixed",fadeSpeed:300,uniqueImages:!0,focus:!0}),s(this,"transitionPrefix",void 0),s(this,"transitionCapable",!1),s(this,"isTouchDevice","ontouchstart"in window),s(this,"initialLocationHash",void 0),s(this,"pushStateSupport","pushState"in history),s(this,"isOpen",!1),s(this,"isAnimating",!1),s(this,"isClosing",!1),s(this,"isFadeIn",!1),s(this,"urlChangedOnce",!1),s(this,"hashReseted",!1),s(this,"historyHasChanges",!1),s(this,"historyUpdateTimeout",null),s(this,"currentImage",void 0),s(this,"eventNamespace","simplelightbox"),s(this,"domNodes",{}),s(this,"loadedImages",[]),s(this,"initialImageIndex",0),s(this,"currentImageIndex",0),s(this,"initialSelector",null),s(this,"globalScrollbarWidth",0),s(this,"controlCoordinates",{swipeDiff:0,swipeYDiff:0,swipeStart:0,swipeEnd:0,swipeYStart:0,swipeYEnd:0,mousedown:!1,imageLeft:0,zoomed:!1,containerHeight:0,containerWidth:0,containerOffsetX:0,containerOffsetY:0,imgHeight:0,imgWidth:0,capture:!1,initialOffsetX:0,initialOffsetY:0,initialPointerOffsetX:0,initialPointerOffsetY:0,initialPointerOffsetX2:0,initialPointerOffsetY2:0,initialScale:1,initialPinchDistance:0,pointerOffsetX:0,pointerOffsetY:0,pointerOffsetX2:0,pointerOffsetY2:0,targetOffsetX:0,targetOffsetY:0,targetScale:0,pinchOffsetX:0,pinchOffsetY:0,limitOffsetX:0,limitOffsetY:0,scaleDifference:0,targetPinchDistance:0,touchCount:0,doubleTapped:!1,touchmoveCount:0}),this.options=Object.assign(this.defaultOptions,e),"string"==typeof t?(this.initialSelector=t,this.elements=Array.from(document.querySelectorAll(t))):this.elements=void 0!==t.length&&0<t.length?Array.from(t):[t],this.relatedElements=[],this.transitionPrefix=this.calculateTransitionPrefix(),this.transitionCapable=!1!==this.transitionPrefix,this.initialLocationHash=this.hash,this.options.rel&&(this.elements=this.getRelated(this.options.rel)),this.options.uniqueImages){var i=[];this.elements=Array.from(this.elements).filter(function(t){var e=t.getAttribute(o.options.sourceAttr);return-1===i.indexOf(e)&&(i.push(e),!0)})}this.createDomNodes(),this.options.close&&this.domNodes.wrapper.appendChild(this.domNodes.closeButton),this.options.nav&&this.domNodes.wrapper.appendChild(this.domNodes.navigation),this.options.spinner&&this.domNodes.wrapper.appendChild(this.domNodes.spinner),this.addEventListener(this.elements,"click."+this.eventNamespace,function(t){if(o.isValidLink(t.currentTarget)){if(t.preventDefault(),o.isAnimating)return!1;o.initialImageIndex=o.elements.indexOf(t.currentTarget),o.openImage(t.currentTarget)}}),this.options.docClose&&this.addEventListener(this.domNodes.wrapper,["click."+this.eventNamespace,"touchstart."+this.eventNamespace],function(t){o.isOpen&&t.target===t.currentTarget&&o.close()}),this.options.disableRightClick&&this.addEventListener(document.body,"contextmenu."+this.eventNamespace,function(t){t.target.classList.contains("sl-overlay")&&t.preventDefault()}),this.options.enableKeyboard&&this.addEventListener(document.body,"keyup."+this.eventNamespace,this.throttle(function(t){if(o.controlCoordinates.swipeDiff=0,o.isAnimating&&"Escape"===t.key)return o.currentImage.setAttribute("src",""),o.isAnimating=!1,o.close();o.isOpen&&(t.preventDefault(),"Escape"===t.key&&o.close(),!o.isAnimating&&-1<["ArrowLeft","ArrowRight"].indexOf(t.key)&&o.loadImage("ArrowRight"===t.key?1:-1))},this.options.throttleInterval)),this.addEvents()}var t,e,o;return t=n,(e=[{key:"createDomNodes",value:function(){this.domNodes.overlay=document.createElement("div"),this.domNodes.overlay.classList.add("sl-overlay"),this.domNodes.overlay.dataset.opacityTarget=".7",this.domNodes.closeButton=document.createElement("button"),this.domNodes.closeButton.classList.add("sl-close"),this.domNodes.closeButton.innerHTML=this.options.closeText,this.domNodes.spinner=document.createElement("div"),this.domNodes.spinner.classList.add("sl-spinner"),this.domNodes.spinner.innerHTML="<div></div>",this.domNodes.navigation=document.createElement("div"),this.domNodes.navigation.classList.add("sl-navigation"),this.domNodes.navigation.innerHTML='<button class="sl-prev">'.concat(this.options.navText[0],'</button><button class="sl-next">').concat(this.options.navText[1],"</button>"),this.domNodes.counter=document.createElement("div"),this.domNodes.counter.classList.add("sl-counter"),this.domNodes.counter.innerHTML='<span class="sl-current"></span>/<span class="sl-total"></span>',this.domNodes.caption=document.createElement("div"),this.domNodes.caption.classList.add("sl-caption","pos-"+this.options.captionPosition),this.options.captionClass&&this.domNodes.caption.classList.add(this.options.captionClass),this.domNodes.image=document.createElement("div"),this.domNodes.image.classList.add("sl-image"),this.domNodes.wrapper=document.createElement("div"),this.domNodes.wrapper.classList.add("sl-wrapper"),this.domNodes.wrapper.setAttribute("tabindex",-1),this.domNodes.wrapper.setAttribute("role","dialog"),this.domNodes.wrapper.setAttribute("aria-hidden",!1),this.options.className&&this.domNodes.wrapper.classList.add(this.options.className),this.options.rtl&&this.domNodes.wrapper.classList.add("sl-dir-rtl")}},{key:"throttle",value:function(t,e){var o;return function(){o||(t.apply(this,arguments),o=!0,setTimeout(function(){return o=!1},e))}}},{key:"isValidLink",value:function(t){return!this.options.fileExt||"pathname"in t&&new RegExp("("+this.options.fileExt+")$","i").test(t.pathname)}},{key:"calculateTransitionPrefix",value:function(){var t=(document.body||document.documentElement).style;return"transition"in t?"":"WebkitTransition"in t?"-webkit-":"MozTransition"in t?"-moz-":"OTransition"in t&&"-o"}},{key:"toggleScrollbar",value:function(t){var i=0,e=[].slice.call(document.querySelectorAll("."+this.options.fixedClass));if("hide"===t){var o=window.innerWidth;if(!o){var n=document.documentElement.getBoundingClientRect();o=n.right-Math.abs(n.left)}if(document.body.clientWidth<o){var s=document.createElement("div"),a=parseInt(document.body.style.paddingRight||0,10);s.classList.add("sl-scrollbar-measure"),document.body.appendChild(s),i=s.offsetWidth-s.clientWidth,document.body.removeChild(s),document.body.dataset.originalPaddingRight=a,0<i&&(document.body.classList.add("hidden-scroll"),document.body.style.paddingRight=a+i+"px",e.forEach(function(t){var e=t.style.paddingRight,o=window.getComputedStyle(t)["padding-right"];t.dataset.originalPaddingRight=e,t.style.paddingRight="".concat(parseFloat(o)+i,"px")}))}}else document.body.classList.remove("hidden-scroll"),document.body.style.paddingRight=document.body.dataset.originalPaddingRight,e.forEach(function(t){var e=t.dataset.originalPaddingRight;void 0!==e&&(t.style.paddingRight=e)});return i}},{key:"close",value:function(){var t=this;if(!this.isOpen||this.isAnimating||this.isClosing)return!1;this.isClosing=!0;var e=this.relatedElements[this.currentImageIndex];for(var o in e.dispatchEvent(new Event("close.simplelightbox")),this.options.history&&(this.historyHasChanges=!1,this.hashReseted||this.resetHash()),this.removeEventListener(document,"focusin."+this.eventNamespace),this.fadeOut(document.querySelectorAll(".sl-image img, .sl-overlay, .sl-close, .sl-navigation, .sl-image .sl-caption, .sl-counter"),this.options.fadeSpeed,function(){t.options.disableScroll&&t.toggleScrollbar("show"),t.options.htmlClass&&""!==t.options.htmlClass&&document.querySelector("html").classList.remove(t.options.htmlClass),document.body.removeChild(t.domNodes.wrapper),document.body.removeChild(t.domNodes.overlay),t.domNodes.additionalHtml=null,e.dispatchEvent(new Event("closed.simplelightbox")),t.isClosing=!1}),this.currentImage=null,this.isOpen=!1,this.isAnimating=!1,this.controlCoordinates)this.controlCoordinates[o]=0;this.controlCoordinates.mousedown=!1,this.controlCoordinates.zoomed=!1,this.controlCoordinates.capture=!1,this.controlCoordinates.initialScale=this.minMax(1,1,this.options.maxZoom),this.controlCoordinates.doubleTapped=!1}},{key:"preload",value:function(){var o=this,i=this.currentImageIndex,t=this.relatedElements.length,e=i+1<0?t-1:t-1<=i+1?0:i+1,n=i-1<0?t-1:t-1<=i-1?0:i-1,s=new Image,a=new Image;s.addEventListener("load",function(t){var e=t.target.getAttribute("src");-1===o.loadedImages.indexOf(e)&&o.loadedImages.push(e),o.relatedElements[i].dispatchEvent(new Event("nextImageLoaded."+o.eventNamespace))}),s.setAttribute("src",this.relatedElements[e].getAttribute(this.options.sourceAttr)),a.addEventListener("load",function(t){var e=t.target.getAttribute("src");-1===o.loadedImages.indexOf(e)&&o.loadedImages.push(e),o.relatedElements[i].dispatchEvent(new Event("prevImageLoaded."+o.eventNamespace))}),a.setAttribute("src",this.relatedElements[n].getAttribute(this.options.sourceAttr))}},{key:"loadImage",value:function(t){var e=this,o=t;this.options.rtl&&(t=-t),this.relatedElements[this.currentImageIndex].dispatchEvent(new Event("change."+this.eventNamespace)),this.relatedElements[this.currentImageIndex].dispatchEvent(new Event((1===t?"next":"prev")+"."+this.eventNamespace));var i=this.currentImageIndex+t;if(this.isAnimating||(i<0||i>=this.relatedElements.length)&&!1===this.options.loop)return!1;this.currentImageIndex=i<0?this.relatedElements.length-1:i>this.relatedElements.length-1?0:i,this.domNodes.counter.querySelector(".sl-current").innerHTML=this.currentImageIndex+1,this.options.animationSlide&&this.slide(this.options.animationSpeed/1e3,-100*o-this.controlCoordinates.swipeDiff+"px"),this.fadeOut(this.domNodes.image,this.options.fadeSpeed,function(){e.isAnimating=!0,e.isClosing?e.isAnimating=!1:setTimeout(function(){var t=e.relatedElements[e.currentImageIndex];e.currentImage.setAttribute("src",t.getAttribute(e.options.sourceAttr)),-1===e.loadedImages.indexOf(t.getAttribute(e.options.sourceAttr))&&e.show(e.domNodes.spinner),e.domNodes.image.contains(e.domNodes.caption)&&e.domNodes.image.removeChild(e.domNodes.caption),e.adjustImage(o),e.options.preloading&&e.preload()},100)})}},{key:"adjustImage",value:function(a){var r=this;if(!this.currentImage)return!1;var t=new Image,l=window.innerWidth*this.options.widthRatio,d=window.innerHeight*this.options.heightRatio;t.setAttribute("src",this.currentImage.getAttribute("src")),this.currentImage.dataset.scale=1,this.currentImage.dataset.translateX=0,this.currentImage.dataset.translateY=0,this.zoomPanElement(0,0,1),t.addEventListener("error",function(t){r.relatedElements[r.currentImageIndex].dispatchEvent(new Event("error."+r.eventNamespace)),r.isAnimating=!1,r.isOpen=!1,r.domNodes.spinner.style.display="none";var e=1===a||-1===a;if(r.initialImageIndex===r.currentImageIndex&&e)return r.close();r.options.alertError&&alert(r.options.alertErrorMessage),r.loadImage(e?a:1)}),t.addEventListener("load",function(t){void 0!==a&&(r.relatedElements[r.currentImageIndex].dispatchEvent(new Event("changed."+r.eventNamespace)),r.relatedElements[r.currentImageIndex].dispatchEvent(new Event((1===a?"nextDone":"prevDone")+"."+r.eventNamespace))),r.options.history&&r.updateURL(),-1===r.loadedImages.indexOf(r.currentImage.getAttribute("src"))&&r.loadedImages.push(r.currentImage.getAttribute("src"));var e,o,i=t.target.width,n=t.target.height;if(r.options.scaleImageToRatio||l<i||d<n){var s=l/d<i/n?i/l:n/d;i/=s,n/=s}r.domNodes.image.style.top=(window.innerHeight-n)/2+"px",r.domNodes.image.style.left=(window.innerWidth-i-r.globalScrollbarWidth)/2+"px",r.domNodes.image.style.width=i+"px",r.domNodes.image.style.height=n+"px",r.domNodes.spinner.style.display="none",r.options.focus&&r.forceFocus(),r.fadeIn(r.currentImage,r.options.fadeSpeed,function(){r.options.focus&&r.domNodes.wrapper.focus()}),r.isOpen=!0,"string"==typeof r.options.captionSelector?e="self"===r.options.captionSelector?r.relatedElements[r.currentImageIndex]:r.relatedElements[r.currentImageIndex].querySelector(r.options.captionSelector):"function"==typeof r.options.captionSelector&&(e=r.options.captionSelector(r.relatedElements[r.currentImageIndex])),r.options.captions&&e&&(o="data"===r.options.captionType?e.dataset[r.options.captionsData]:"text"===r.options.captionType?e.innerHTML:e.getAttribute(r.options.captionsData)),r.options.loop||(0===r.currentImageIndex&&r.hide(r.domNodes.navigation.querySelector(".sl-prev")),r.currentImageIndex>=r.relatedElements.length-1&&r.hide(r.domNodes.navigation.querySelector(".sl-next")),0<r.currentImageIndex&&r.show(r.domNodes.navigation.querySelector(".sl-prev")),r.currentImageIndex<r.relatedElements.length-1&&r.show(r.domNodes.navigation.querySelector(".sl-next"))),1===r.relatedElements.length?r.hide(r.domNodes.navigation.querySelectorAll(".sl-prev, .sl-next")):r.show(r.domNodes.navigation.querySelectorAll(".sl-prev, .sl-next")),1===a||-1===a?(r.options.animationSlide&&(r.slide(0,100*a+"px"),setTimeout(function(){r.slide(r.options.animationSpeed/1e3,"0px")},50)),r.fadeIn(r.domNodes.image,r.options.fadeSpeed,function(){r.isAnimating=!1,r.setCaption(o,i)})):(r.isAnimating=!1,r.setCaption(o,i)),r.options.additionalHtml&&!r.domNodes.additionalHtml&&(r.domNodes.additionalHtml=document.createElement("div"),r.domNodes.additionalHtml.classList.add("sl-additional-html"),r.domNodes.additionalHtml.innerHTML=r.options.additionalHtml,r.domNodes.image.appendChild(r.domNodes.additionalHtml))})}},{key:"zoomPanElement",value:function(t,e,o){this.currentImage.style[this.transitionPrefix+"transform"]="translate("+t+","+e+") scale("+o+")"}},{key:"minMax",value:function(t,e,o){return t<e?e:o<t?o:t}},{key:"setZoomData",value:function(t,e,o){this.currentImage.dataset.scale=t,this.currentImage.dataset.translateX=e,this.currentImage.dataset.translateY=o}},{key:"hashchangeHandler",value:function(){this.isOpen&&this.hash===this.initialLocationHash&&(this.hashReseted=!0,this.close())}},{key:"addEvents",value:function(){var o=this;this.addEventListener(window,"resize."+this.eventNamespace,function(t){o.isOpen&&o.adjustImage()}),this.addEventListener(this.domNodes.closeButton,["click."+this.eventNamespace,"touchstart."+this.eventNamespace],this.close.bind(this)),this.options.history&&setTimeout(function(){o.addEventListener(window,"hashchange."+o.eventNamespace,function(t){o.isOpen&&o.hashchangeHandler()})},40),this.addEventListener(this.domNodes.navigation.getElementsByTagName("button"),"click."+this.eventNamespace,function(t){if(!t.currentTarget.tagName.match(/button/i))return!0;t.preventDefault(),o.controlCoordinates.swipeDiff=0,o.loadImage(t.currentTarget.classList.contains("sl-next")?1:-1)}),this.addEventListener(this.domNodes.image,["touchstart."+this.eventNamespace,"mousedown."+this.eventNamespace],function(t){if("A"===t.target.tagName&&"touchstart"===t.type)return!0;if("mousedown"===t.type)o.controlCoordinates.initialPointerOffsetX=t.clientX,o.controlCoordinates.initialPointerOffsetY=t.clientY,o.controlCoordinates.containerHeight=o.getDimensions(o.domNodes.image).height,o.controlCoordinates.containerWidth=o.getDimensions(o.domNodes.image).width,o.controlCoordinates.imgHeight=o.getDimensions(o.currentImage).height,o.controlCoordinates.imgWidth=o.getDimensions(o.currentImage).width,o.controlCoordinates.containerOffsetX=o.domNodes.image.offsetLeft,o.controlCoordinates.containerOffsetY=o.domNodes.image.offsetTop,o.controlCoordinates.initialOffsetX=parseFloat(o.currentImage.dataset.translateX),o.controlCoordinates.initialOffsetY=parseFloat(o.currentImage.dataset.translateY),o.controlCoordinates.capture=!0;else{if(o.controlCoordinates.touchCount=t.touches.length,o.controlCoordinates.initialPointerOffsetX=t.touches[0].clientX,o.controlCoordinates.initialPointerOffsetY=t.touches[0].clientY,o.controlCoordinates.containerHeight=o.getDimensions(o.domNodes.image).height,o.controlCoordinates.containerWidth=o.getDimensions(o.domNodes.image).width,o.controlCoordinates.imgHeight=o.getDimensions(o.currentImage).height,o.controlCoordinates.imgWidth=o.getDimensions(o.currentImage).width,o.controlCoordinates.containerOffsetX=o.domNodes.image.offsetLeft,o.controlCoordinates.containerOffsetY=o.domNodes.image.offsetTop,1===o.controlCoordinates.touchCount){if(o.controlCoordinates.doubleTapped)return o.currentImage.classList.add("sl-transition"),o.controlCoordinates.zoomed?(o.controlCoordinates.initialScale=1,o.setZoomData(o.controlCoordinates.initialScale,0,0),o.zoomPanElement("0px","0px",o.controlCoordinates.initialScale),o.controlCoordinates.zoomed=!1):(o.controlCoordinates.initialScale=o.options.doubleTapZoom,o.setZoomData(o.controlCoordinates.initialScale,0,0),o.zoomPanElement("0px","0px",o.controlCoordinates.initialScale),o.domNodes.caption.style.opacity||"none"===o.domNodes.caption.style.display||o.fadeOut(o.domNodes.caption,o.options.fadeSpeed),o.controlCoordinates.zoomed=!0),setTimeout(function(){o.currentImage&&o.currentImage.classList.remove("sl-transition")},200),!1;o.controlCoordinates.doubleTapped=!0,setTimeout(function(){o.controlCoordinates.doubleTapped=!1},300),o.controlCoordinates.initialOffsetX=parseFloat(o.currentImage.dataset.translateX),o.controlCoordinates.initialOffsetY=parseFloat(o.currentImage.dataset.translateY)}else 2===o.controlCoordinates.touchCount&&(o.controlCoordinates.initialPointerOffsetX2=t.touches[1].clientX,o.controlCoordinates.initialPointerOffsetY2=t.touches[1].clientY,o.controlCoordinates.initialOffsetX=parseFloat(o.currentImage.dataset.translateX),o.controlCoordinates.initialOffsetY=parseFloat(o.currentImage.dataset.translateY),o.controlCoordinates.pinchOffsetX=(o.controlCoordinates.initialPointerOffsetX+o.controlCoordinates.initialPointerOffsetX2)/2,o.controlCoordinates.pinchOffsetY=(o.controlCoordinates.initialPointerOffsetY+o.controlCoordinates.initialPointerOffsetY2)/2,o.controlCoordinates.initialPinchDistance=Math.sqrt((o.controlCoordinates.initialPointerOffsetX-o.controlCoordinates.initialPointerOffsetX2)*(o.controlCoordinates.initialPointerOffsetX-o.controlCoordinates.initialPointerOffsetX2)+(o.controlCoordinates.initialPointerOffsetY-o.controlCoordinates.initialPointerOffsetY2)*(o.controlCoordinates.initialPointerOffsetY-o.controlCoordinates.initialPointerOffsetY2)));o.controlCoordinates.capture=!0}return!!o.controlCoordinates.mousedown||(o.transitionCapable&&(o.controlCoordinates.imageLeft=parseInt(o.domNodes.image.style.left,10)),o.controlCoordinates.mousedown=!0,o.controlCoordinates.swipeDiff=0,o.controlCoordinates.swipeYDiff=0,o.controlCoordinates.swipeStart=t.pageX||t.touches[0].pageX,o.controlCoordinates.swipeYStart=t.pageY||t.touches[0].pageY,!1)}),this.addEventListener(this.domNodes.image,["touchmove."+this.eventNamespace,"mousemove."+this.eventNamespace,"MSPointerMove"],function(t){if(!o.controlCoordinates.mousedown)return!0;if(t.preventDefault(),"touchmove"===t.type){if(!1===o.controlCoordinates.capture)return!1;o.controlCoordinates.pointerOffsetX=t.touches[0].clientX,o.controlCoordinates.pointerOffsetY=t.touches[0].clientY,o.controlCoordinates.touchCount=t.touches.length,o.controlCoordinates.touchmoveCount++,1<o.controlCoordinates.touchCount?(o.controlCoordinates.pointerOffsetX2=t.touches[1].clientX,o.controlCoordinates.pointerOffsetY2=t.touches[1].clientY,o.controlCoordinates.targetPinchDistance=Math.sqrt((o.controlCoordinates.pointerOffsetX-o.controlCoordinates.pointerOffsetX2)*(o.controlCoordinates.pointerOffsetX-o.controlCoordinates.pointerOffsetX2)+(o.controlCoordinates.pointerOffsetY-o.controlCoordinates.pointerOffsetY2)*(o.controlCoordinates.pointerOffsetY-o.controlCoordinates.pointerOffsetY2)),null===o.controlCoordinates.initialPinchDistance&&(o.controlCoordinates.initialPinchDistance=o.controlCoordinates.targetPinchDistance),1<=Math.abs(o.controlCoordinates.initialPinchDistance-o.controlCoordinates.targetPinchDistance)&&(o.controlCoordinates.targetScale=o.minMax(o.controlCoordinates.targetPinchDistance/o.controlCoordinates.initialPinchDistance*o.controlCoordinates.initialScale,1,o.options.maxZoom),o.controlCoordinates.limitOffsetX=(o.controlCoordinates.imgWidth*o.controlCoordinates.targetScale-o.controlCoordinates.containerWidth)/2,o.controlCoordinates.limitOffsetY=(o.controlCoordinates.imgHeight*o.controlCoordinates.targetScale-o.controlCoordinates.containerHeight)/2,o.controlCoordinates.scaleDifference=o.controlCoordinates.targetScale-o.controlCoordinates.initialScale,o.controlCoordinates.targetOffsetX=o.controlCoordinates.imgWidth*o.controlCoordinates.targetScale<=o.controlCoordinates.containerWidth?0:o.minMax(o.controlCoordinates.initialOffsetX-(o.controlCoordinates.pinchOffsetX-o.controlCoordinates.containerOffsetX-o.controlCoordinates.containerWidth/2-o.controlCoordinates.initialOffsetX)/(o.controlCoordinates.targetScale-o.controlCoordinates.scaleDifference)*o.controlCoordinates.scaleDifference,-1*o.controlCoordinates.limitOffsetX,o.controlCoordinates.limitOffsetX),o.controlCoordinates.targetOffsetY=o.controlCoordinates.imgHeight*o.controlCoordinates.targetScale<=o.controlCoordinates.containerHeight?0:o.minMax(o.controlCoordinates.initialOffsetY-(o.controlCoordinates.pinchOffsetY-o.controlCoordinates.containerOffsetY-o.controlCoordinates.containerHeight/2-o.controlCoordinates.initialOffsetY)/(o.controlCoordinates.targetScale-o.controlCoordinates.scaleDifference)*o.controlCoordinates.scaleDifference,-1*o.controlCoordinates.limitOffsetY,o.controlCoordinates.limitOffsetY),o.zoomPanElement(o.controlCoordinates.targetOffsetX+"px",o.controlCoordinates.targetOffsetY+"px",o.controlCoordinates.targetScale),1<o.controlCoordinates.targetScale&&(o.controlCoordinates.zoomed=!0,o.domNodes.caption.style.opacity||"none"===o.domNodes.caption.style.display||o.fadeOut(o.domNodes.caption,o.options.fadeSpeed)),o.controlCoordinates.initialPinchDistance=o.controlCoordinates.targetPinchDistance,o.controlCoordinates.initialScale=o.controlCoordinates.targetScale,o.controlCoordinates.initialOffsetX=o.controlCoordinates.targetOffsetX,o.controlCoordinates.initialOffsetY=o.controlCoordinates.targetOffsetY)):(o.controlCoordinates.targetScale=o.controlCoordinates.initialScale,o.controlCoordinates.limitOffsetX=(o.controlCoordinates.imgWidth*o.controlCoordinates.targetScale-o.controlCoordinates.containerWidth)/2,o.controlCoordinates.limitOffsetY=(o.controlCoordinates.imgHeight*o.controlCoordinates.targetScale-o.controlCoordinates.containerHeight)/2,o.controlCoordinates.targetOffsetX=o.controlCoordinates.imgWidth*o.controlCoordinates.targetScale<=o.controlCoordinates.containerWidth?0:o.minMax(o.controlCoordinates.pointerOffsetX-(o.controlCoordinates.initialPointerOffsetX-o.controlCoordinates.initialOffsetX),-1*o.controlCoordinates.limitOffsetX,o.controlCoordinates.limitOffsetX),o.controlCoordinates.targetOffsetY=o.controlCoordinates.imgHeight*o.controlCoordinates.targetScale<=o.controlCoordinates.containerHeight?0:o.minMax(o.controlCoordinates.pointerOffsetY-(o.controlCoordinates.initialPointerOffsetY-o.controlCoordinates.initialOffsetY),-1*o.controlCoordinates.limitOffsetY,o.controlCoordinates.limitOffsetY),Math.abs(o.controlCoordinates.targetOffsetX)===Math.abs(o.controlCoordinates.limitOffsetX)&&(o.controlCoordinates.initialOffsetX=o.controlCoordinates.targetOffsetX,o.controlCoordinates.initialPointerOffsetX=o.controlCoordinates.pointerOffsetX),Math.abs(o.controlCoordinates.targetOffsetY)===Math.abs(o.controlCoordinates.limitOffsetY)&&(o.controlCoordinates.initialOffsetY=o.controlCoordinates.targetOffsetY,o.controlCoordinates.initialPointerOffsetY=o.controlCoordinates.pointerOffsetY),o.setZoomData(o.controlCoordinates.initialScale,o.controlCoordinates.targetOffsetX,o.controlCoordinates.targetOffsetY),o.zoomPanElement(o.controlCoordinates.targetOffsetX+"px",o.controlCoordinates.targetOffsetY+"px",o.controlCoordinates.targetScale))}if("mousemove"===t.type&&o.controlCoordinates.mousedown){if("touchmove"==t.type)return!0;if(!1===o.controlCoordinates.capture)return!1;o.controlCoordinates.pointerOffsetX=t.clientX,o.controlCoordinates.pointerOffsetY=t.clientY,o.controlCoordinates.targetScale=o.controlCoordinates.initialScale,o.controlCoordinates.limitOffsetX=(o.controlCoordinates.imgWidth*o.controlCoordinates.targetScale-o.controlCoordinates.containerWidth)/2,o.controlCoordinates.limitOffsetY=(o.controlCoordinates.imgHeight*o.controlCoordinates.targetScale-o.controlCoordinates.containerHeight)/2,o.controlCoordinates.targetOffsetX=o.controlCoordinates.imgWidth*o.controlCoordinates.targetScale<=o.controlCoordinates.containerWidth?0:o.minMax(o.controlCoordinates.pointerOffsetX-(o.controlCoordinates.initialPointerOffsetX-o.controlCoordinates.initialOffsetX),-1*o.controlCoordinates.limitOffsetX,o.controlCoordinates.limitOffsetX),o.controlCoordinates.targetOffsetY=o.controlCoordinates.imgHeight*o.controlCoordinates.targetScale<=o.controlCoordinates.containerHeight?0:o.minMax(o.controlCoordinates.pointerOffsetY-(o.controlCoordinates.initialPointerOffsetY-o.controlCoordinates.initialOffsetY),-1*o.controlCoordinates.limitOffsetY,o.controlCoordinates.limitOffsetY),Math.abs(o.controlCoordinates.targetOffsetX)===Math.abs(o.controlCoordinates.limitOffsetX)&&(o.controlCoordinates.initialOffsetX=o.controlCoordinates.targetOffsetX,o.controlCoordinates.initialPointerOffsetX=o.controlCoordinates.pointerOffsetX),Math.abs(o.controlCoordinates.targetOffsetY)===Math.abs(o.controlCoordinates.limitOffsetY)&&(o.controlCoordinates.initialOffsetY=o.controlCoordinates.targetOffsetY,o.controlCoordinates.initialPointerOffsetY=o.controlCoordinates.pointerOffsetY),o.setZoomData(o.controlCoordinates.initialScale,o.controlCoordinates.targetOffsetX,o.controlCoordinates.targetOffsetY),o.zoomPanElement(o.controlCoordinates.targetOffsetX+"px",o.controlCoordinates.targetOffsetY+"px",o.controlCoordinates.targetScale)}o.controlCoordinates.zoomed||(o.controlCoordinates.swipeEnd=t.pageX||t.touches[0].pageX,o.controlCoordinates.swipeYEnd=t.pageY||t.touches[0].pageY,o.controlCoordinates.swipeDiff=o.controlCoordinates.swipeStart-o.controlCoordinates.swipeEnd,o.controlCoordinates.swipeYDiff=o.controlCoordinates.swipeYStart-o.controlCoordinates.swipeYEnd,o.options.animationSlide&&o.slide(0,-o.controlCoordinates.swipeDiff+"px"))}),this.addEventListener(this.domNodes.image,["touchend."+this.eventNamespace,"mouseup."+this.eventNamespace,"touchcancel."+this.eventNamespace,"mouseleave."+this.eventNamespace,"pointerup","pointercancel","MSPointerUp","MSPointerCancel"],function(t){if(o.isTouchDevice&&"touchend"===t.type&&(o.controlCoordinates.touchCount=t.touches.length,0===o.controlCoordinates.touchCount?(o.currentImage&&o.setZoomData(o.controlCoordinates.initialScale,o.controlCoordinates.targetOffsetX,o.controlCoordinates.targetOffsetY),1===o.controlCoordinates.initialScale&&(o.controlCoordinates.zoomed=!1,"none"===o.domNodes.caption.style.display&&o.fadeIn(o.domNodes.caption,o.options.fadeSpeed)),o.controlCoordinates.initialPinchDistance=null,o.controlCoordinates.capture=!1):1===o.controlCoordinates.touchCount?(o.controlCoordinates.initialPointerOffsetX=t.touches[0].clientX,o.controlCoordinates.initialPointerOffsetY=t.touches[0].clientY):1<o.controlCoordinates.touchCount&&(o.controlCoordinates.initialPinchDistance=null)),o.controlCoordinates.mousedown){var e=!(o.controlCoordinates.mousedown=!1);o.options.loop||(0===o.currentImageIndex&&o.controlCoordinates.swipeDiff<0&&(e=!1),o.currentImageIndex>=o.relatedElements.length-1&&0<o.controlCoordinates.swipeDiff&&(e=!1)),Math.abs(o.controlCoordinates.swipeDiff)>o.options.swipeTolerance&&e?o.loadImage(0<o.controlCoordinates.swipeDiff?1:-1):o.options.animationSlide&&o.slide(o.options.animationSpeed/1e3,"0px"),o.options.swipeClose&&50<Math.abs(o.controlCoordinates.swipeYDiff)&&Math.abs(o.controlCoordinates.swipeDiff)<o.options.swipeTolerance&&o.close()}}),this.addEventListener(this.domNodes.image,["dblclick"],function(t){if(!o.isTouchDevice)return o.controlCoordinates.initialPointerOffsetX=t.clientX,o.controlCoordinates.initialPointerOffsetY=t.clientY,o.controlCoordinates.containerHeight=o.getDimensions(o.domNodes.image).height,o.controlCoordinates.containerWidth=o.getDimensions(o.domNodes.image).width,o.controlCoordinates.imgHeight=o.getDimensions(o.currentImage).height,o.controlCoordinates.imgWidth=o.getDimensions(o.currentImage).width,o.controlCoordinates.containerOffsetX=o.domNodes.image.offsetLeft,o.controlCoordinates.containerOffsetY=o.domNodes.image.offsetTop,o.currentImage.classList.add("sl-transition"),o.controlCoordinates.zoomed?(o.controlCoordinates.initialScale=1,o.setZoomData(o.controlCoordinates.initialScale,0,0),o.zoomPanElement("0px","0px",o.controlCoordinates.initialScale),o.controlCoordinates.zoomed=!1,"none"===o.domNodes.caption.style.display&&o.fadeIn(o.domNodes.caption,o.options.fadeSpeed)):(o.controlCoordinates.initialScale=o.options.doubleTapZoom,o.setZoomData(o.controlCoordinates.initialScale,0,0),o.zoomPanElement("0px","0px",o.controlCoordinates.initialScale),o.domNodes.caption.style.opacity||"none"===o.domNodes.caption.style.display||o.fadeOut(o.domNodes.caption,o.options.fadeSpeed),o.controlCoordinates.zoomed=!0),setTimeout(function(){o.currentImage&&o.currentImage.classList.remove("sl-transition")},200),!(o.controlCoordinates.capture=!0)})}},{key:"getDimensions",value:function(t){var e=window.getComputedStyle(t),o=t.offsetHeight,i=t.offsetWidth,n=parseFloat(e.borderTopWidth);return{height:o-parseFloat(e.borderBottomWidth)-n-parseFloat(e.paddingTop)-parseFloat(e.paddingBottom),width:i-parseFloat(e.borderLeftWidth)-parseFloat(e.borderRightWidth)-parseFloat(e.paddingLeft)-parseFloat(e.paddingRight)}}},{key:"updateHash",value:function(){var t="pid="+(this.currentImageIndex+1),e=window.location.href.split("#")[0]+"#"+t;this.hashReseted=!1,this.pushStateSupport?window.history[this.historyHasChanges?"replaceState":"pushState"]("",document.title,e):this.historyHasChanges?window.location.replace(e):window.location.hash=t,this.historyHasChanges||(this.urlChangedOnce=!0),this.historyHasChanges=!0}},{key:"resetHash",value:function(){this.hashReseted=!0,this.urlChangedOnce?history.back():this.pushStateSupport?history.pushState("",document.title,window.location.pathname+window.location.search):window.location.hash="",clearTimeout(this.historyUpdateTimeout)}},{key:"updateURL",value:function(){clearTimeout(this.historyUpdateTimeout),this.historyHasChanges?this.historyUpdateTimeout=setTimeout(this.updateHash.bind(this),800):this.updateHash()}},{key:"setCaption",value:function(t,e){var o=this;this.options.captions&&t&&""!==t&&void 0!==t&&(this.hide(this.domNodes.caption),this.domNodes.caption.style.width=e+"px",this.domNodes.caption.innerHTML=t,this.domNodes.image.appendChild(this.domNodes.caption),setTimeout(function(){o.fadeIn(o.domNodes.caption,o.options.fadeSpeed)},this.options.captionDelay))}},{key:"slide",value:function(t,e){if(!this.transitionCapable)return this.domNodes.image.style.left=e;this.domNodes.image.style[this.transitionPrefix+"transform"]="translateX("+e+")",this.domNodes.image.style[this.transitionPrefix+"transition"]=this.transitionPrefix+"transform "+t+"s linear"}},{key:"getRelated",value:function(e){return e&&!1!==e&&"nofollow"!==e?Array.from(this.elements).filter(function(t){return t.getAttribute("rel")===e}):this.elements}},{key:"openImage",value:function(t){var e=this;t.dispatchEvent(new Event("show."+this.eventNamespace)),this.options.disableScroll&&(this.globalScrollbarWidth=this.toggleScrollbar("hide")),this.options.htmlClass&&""!==this.options.htmlClass&&document.querySelector("html").classList.add(this.options.htmlClass),document.body.appendChild(this.domNodes.wrapper),this.domNodes.wrapper.appendChild(this.domNodes.image),this.options.overlay&&document.body.appendChild(this.domNodes.overlay),this.relatedElements=this.getRelated(t.rel),this.options.showCounter&&(1==this.relatedElements.length&&this.domNodes.wrapper.contains(this.domNodes.counter)?this.domNodes.wrapper.removeChild(this.domNodes.counter):1<this.relatedElements.length&&!this.domNodes.wrapper.contains(this.domNodes.counter)&&this.domNodes.wrapper.appendChild(this.domNodes.counter)),this.isAnimating=!0,this.currentImageIndex=this.relatedElements.indexOf(t);var o=t.getAttribute(this.options.sourceAttr);this.currentImage=document.createElement("img"),this.currentImage.style.display="none",this.currentImage.setAttribute("src",o),this.currentImage.dataset.scale=1,this.currentImage.dataset.translateX=0,this.currentImage.dataset.translateY=0,-1===this.loadedImages.indexOf(o)&&this.loadedImages.push(o),this.domNodes.image.innerHTML="",this.domNodes.image.setAttribute("style",""),this.domNodes.image.appendChild(this.currentImage),this.fadeIn(this.domNodes.overlay,this.options.fadeSpeed),this.fadeIn([this.domNodes.counter,this.domNodes.navigation,this.domNodes.closeButton],this.options.fadeSpeed),this.show(this.domNodes.spinner),this.domNodes.counter.querySelector(".sl-current").innerHTML=this.currentImageIndex+1,this.domNodes.counter.querySelector(".sl-total").innerHTML=this.relatedElements.length,this.adjustImage(),this.options.preloading&&this.preload(),setTimeout(function(){t.dispatchEvent(new Event("shown."+e.eventNamespace))},this.options.animationSpeed)}},{key:"forceFocus",value:function(){var e=this;this.removeEventListener(document,"focusin."+this.eventNamespace),this.addEventListener(document,"focusin."+this.eventNamespace,function(t){document===t.target||e.domNodes.wrapper===t.target||e.domNodes.wrapper.contains(t.target)||e.domNodes.wrapper.focus()})}},{key:"addEventListener",value:function(t,e,o,i){t=this.wrap(t),e=this.wrap(e);var n,s=h(t);try{for(s.s();!(n=s.n()).done;){var a=n.value;a.namespaces||(a.namespaces={});var r,l=h(e);try{for(l.s();!(r=l.n()).done;){var d=r.value,c=i||!1;a.namespaces[d]=o,a.addEventListener(d.split(".")[0],o,c)}}catch(t){l.e(t)}finally{l.f()}}}catch(t){s.e(t)}finally{s.f()}}},{key:"removeEventListener",value:function(t,e){t=this.wrap(t),e=this.wrap(e);var o,i=h(t);try{for(i.s();!(o=i.n()).done;){var n,s=o.value,a=h(e);try{for(a.s();!(n=a.n()).done;){var r=n.value;s.namespaces&&s.namespaces[r]&&(s.removeEventListener(r.split(".")[0],s.namespaces[r]),delete s.namespaces[r])}}catch(t){a.e(t)}finally{a.f()}}}catch(t){i.e(t)}finally{i.f()}}},{key:"fadeOut",value:function(r,t,l){var e,d=this,o=h(r=this.wrap(r));try{for(o.s();!(e=o.n()).done;){e.value.style.opacity=1}}catch(t){o.e(t)}finally{o.f()}this.isFadeIn=!1;var c=16.66666/(t||this.options.fadeSpeed);!function t(){var e=parseFloat(r[0].style.opacity);if((e-=c)<0){var o,i=h(r);try{for(i.s();!(o=i.n()).done;){var n=o.value;n.style.display="none",n.style.opacity=""}}catch(t){i.e(t)}finally{i.f()}l&&l.call(d,r)}else{var s,a=h(r);try{for(a.s();!(s=a.n()).done;){s.value.style.opacity=e}}catch(t){a.e(t)}finally{a.f()}requestAnimationFrame(t)}}()}},{key:"fadeIn",value:function(a,t,r,e){var o,l=this,i=h(a=this.wrap(a));try{for(i.s();!(o=i.n()).done;){var n=o.value;n.style.opacity=0,n.style.display=e||"block"}}catch(t){i.e(t)}finally{i.f()}this.isFadeIn=!0;var d=parseFloat(a[0].dataset.opacityTarget||1),c=16.66666*d/(t||this.options.fadeSpeed);!function t(){var e=parseFloat(a[0].style.opacity);if((e+=c)>d){var o,i=h(a);try{for(i.s();!(o=i.n()).done;){o.value.style.opacity=""}}catch(t){i.e(t)}finally{i.f()}r&&r.call(l,a)}else{var n,s=h(a);try{for(s.s();!(n=s.n()).done;){n.value.style.opacity=e}}catch(t){s.e(t)}finally{s.f()}if(!l.isFadeIn)return;requestAnimationFrame(t)}}()}},{key:"hide",value:function(t){var e,o=h(t=this.wrap(t));try{for(o.s();!(e=o.n()).done;){var i=e.value;i.dataset.initialDisplay=i.style.display,i.style.display="none"}}catch(t){o.e(t)}finally{o.f()}}},{key:"show",value:function(t,e){var o,i=h(t=this.wrap(t));try{for(i.s();!(o=i.n()).done;){var n=o.value;n.style.display=n.dataset.initialDisplay||e||"block"}}catch(t){i.e(t)}finally{i.f()}}},{key:"wrap",value:function(t){return"function"==typeof t[Symbol.iterator]&&"string"!=typeof t?t:[t]}},{key:"on",value:function(t,e){t=this.wrap(t);var o,i=h(this.elements);try{for(i.s();!(o=i.n()).done;){var n=o.value;n.fullyNamespacedEvents||(n.fullyNamespacedEvents={});var s,a=h(t);try{for(a.s();!(s=a.n()).done;){var r=s.value;n.fullyNamespacedEvents[r]=e,n.addEventListener(r,e)}}catch(t){a.e(t)}finally{a.f()}}}catch(t){i.e(t)}finally{i.f()}return this}},{key:"off",value:function(t){t=this.wrap(t);var e,o=h(this.elements);try{for(o.s();!(e=o.n()).done;){var i,n=e.value,s=h(t);try{for(s.s();!(i=s.n()).done;){var a=i.value;void 0!==n.fullyNamespacedEvents&&a in n.fullyNamespacedEvents&&n.removeEventListener(a,n.fullyNamespacedEvents[a])}}catch(t){s.e(t)}finally{s.f()}}}catch(t){o.e(t)}finally{o.f()}return this}},{key:"open",value:function(t){t=t||this.elements[0],"undefined"!=typeof jQuery&&t instanceof jQuery&&(t=t.get(0)),this.initialImageIndex=this.elements.indexOf(t),-1<this.initialImageIndex&&this.openImage(t)}},{key:"next",value:function(){this.loadImage(1)}},{key:"prev",value:function(){this.loadImage(-1)}},{key:"destroy",value:function(){this.off(["close."+this.eventNamespace,"closed."+this.eventNamespace,"nextImageLoaded."+this.eventNamespace,"prevImageLoaded."+this.eventNamespace,"change."+this.eventNamespace,"nextDone."+this.eventNamespace,"prevDone."+this.eventNamespace,"error."+this.eventNamespace,"changed."+this.eventNamespace,"next."+this.eventNamespace,"prev."+this.eventNamespace,"show."+this.eventNamespace,"shown."+this.eventNamespace]),this.removeEventListener(this.elements,"click."+this.eventNamespace),this.removeEventListener(document,"focusin."+this.eventNamespace),this.removeEventListener(document.body,"contextmenu."+this.eventNamespace),this.removeEventListener(document.body,"keyup."+this.eventNamespace),this.removeEventListener(this.domNodes.navigation.getElementsByTagName("button"),"click."+this.eventNamespace),this.removeEventListener(this.domNodes.closeButton,"click."+this.eventNamespace),this.removeEventListener(window,"resize."+this.eventNamespace),this.removeEventListener(window,"hashchange."+this.eventNamespace),this.close(),this.isOpen&&(document.body.removeChild(this.domNodes.wrapper),document.body.removeChild(this.domNodes.overlay)),this.elements=null}},{key:"refresh",value:function(){if(!this.initialSelector)throw"refreshing only works when you initialize using a selector!";var t=this.options,e=this.initialSelector;return this.destroy(),this.constructor(e,t),this}},{key:"hash",get:function(){return window.location.hash.substring(1)}}])&&i(t.prototype,e),o&&i(t,o),n}(),e=t;n.default=e,o.SimpleLightbox=t}).call(this)}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}]},{},[1]);
\ No newline at end of file
diff --git a/photos/simplelightbox-master/dist/simple-lightbox.modules.js b/photos/simplelightbox-master/dist/simple-lightbox.modules.js
new file mode 100644
index 0000000000000000000000000000000000000000..0f961b0ec542eb2265546211139f9466f09a4933
--- /dev/null
+++ b/photos/simplelightbox-master/dist/simple-lightbox.modules.js
@@ -0,0 +1,1644 @@
+/*!
+	By André Rinas, www.andrerinas.de
+	Documentation, www.simplelightbox.de
+	Available for use under the MIT License
+	Version 2.7.0
+*/
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports["default"] = void 0;
+
+function _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
+
+function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
+
+function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
+
+function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
+
+function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
+
+var SimpleLightbox = /*#__PURE__*/function () {
+  function SimpleLightbox(elements, options) {
+    var _this = this;
+
+    _classCallCheck(this, SimpleLightbox);
+
+    _defineProperty(this, "defaultOptions", {
+      sourceAttr: 'href',
+      overlay: true,
+      spinner: true,
+      nav: true,
+      navText: ['&lsaquo;', '&rsaquo;'],
+      captions: true,
+      captionDelay: 0,
+      captionSelector: 'img',
+      captionType: 'attr',
+      captionsData: 'title',
+      captionPosition: 'bottom',
+      captionClass: '',
+      close: true,
+      closeText: '&times;',
+      swipeClose: true,
+      showCounter: true,
+      fileExt: 'png|jpg|jpeg|gif|webp',
+      animationSlide: true,
+      animationSpeed: 250,
+      preloading: true,
+      enableKeyboard: true,
+      loop: true,
+      rel: false,
+      docClose: true,
+      swipeTolerance: 50,
+      className: 'simple-lightbox',
+      widthRatio: 0.8,
+      heightRatio: 0.9,
+      scaleImageToRatio: false,
+      disableRightClick: false,
+      disableScroll: true,
+      alertError: true,
+      alertErrorMessage: 'Image not found, next image will be loaded',
+      additionalHtml: false,
+      history: true,
+      throttleInterval: 0,
+      doubleTapZoom: 2,
+      maxZoom: 10,
+      htmlClass: 'has-lightbox',
+      rtl: false,
+      fixedClass: 'sl-fixed',
+      fadeSpeed: 300,
+      uniqueImages: true,
+      focus: true
+    });
+
+    _defineProperty(this, "transitionPrefix", void 0);
+
+    _defineProperty(this, "transitionCapable", false);
+
+    _defineProperty(this, "isTouchDevice", 'ontouchstart' in window);
+
+    _defineProperty(this, "initialLocationHash", void 0);
+
+    _defineProperty(this, "pushStateSupport", 'pushState' in history);
+
+    _defineProperty(this, "isOpen", false);
+
+    _defineProperty(this, "isAnimating", false);
+
+    _defineProperty(this, "isClosing", false);
+
+    _defineProperty(this, "isFadeIn", false);
+
+    _defineProperty(this, "urlChangedOnce", false);
+
+    _defineProperty(this, "hashReseted", false);
+
+    _defineProperty(this, "historyHasChanges", false);
+
+    _defineProperty(this, "historyUpdateTimeout", null);
+
+    _defineProperty(this, "currentImage", void 0);
+
+    _defineProperty(this, "eventNamespace", 'simplelightbox');
+
+    _defineProperty(this, "domNodes", {});
+
+    _defineProperty(this, "loadedImages", []);
+
+    _defineProperty(this, "initialImageIndex", 0);
+
+    _defineProperty(this, "currentImageIndex", 0);
+
+    _defineProperty(this, "initialSelector", null);
+
+    _defineProperty(this, "globalScrollbarWidth", 0);
+
+    _defineProperty(this, "controlCoordinates", {
+      swipeDiff: 0,
+      swipeYDiff: 0,
+      swipeStart: 0,
+      swipeEnd: 0,
+      swipeYStart: 0,
+      swipeYEnd: 0,
+      mousedown: false,
+      imageLeft: 0,
+      zoomed: false,
+      containerHeight: 0,
+      containerWidth: 0,
+      containerOffsetX: 0,
+      containerOffsetY: 0,
+      imgHeight: 0,
+      imgWidth: 0,
+      capture: false,
+      initialOffsetX: 0,
+      initialOffsetY: 0,
+      initialPointerOffsetX: 0,
+      initialPointerOffsetY: 0,
+      initialPointerOffsetX2: 0,
+      initialPointerOffsetY2: 0,
+      initialScale: 1,
+      initialPinchDistance: 0,
+      pointerOffsetX: 0,
+      pointerOffsetY: 0,
+      pointerOffsetX2: 0,
+      pointerOffsetY2: 0,
+      targetOffsetX: 0,
+      targetOffsetY: 0,
+      targetScale: 0,
+      pinchOffsetX: 0,
+      pinchOffsetY: 0,
+      limitOffsetX: 0,
+      limitOffsetY: 0,
+      scaleDifference: 0,
+      targetPinchDistance: 0,
+      touchCount: 0,
+      doubleTapped: false,
+      touchmoveCount: 0
+    });
+
+    this.options = Object.assign(this.defaultOptions, options);
+
+    if (typeof elements === 'string') {
+      this.initialSelector = elements;
+      this.elements = Array.from(document.querySelectorAll(elements));
+    } else {
+      this.elements = typeof elements.length !== 'undefined' && elements.length > 0 ? Array.from(elements) : [elements];
+    }
+
+    this.relatedElements = [];
+    this.transitionPrefix = this.calculateTransitionPrefix();
+    this.transitionCapable = this.transitionPrefix !== false;
+    this.initialLocationHash = this.hash; // this should be handled by attribute selector IMHO! => 'a[rel=bla]'...
+
+    if (this.options.rel) {
+      this.elements = this.getRelated(this.options.rel);
+    }
+
+    if (this.options.uniqueImages) {
+      var imgArr = [];
+      this.elements = Array.from(this.elements).filter(function (element) {
+        var src = element.getAttribute(_this.options.sourceAttr);
+
+        if (imgArr.indexOf(src) === -1) {
+          imgArr.push(src);
+          return true;
+        }
+
+        return false;
+      });
+    }
+
+    this.createDomNodes();
+
+    if (this.options.close) {
+      this.domNodes.wrapper.appendChild(this.domNodes.closeButton);
+    }
+
+    if (this.options.nav) {
+      this.domNodes.wrapper.appendChild(this.domNodes.navigation);
+    }
+
+    if (this.options.spinner) {
+      this.domNodes.wrapper.appendChild(this.domNodes.spinner);
+    }
+
+    this.addEventListener(this.elements, 'click.' + this.eventNamespace, function (event) {
+      if (_this.isValidLink(event.currentTarget)) {
+        event.preventDefault();
+
+        if (_this.isAnimating) {
+          return false;
+        }
+
+        _this.initialImageIndex = _this.elements.indexOf(event.currentTarget);
+
+        _this.openImage(event.currentTarget);
+      }
+    }); // close addEventListener click addEventListener doc
+
+    if (this.options.docClose) {
+      this.addEventListener(this.domNodes.wrapper, ['click.' + this.eventNamespace, 'touchstart.' + this.eventNamespace], function (event) {
+        if (_this.isOpen && event.target === event.currentTarget) {
+          _this.close();
+        }
+      });
+    } // disable rightclick
+
+
+    if (this.options.disableRightClick) {
+      this.addEventListener(document.body, 'contextmenu.' + this.eventNamespace, function (event) {
+        if (event.target.classList.contains('sl-overlay')) {
+          event.preventDefault();
+        }
+      });
+    } // keyboard-control
+
+
+    if (this.options.enableKeyboard) {
+      this.addEventListener(document.body, 'keyup.' + this.eventNamespace, this.throttle(function (event) {
+        _this.controlCoordinates.swipeDiff = 0; // keyboard control only if lightbox is open
+
+        if (_this.isAnimating && event.key === 'Escape') {
+          _this.currentImage.setAttribute('src', '');
+
+          _this.isAnimating = false;
+          return _this.close();
+        }
+
+        if (_this.isOpen) {
+          event.preventDefault();
+
+          if (event.key === 'Escape') {
+            _this.close();
+          }
+
+          if (!_this.isAnimating && ['ArrowLeft', 'ArrowRight'].indexOf(event.key) > -1) {
+            _this.loadImage(event.key === 'ArrowRight' ? 1 : -1);
+          }
+        }
+      }, this.options.throttleInterval));
+    }
+
+    this.addEvents();
+  }
+
+  _createClass(SimpleLightbox, [{
+    key: "createDomNodes",
+    value: function createDomNodes() {
+      this.domNodes.overlay = document.createElement('div');
+      this.domNodes.overlay.classList.add('sl-overlay');
+      this.domNodes.overlay.dataset.opacityTarget = ".7";
+      this.domNodes.closeButton = document.createElement('button');
+      this.domNodes.closeButton.classList.add('sl-close');
+      this.domNodes.closeButton.innerHTML = this.options.closeText;
+      this.domNodes.spinner = document.createElement('div');
+      this.domNodes.spinner.classList.add('sl-spinner');
+      this.domNodes.spinner.innerHTML = '<div></div>';
+      this.domNodes.navigation = document.createElement('div');
+      this.domNodes.navigation.classList.add('sl-navigation');
+      this.domNodes.navigation.innerHTML = "<button class=\"sl-prev\">".concat(this.options.navText[0], "</button><button class=\"sl-next\">").concat(this.options.navText[1], "</button>");
+      this.domNodes.counter = document.createElement('div');
+      this.domNodes.counter.classList.add('sl-counter');
+      this.domNodes.counter.innerHTML = '<span class="sl-current"></span>/<span class="sl-total"></span>';
+      this.domNodes.caption = document.createElement('div');
+      this.domNodes.caption.classList.add('sl-caption', 'pos-' + this.options.captionPosition);
+
+      if (this.options.captionClass) {
+        this.domNodes.caption.classList.add(this.options.captionClass);
+      }
+
+      this.domNodes.image = document.createElement('div');
+      this.domNodes.image.classList.add('sl-image');
+      this.domNodes.wrapper = document.createElement('div');
+      this.domNodes.wrapper.classList.add('sl-wrapper');
+      this.domNodes.wrapper.setAttribute('tabindex', -1);
+      this.domNodes.wrapper.setAttribute('role', 'dialog');
+      this.domNodes.wrapper.setAttribute('aria-hidden', false);
+
+      if (this.options.className) {
+        this.domNodes.wrapper.classList.add(this.options.className);
+      }
+
+      if (this.options.rtl) {
+        this.domNodes.wrapper.classList.add('sl-dir-rtl');
+      }
+    }
+  }, {
+    key: "throttle",
+    value: function throttle(func, limit) {
+      var inThrottle;
+      return function () {
+        if (!inThrottle) {
+          func.apply(this, arguments);
+          inThrottle = true;
+          setTimeout(function () {
+            return inThrottle = false;
+          }, limit);
+        }
+      };
+    }
+  }, {
+    key: "isValidLink",
+    value: function isValidLink(element) {
+      return !this.options.fileExt || 'pathname' in element && new RegExp('(' + this.options.fileExt + ')$', 'i').test(element.pathname);
+    }
+  }, {
+    key: "calculateTransitionPrefix",
+    value: function calculateTransitionPrefix() {
+      var s = (document.body || document.documentElement).style;
+      return 'transition' in s ? '' : 'WebkitTransition' in s ? '-webkit-' : 'MozTransition' in s ? '-moz-' : 'OTransition' in s ? '-o' : false;
+    }
+  }, {
+    key: "toggleScrollbar",
+    value: function toggleScrollbar(type) {
+      var scrollbarWidth = 0;
+      var fixedElements = [].slice.call(document.querySelectorAll('.' + this.options.fixedClass));
+
+      if (type === 'hide') {
+        var fullWindowWidth = window.innerWidth;
+
+        if (!fullWindowWidth) {
+          var documentElementRect = document.documentElement.getBoundingClientRect();
+          fullWindowWidth = documentElementRect.right - Math.abs(documentElementRect.left);
+        }
+
+        if (document.body.clientWidth < fullWindowWidth) {
+          var scrollDiv = document.createElement('div'),
+              paddingRight = parseInt(document.body.style.paddingRight || 0, 10);
+          scrollDiv.classList.add('sl-scrollbar-measure');
+          document.body.appendChild(scrollDiv);
+          scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth;
+          document.body.removeChild(scrollDiv);
+          document.body.dataset.originalPaddingRight = paddingRight;
+
+          if (scrollbarWidth > 0) {
+            document.body.classList.add('hidden-scroll');
+            document.body.style.paddingRight = paddingRight + scrollbarWidth + 'px';
+            fixedElements.forEach(function (element) {
+              var actualPadding = element.style.paddingRight;
+              var calculatedPadding = window.getComputedStyle(element)['padding-right'];
+              element.dataset.originalPaddingRight = actualPadding;
+              element.style.paddingRight = "".concat(parseFloat(calculatedPadding) + scrollbarWidth, "px");
+            });
+          }
+        }
+      } else {
+        document.body.classList.remove('hidden-scroll');
+        document.body.style.paddingRight = document.body.dataset.originalPaddingRight;
+        fixedElements.forEach(function (element) {
+          var padding = element.dataset.originalPaddingRight;
+
+          if (typeof padding !== 'undefined') {
+            element.style.paddingRight = padding;
+          }
+        });
+      }
+
+      return scrollbarWidth;
+    }
+  }, {
+    key: "close",
+    value: function close() {
+      var _this2 = this;
+
+      if (!this.isOpen || this.isAnimating || this.isClosing) {
+        return false;
+      }
+
+      this.isClosing = true;
+      var element = this.relatedElements[this.currentImageIndex];
+      element.dispatchEvent(new Event('close.simplelightbox'));
+
+      if (this.options.history) {
+        this.historyHasChanges = false;
+
+        if (!this.hashReseted) {
+          this.resetHash();
+        }
+      }
+
+      this.removeEventListener(document, 'focusin.' + this.eventNamespace);
+      this.fadeOut(document.querySelectorAll('.sl-image img, .sl-overlay, .sl-close, .sl-navigation, .sl-image .sl-caption, .sl-counter'), this.options.fadeSpeed, function () {
+        if (_this2.options.disableScroll) {
+          _this2.toggleScrollbar('show');
+        }
+
+        if (_this2.options.htmlClass && _this2.options.htmlClass !== '') {
+          document.querySelector('html').classList.remove(_this2.options.htmlClass);
+        }
+
+        document.body.removeChild(_this2.domNodes.wrapper);
+        document.body.removeChild(_this2.domNodes.overlay);
+        _this2.domNodes.additionalHtml = null;
+        element.dispatchEvent(new Event('closed.simplelightbox'));
+        _this2.isClosing = false;
+      });
+      this.currentImage = null;
+      this.isOpen = false;
+      this.isAnimating = false; // reset touchcontrol coordinates
+
+      for (var key in this.controlCoordinates) {
+        this.controlCoordinates[key] = 0;
+      }
+
+      this.controlCoordinates.mousedown = false;
+      this.controlCoordinates.zoomed = false;
+      this.controlCoordinates.capture = false;
+      this.controlCoordinates.initialScale = this.minMax(1, 1, this.options.maxZoom);
+      this.controlCoordinates.doubleTapped = false;
+    }
+  }, {
+    key: "preload",
+    value: function preload() {
+      var _this3 = this;
+
+      var index = this.currentImageIndex,
+          length = this.relatedElements.length,
+          next = index + 1 < 0 ? length - 1 : index + 1 >= length - 1 ? 0 : index + 1,
+          prev = index - 1 < 0 ? length - 1 : index - 1 >= length - 1 ? 0 : index - 1,
+          nextImage = new Image(),
+          prevImage = new Image();
+      nextImage.addEventListener('load', function (event) {
+        var src = event.target.getAttribute('src');
+
+        if (_this3.loadedImages.indexOf(src) === -1) {
+          //is this condition even required... setting multiple times will not change usage...
+          _this3.loadedImages.push(src);
+        }
+
+        _this3.relatedElements[index].dispatchEvent(new Event('nextImageLoaded.' + _this3.eventNamespace));
+      });
+      nextImage.setAttribute('src', this.relatedElements[next].getAttribute(this.options.sourceAttr));
+      prevImage.addEventListener('load', function (event) {
+        var src = event.target.getAttribute('src');
+
+        if (_this3.loadedImages.indexOf(src) === -1) {
+          _this3.loadedImages.push(src);
+        }
+
+        _this3.relatedElements[index].dispatchEvent(new Event('prevImageLoaded.' + _this3.eventNamespace));
+      });
+      prevImage.setAttribute('src', this.relatedElements[prev].getAttribute(this.options.sourceAttr));
+    }
+  }, {
+    key: "loadImage",
+    value: function loadImage(direction) {
+      var _this4 = this;
+
+      var slideDirection = direction;
+
+      if (this.options.rtl) {
+        direction = -direction;
+      }
+
+      this.relatedElements[this.currentImageIndex].dispatchEvent(new Event('change.' + this.eventNamespace));
+      this.relatedElements[this.currentImageIndex].dispatchEvent(new Event((direction === 1 ? 'next' : 'prev') + '.' + this.eventNamespace));
+      var newIndex = this.currentImageIndex + direction;
+
+      if (this.isAnimating || (newIndex < 0 || newIndex >= this.relatedElements.length) && this.options.loop === false) {
+        return false;
+      }
+
+      this.currentImageIndex = newIndex < 0 ? this.relatedElements.length - 1 : newIndex > this.relatedElements.length - 1 ? 0 : newIndex;
+      this.domNodes.counter.querySelector('.sl-current').innerHTML = this.currentImageIndex + 1;
+
+      if (this.options.animationSlide) {
+        this.slide(this.options.animationSpeed / 1000, -100 * slideDirection - this.controlCoordinates.swipeDiff + 'px');
+      }
+
+      this.fadeOut(this.domNodes.image, this.options.fadeSpeed, function () {
+        _this4.isAnimating = true;
+
+        if (!_this4.isClosing) {
+          setTimeout(function () {
+            var element = _this4.relatedElements[_this4.currentImageIndex];
+
+            _this4.currentImage.setAttribute('src', element.getAttribute(_this4.options.sourceAttr));
+
+            if (_this4.loadedImages.indexOf(element.getAttribute(_this4.options.sourceAttr)) === -1) {
+              _this4.show(_this4.domNodes.spinner);
+            }
+
+            if (_this4.domNodes.image.contains(_this4.domNodes.caption)) {
+              _this4.domNodes.image.removeChild(_this4.domNodes.caption);
+            }
+
+            _this4.adjustImage(slideDirection);
+
+            if (_this4.options.preloading) _this4.preload();
+          }, 100);
+        } else {
+          _this4.isAnimating = false;
+        }
+      });
+    }
+  }, {
+    key: "adjustImage",
+    value: function adjustImage(direction) {
+      var _this5 = this;
+
+      if (!this.currentImage) {
+        return false;
+      }
+
+      var tmpImage = new Image(),
+          windowWidth = window.innerWidth * this.options.widthRatio,
+          windowHeight = window.innerHeight * this.options.heightRatio;
+      tmpImage.setAttribute('src', this.currentImage.getAttribute('src'));
+      this.currentImage.dataset.scale = 1;
+      this.currentImage.dataset.translateX = 0;
+      this.currentImage.dataset.translateY = 0;
+      this.zoomPanElement(0, 0, 1);
+      tmpImage.addEventListener('error', function (event) {
+        _this5.relatedElements[_this5.currentImageIndex].dispatchEvent(new Event('error.' + _this5.eventNamespace));
+
+        _this5.isAnimating = false;
+        _this5.isOpen = false;
+        _this5.domNodes.spinner.style.display = 'none';
+        var dirIsDefined = direction === 1 || direction === -1;
+
+        if (_this5.initialImageIndex === _this5.currentImageIndex && dirIsDefined) {
+          return _this5.close();
+        }
+
+        if (_this5.options.alertError) {
+          alert(_this5.options.alertErrorMessage);
+        }
+
+        _this5.loadImage(dirIsDefined ? direction : 1);
+      });
+      tmpImage.addEventListener('load', function (event) {
+        if (typeof direction !== 'undefined') {
+          _this5.relatedElements[_this5.currentImageIndex].dispatchEvent(new Event('changed.' + _this5.eventNamespace));
+
+          _this5.relatedElements[_this5.currentImageIndex].dispatchEvent(new Event((direction === 1 ? 'nextDone' : 'prevDone') + '.' + _this5.eventNamespace));
+        } // history
+
+
+        if (_this5.options.history) {
+          _this5.updateURL();
+        }
+
+        if (_this5.loadedImages.indexOf(_this5.currentImage.getAttribute('src')) === -1) {
+          _this5.loadedImages.push(_this5.currentImage.getAttribute('src'));
+        }
+
+        var imageWidth = event.target.width,
+            imageHeight = event.target.height;
+
+        if (_this5.options.scaleImageToRatio || imageWidth > windowWidth || imageHeight > windowHeight) {
+          var ratio = imageWidth / imageHeight > windowWidth / windowHeight ? imageWidth / windowWidth : imageHeight / windowHeight;
+          imageWidth /= ratio;
+          imageHeight /= ratio;
+        }
+
+        _this5.domNodes.image.style.top = (window.innerHeight - imageHeight) / 2 + 'px';
+        _this5.domNodes.image.style.left = (window.innerWidth - imageWidth - _this5.globalScrollbarWidth) / 2 + 'px';
+        _this5.domNodes.image.style.width = imageWidth + 'px';
+        _this5.domNodes.image.style.height = imageHeight + 'px';
+        _this5.domNodes.spinner.style.display = 'none';
+
+        if (_this5.options.focus) {
+          _this5.forceFocus();
+        }
+
+        _this5.fadeIn(_this5.currentImage, _this5.options.fadeSpeed, function () {
+          if (_this5.options.focus) {
+            _this5.domNodes.wrapper.focus();
+          }
+        });
+
+        _this5.isOpen = true;
+        var captionContainer, captionText;
+
+        if (typeof _this5.options.captionSelector === 'string') {
+          captionContainer = _this5.options.captionSelector === 'self' ? _this5.relatedElements[_this5.currentImageIndex] : _this5.relatedElements[_this5.currentImageIndex].querySelector(_this5.options.captionSelector);
+        } else if (typeof _this5.options.captionSelector === 'function') {
+          captionContainer = _this5.options.captionSelector(_this5.relatedElements[_this5.currentImageIndex]);
+        }
+
+        if (_this5.options.captions && captionContainer) {
+          if (_this5.options.captionType === 'data') {
+            captionText = captionContainer.dataset[_this5.options.captionsData];
+          } else if (_this5.options.captionType === 'text') {
+            captionText = captionContainer.innerHTML;
+          } else {
+            captionText = captionContainer.getAttribute(_this5.options.captionsData);
+          }
+        }
+
+        if (!_this5.options.loop) {
+          if (_this5.currentImageIndex === 0) {
+            _this5.hide(_this5.domNodes.navigation.querySelector('.sl-prev'));
+          }
+
+          if (_this5.currentImageIndex >= _this5.relatedElements.length - 1) {
+            _this5.hide(_this5.domNodes.navigation.querySelector('.sl-next'));
+          }
+
+          if (_this5.currentImageIndex > 0) {
+            _this5.show(_this5.domNodes.navigation.querySelector('.sl-prev'));
+          }
+
+          if (_this5.currentImageIndex < _this5.relatedElements.length - 1) {
+            _this5.show(_this5.domNodes.navigation.querySelector('.sl-next'));
+          }
+        }
+
+        if (_this5.relatedElements.length === 1) {
+          _this5.hide(_this5.domNodes.navigation.querySelectorAll('.sl-prev, .sl-next'));
+        } else {
+          _this5.show(_this5.domNodes.navigation.querySelectorAll('.sl-prev, .sl-next'));
+        }
+
+        if (direction === 1 || direction === -1) {
+          if (_this5.options.animationSlide) {
+            _this5.slide(0, 100 * direction + 'px');
+
+            setTimeout(function () {
+              _this5.slide(_this5.options.animationSpeed / 1000, 0 + 'px');
+            }, 50);
+          }
+
+          _this5.fadeIn(_this5.domNodes.image, _this5.options.fadeSpeed, function () {
+            _this5.isAnimating = false;
+
+            _this5.setCaption(captionText, imageWidth);
+          });
+        } else {
+          _this5.isAnimating = false;
+
+          _this5.setCaption(captionText, imageWidth);
+        }
+
+        if (_this5.options.additionalHtml && !_this5.domNodes.additionalHtml) {
+          _this5.domNodes.additionalHtml = document.createElement('div');
+
+          _this5.domNodes.additionalHtml.classList.add('sl-additional-html');
+
+          _this5.domNodes.additionalHtml.innerHTML = _this5.options.additionalHtml;
+
+          _this5.domNodes.image.appendChild(_this5.domNodes.additionalHtml);
+        }
+      });
+    }
+  }, {
+    key: "zoomPanElement",
+    value: function zoomPanElement(targetOffsetX, targetOffsetY, targetScale) {
+      this.currentImage.style[this.transitionPrefix + 'transform'] = 'translate(' + targetOffsetX + ',' + targetOffsetY + ') scale(' + targetScale + ')';
+    }
+  }, {
+    key: "minMax",
+    value: function minMax(value, min, max) {
+      return value < min ? min : value > max ? max : value;
+    }
+  }, {
+    key: "setZoomData",
+    value: function setZoomData(initialScale, targetOffsetX, targetOffsetY) {
+      this.currentImage.dataset.scale = initialScale;
+      this.currentImage.dataset.translateX = targetOffsetX;
+      this.currentImage.dataset.translateY = targetOffsetY;
+    }
+  }, {
+    key: "hashchangeHandler",
+    value: function hashchangeHandler() {
+      if (this.isOpen && this.hash === this.initialLocationHash) {
+        this.hashReseted = true;
+        this.close();
+      }
+    }
+  }, {
+    key: "addEvents",
+    value: function addEvents() {
+      var _this6 = this;
+
+      // resize/responsive
+      this.addEventListener(window, 'resize.' + this.eventNamespace, function (event) {
+        //this.adjustImage.bind(this)
+        if (_this6.isOpen) {
+          _this6.adjustImage();
+        }
+      });
+      this.addEventListener(this.domNodes.closeButton, ['click.' + this.eventNamespace, 'touchstart.' + this.eventNamespace], this.close.bind(this));
+
+      if (this.options.history) {
+        setTimeout(function () {
+          _this6.addEventListener(window, 'hashchange.' + _this6.eventNamespace, function (event) {
+            if (_this6.isOpen) {
+              _this6.hashchangeHandler();
+            }
+          });
+        }, 40);
+      }
+
+      this.addEventListener(this.domNodes.navigation.getElementsByTagName('button'), 'click.' + this.eventNamespace, function (event) {
+        if (!event.currentTarget.tagName.match(/button/i)) {
+          return true;
+        }
+
+        event.preventDefault();
+        _this6.controlCoordinates.swipeDiff = 0;
+
+        _this6.loadImage(event.currentTarget.classList.contains('sl-next') ? 1 : -1);
+      });
+      this.addEventListener(this.domNodes.image, ['touchstart.' + this.eventNamespace, 'mousedown.' + this.eventNamespace], function (event) {
+        if (event.target.tagName === 'A' && event.type === 'touchstart') {
+          return true;
+        }
+
+        if (event.type === 'mousedown') {
+          _this6.controlCoordinates.initialPointerOffsetX = event.clientX;
+          _this6.controlCoordinates.initialPointerOffsetY = event.clientY;
+          _this6.controlCoordinates.containerHeight = _this6.getDimensions(_this6.domNodes.image).height;
+          _this6.controlCoordinates.containerWidth = _this6.getDimensions(_this6.domNodes.image).width;
+          _this6.controlCoordinates.imgHeight = _this6.getDimensions(_this6.currentImage).height;
+          _this6.controlCoordinates.imgWidth = _this6.getDimensions(_this6.currentImage).width;
+          _this6.controlCoordinates.containerOffsetX = _this6.domNodes.image.offsetLeft;
+          _this6.controlCoordinates.containerOffsetY = _this6.domNodes.image.offsetTop;
+          _this6.controlCoordinates.initialOffsetX = parseFloat(_this6.currentImage.dataset.translateX);
+          _this6.controlCoordinates.initialOffsetY = parseFloat(_this6.currentImage.dataset.translateY);
+          _this6.controlCoordinates.capture = true;
+        } else {
+          _this6.controlCoordinates.touchCount = event.touches.length;
+          _this6.controlCoordinates.initialPointerOffsetX = event.touches[0].clientX;
+          _this6.controlCoordinates.initialPointerOffsetY = event.touches[0].clientY;
+          _this6.controlCoordinates.containerHeight = _this6.getDimensions(_this6.domNodes.image).height;
+          _this6.controlCoordinates.containerWidth = _this6.getDimensions(_this6.domNodes.image).width;
+          _this6.controlCoordinates.imgHeight = _this6.getDimensions(_this6.currentImage).height;
+          _this6.controlCoordinates.imgWidth = _this6.getDimensions(_this6.currentImage).width;
+          _this6.controlCoordinates.containerOffsetX = _this6.domNodes.image.offsetLeft;
+          _this6.controlCoordinates.containerOffsetY = _this6.domNodes.image.offsetTop;
+
+          if (_this6.controlCoordinates.touchCount === 1)
+            /* Single touch */
+            {
+              if (!_this6.controlCoordinates.doubleTapped) {
+                _this6.controlCoordinates.doubleTapped = true;
+                setTimeout(function () {
+                  _this6.controlCoordinates.doubleTapped = false;
+                }, 300);
+              } else {
+                _this6.currentImage.classList.add('sl-transition');
+
+                if (!_this6.controlCoordinates.zoomed) {
+                  _this6.controlCoordinates.initialScale = _this6.options.doubleTapZoom;
+
+                  _this6.setZoomData(_this6.controlCoordinates.initialScale, 0, 0);
+
+                  _this6.zoomPanElement(0 + "px", 0 + "px", _this6.controlCoordinates.initialScale);
+
+                  if (!_this6.domNodes.caption.style.opacity && _this6.domNodes.caption.style.display !== 'none') {
+                    _this6.fadeOut(_this6.domNodes.caption, _this6.options.fadeSpeed);
+                  }
+
+                  _this6.controlCoordinates.zoomed = true;
+                } else {
+                  _this6.controlCoordinates.initialScale = 1;
+
+                  _this6.setZoomData(_this6.controlCoordinates.initialScale, 0, 0);
+
+                  _this6.zoomPanElement(0 + "px", 0 + "px", _this6.controlCoordinates.initialScale);
+
+                  _this6.controlCoordinates.zoomed = false;
+                }
+
+                setTimeout(function () {
+                  if (_this6.currentImage) {
+                    _this6.currentImage.classList.remove('sl-transition');
+                  }
+                }, 200);
+                return false;
+              }
+
+              _this6.controlCoordinates.initialOffsetX = parseFloat(_this6.currentImage.dataset.translateX);
+              _this6.controlCoordinates.initialOffsetY = parseFloat(_this6.currentImage.dataset.translateY);
+            } else if (_this6.controlCoordinates.touchCount === 2)
+            /* Pinch */
+            {
+              _this6.controlCoordinates.initialPointerOffsetX2 = event.touches[1].clientX;
+              _this6.controlCoordinates.initialPointerOffsetY2 = event.touches[1].clientY;
+              _this6.controlCoordinates.initialOffsetX = parseFloat(_this6.currentImage.dataset.translateX);
+              _this6.controlCoordinates.initialOffsetY = parseFloat(_this6.currentImage.dataset.translateY);
+              _this6.controlCoordinates.pinchOffsetX = (_this6.controlCoordinates.initialPointerOffsetX + _this6.controlCoordinates.initialPointerOffsetX2) / 2;
+              _this6.controlCoordinates.pinchOffsetY = (_this6.controlCoordinates.initialPointerOffsetY + _this6.controlCoordinates.initialPointerOffsetY2) / 2;
+              _this6.controlCoordinates.initialPinchDistance = Math.sqrt((_this6.controlCoordinates.initialPointerOffsetX - _this6.controlCoordinates.initialPointerOffsetX2) * (_this6.controlCoordinates.initialPointerOffsetX - _this6.controlCoordinates.initialPointerOffsetX2) + (_this6.controlCoordinates.initialPointerOffsetY - _this6.controlCoordinates.initialPointerOffsetY2) * (_this6.controlCoordinates.initialPointerOffsetY - _this6.controlCoordinates.initialPointerOffsetY2));
+            }
+
+          _this6.controlCoordinates.capture = true;
+        }
+
+        if (_this6.controlCoordinates.mousedown) return true;
+
+        if (_this6.transitionCapable) {
+          _this6.controlCoordinates.imageLeft = parseInt(_this6.domNodes.image.style.left, 10);
+        }
+
+        _this6.controlCoordinates.mousedown = true;
+        _this6.controlCoordinates.swipeDiff = 0;
+        _this6.controlCoordinates.swipeYDiff = 0;
+        _this6.controlCoordinates.swipeStart = event.pageX || event.touches[0].pageX;
+        _this6.controlCoordinates.swipeYStart = event.pageY || event.touches[0].pageY;
+        return false;
+      });
+      this.addEventListener(this.domNodes.image, ['touchmove.' + this.eventNamespace, 'mousemove.' + this.eventNamespace, 'MSPointerMove'], function (event) {
+        if (!_this6.controlCoordinates.mousedown) {
+          return true;
+        }
+
+        event.preventDefault();
+
+        if (event.type === 'touchmove') {
+          if (_this6.controlCoordinates.capture === false) {
+            return false;
+          }
+
+          _this6.controlCoordinates.pointerOffsetX = event.touches[0].clientX;
+          _this6.controlCoordinates.pointerOffsetY = event.touches[0].clientY;
+          _this6.controlCoordinates.touchCount = event.touches.length;
+          _this6.controlCoordinates.touchmoveCount++;
+
+          if (_this6.controlCoordinates.touchCount > 1)
+            /* Pinch */
+            {
+              _this6.controlCoordinates.pointerOffsetX2 = event.touches[1].clientX;
+              _this6.controlCoordinates.pointerOffsetY2 = event.touches[1].clientY;
+              _this6.controlCoordinates.targetPinchDistance = Math.sqrt((_this6.controlCoordinates.pointerOffsetX - _this6.controlCoordinates.pointerOffsetX2) * (_this6.controlCoordinates.pointerOffsetX - _this6.controlCoordinates.pointerOffsetX2) + (_this6.controlCoordinates.pointerOffsetY - _this6.controlCoordinates.pointerOffsetY2) * (_this6.controlCoordinates.pointerOffsetY - _this6.controlCoordinates.pointerOffsetY2));
+
+              if (_this6.controlCoordinates.initialPinchDistance === null) {
+                _this6.controlCoordinates.initialPinchDistance = _this6.controlCoordinates.targetPinchDistance;
+              }
+
+              if (Math.abs(_this6.controlCoordinates.initialPinchDistance - _this6.controlCoordinates.targetPinchDistance) >= 1) {
+                /* Initialize helpers */
+                _this6.controlCoordinates.targetScale = _this6.minMax(_this6.controlCoordinates.targetPinchDistance / _this6.controlCoordinates.initialPinchDistance * _this6.controlCoordinates.initialScale, 1, _this6.options.maxZoom);
+                _this6.controlCoordinates.limitOffsetX = (_this6.controlCoordinates.imgWidth * _this6.controlCoordinates.targetScale - _this6.controlCoordinates.containerWidth) / 2;
+                _this6.controlCoordinates.limitOffsetY = (_this6.controlCoordinates.imgHeight * _this6.controlCoordinates.targetScale - _this6.controlCoordinates.containerHeight) / 2;
+                _this6.controlCoordinates.scaleDifference = _this6.controlCoordinates.targetScale - _this6.controlCoordinates.initialScale;
+                _this6.controlCoordinates.targetOffsetX = _this6.controlCoordinates.imgWidth * _this6.controlCoordinates.targetScale <= _this6.controlCoordinates.containerWidth ? 0 : _this6.minMax(_this6.controlCoordinates.initialOffsetX - (_this6.controlCoordinates.pinchOffsetX - _this6.controlCoordinates.containerOffsetX - _this6.controlCoordinates.containerWidth / 2 - _this6.controlCoordinates.initialOffsetX) / (_this6.controlCoordinates.targetScale - _this6.controlCoordinates.scaleDifference) * _this6.controlCoordinates.scaleDifference, _this6.controlCoordinates.limitOffsetX * -1, _this6.controlCoordinates.limitOffsetX);
+                _this6.controlCoordinates.targetOffsetY = _this6.controlCoordinates.imgHeight * _this6.controlCoordinates.targetScale <= _this6.controlCoordinates.containerHeight ? 0 : _this6.minMax(_this6.controlCoordinates.initialOffsetY - (_this6.controlCoordinates.pinchOffsetY - _this6.controlCoordinates.containerOffsetY - _this6.controlCoordinates.containerHeight / 2 - _this6.controlCoordinates.initialOffsetY) / (_this6.controlCoordinates.targetScale - _this6.controlCoordinates.scaleDifference) * _this6.controlCoordinates.scaleDifference, _this6.controlCoordinates.limitOffsetY * -1, _this6.controlCoordinates.limitOffsetY);
+
+                _this6.zoomPanElement(_this6.controlCoordinates.targetOffsetX + "px", _this6.controlCoordinates.targetOffsetY + "px", _this6.controlCoordinates.targetScale);
+
+                if (_this6.controlCoordinates.targetScale > 1) {
+                  _this6.controlCoordinates.zoomed = true;
+
+                  if (!_this6.domNodes.caption.style.opacity && _this6.domNodes.caption.style.display !== 'none') {
+                    _this6.fadeOut(_this6.domNodes.caption, _this6.options.fadeSpeed);
+                  }
+                }
+
+                _this6.controlCoordinates.initialPinchDistance = _this6.controlCoordinates.targetPinchDistance;
+                _this6.controlCoordinates.initialScale = _this6.controlCoordinates.targetScale;
+                _this6.controlCoordinates.initialOffsetX = _this6.controlCoordinates.targetOffsetX;
+                _this6.controlCoordinates.initialOffsetY = _this6.controlCoordinates.targetOffsetY;
+              }
+            } else {
+            _this6.controlCoordinates.targetScale = _this6.controlCoordinates.initialScale;
+            _this6.controlCoordinates.limitOffsetX = (_this6.controlCoordinates.imgWidth * _this6.controlCoordinates.targetScale - _this6.controlCoordinates.containerWidth) / 2;
+            _this6.controlCoordinates.limitOffsetY = (_this6.controlCoordinates.imgHeight * _this6.controlCoordinates.targetScale - _this6.controlCoordinates.containerHeight) / 2;
+            _this6.controlCoordinates.targetOffsetX = _this6.controlCoordinates.imgWidth * _this6.controlCoordinates.targetScale <= _this6.controlCoordinates.containerWidth ? 0 : _this6.minMax(_this6.controlCoordinates.pointerOffsetX - (_this6.controlCoordinates.initialPointerOffsetX - _this6.controlCoordinates.initialOffsetX), _this6.controlCoordinates.limitOffsetX * -1, _this6.controlCoordinates.limitOffsetX);
+            _this6.controlCoordinates.targetOffsetY = _this6.controlCoordinates.imgHeight * _this6.controlCoordinates.targetScale <= _this6.controlCoordinates.containerHeight ? 0 : _this6.minMax(_this6.controlCoordinates.pointerOffsetY - (_this6.controlCoordinates.initialPointerOffsetY - _this6.controlCoordinates.initialOffsetY), _this6.controlCoordinates.limitOffsetY * -1, _this6.controlCoordinates.limitOffsetY);
+
+            if (Math.abs(_this6.controlCoordinates.targetOffsetX) === Math.abs(_this6.controlCoordinates.limitOffsetX)) {
+              _this6.controlCoordinates.initialOffsetX = _this6.controlCoordinates.targetOffsetX;
+              _this6.controlCoordinates.initialPointerOffsetX = _this6.controlCoordinates.pointerOffsetX;
+            }
+
+            if (Math.abs(_this6.controlCoordinates.targetOffsetY) === Math.abs(_this6.controlCoordinates.limitOffsetY)) {
+              _this6.controlCoordinates.initialOffsetY = _this6.controlCoordinates.targetOffsetY;
+              _this6.controlCoordinates.initialPointerOffsetY = _this6.controlCoordinates.pointerOffsetY;
+            }
+
+            _this6.setZoomData(_this6.controlCoordinates.initialScale, _this6.controlCoordinates.targetOffsetX, _this6.controlCoordinates.targetOffsetY);
+
+            _this6.zoomPanElement(_this6.controlCoordinates.targetOffsetX + "px", _this6.controlCoordinates.targetOffsetY + "px", _this6.controlCoordinates.targetScale);
+          }
+        }
+        /* Mouse Move implementation */
+
+
+        if (event.type === 'mousemove' && _this6.controlCoordinates.mousedown) {
+          if (event.type == 'touchmove') return true;
+          if (_this6.controlCoordinates.capture === false) return false;
+          _this6.controlCoordinates.pointerOffsetX = event.clientX;
+          _this6.controlCoordinates.pointerOffsetY = event.clientY;
+          _this6.controlCoordinates.targetScale = _this6.controlCoordinates.initialScale;
+          _this6.controlCoordinates.limitOffsetX = (_this6.controlCoordinates.imgWidth * _this6.controlCoordinates.targetScale - _this6.controlCoordinates.containerWidth) / 2;
+          _this6.controlCoordinates.limitOffsetY = (_this6.controlCoordinates.imgHeight * _this6.controlCoordinates.targetScale - _this6.controlCoordinates.containerHeight) / 2;
+          _this6.controlCoordinates.targetOffsetX = _this6.controlCoordinates.imgWidth * _this6.controlCoordinates.targetScale <= _this6.controlCoordinates.containerWidth ? 0 : _this6.minMax(_this6.controlCoordinates.pointerOffsetX - (_this6.controlCoordinates.initialPointerOffsetX - _this6.controlCoordinates.initialOffsetX), _this6.controlCoordinates.limitOffsetX * -1, _this6.controlCoordinates.limitOffsetX);
+          _this6.controlCoordinates.targetOffsetY = _this6.controlCoordinates.imgHeight * _this6.controlCoordinates.targetScale <= _this6.controlCoordinates.containerHeight ? 0 : _this6.minMax(_this6.controlCoordinates.pointerOffsetY - (_this6.controlCoordinates.initialPointerOffsetY - _this6.controlCoordinates.initialOffsetY), _this6.controlCoordinates.limitOffsetY * -1, _this6.controlCoordinates.limitOffsetY);
+
+          if (Math.abs(_this6.controlCoordinates.targetOffsetX) === Math.abs(_this6.controlCoordinates.limitOffsetX)) {
+            _this6.controlCoordinates.initialOffsetX = _this6.controlCoordinates.targetOffsetX;
+            _this6.controlCoordinates.initialPointerOffsetX = _this6.controlCoordinates.pointerOffsetX;
+          }
+
+          if (Math.abs(_this6.controlCoordinates.targetOffsetY) === Math.abs(_this6.controlCoordinates.limitOffsetY)) {
+            _this6.controlCoordinates.initialOffsetY = _this6.controlCoordinates.targetOffsetY;
+            _this6.controlCoordinates.initialPointerOffsetY = _this6.controlCoordinates.pointerOffsetY;
+          }
+
+          _this6.setZoomData(_this6.controlCoordinates.initialScale, _this6.controlCoordinates.targetOffsetX, _this6.controlCoordinates.targetOffsetY);
+
+          _this6.zoomPanElement(_this6.controlCoordinates.targetOffsetX + "px", _this6.controlCoordinates.targetOffsetY + "px", _this6.controlCoordinates.targetScale);
+        }
+
+        if (!_this6.controlCoordinates.zoomed) {
+          _this6.controlCoordinates.swipeEnd = event.pageX || event.touches[0].pageX;
+          _this6.controlCoordinates.swipeYEnd = event.pageY || event.touches[0].pageY;
+          _this6.controlCoordinates.swipeDiff = _this6.controlCoordinates.swipeStart - _this6.controlCoordinates.swipeEnd;
+          _this6.controlCoordinates.swipeYDiff = _this6.controlCoordinates.swipeYStart - _this6.controlCoordinates.swipeYEnd;
+
+          if (_this6.options.animationSlide) {
+            _this6.slide(0, -_this6.controlCoordinates.swipeDiff + 'px');
+          }
+        }
+      });
+      this.addEventListener(this.domNodes.image, ['touchend.' + this.eventNamespace, 'mouseup.' + this.eventNamespace, 'touchcancel.' + this.eventNamespace, 'mouseleave.' + this.eventNamespace, 'pointerup', 'pointercancel', 'MSPointerUp', 'MSPointerCancel'], function (event) {
+        if (_this6.isTouchDevice && event.type === 'touchend') {
+          _this6.controlCoordinates.touchCount = event.touches.length;
+
+          if (_this6.controlCoordinates.touchCount === 0)
+            /* No touch */
+            {
+              /* Set attributes */
+              if (_this6.currentImage) {
+                _this6.setZoomData(_this6.controlCoordinates.initialScale, _this6.controlCoordinates.targetOffsetX, _this6.controlCoordinates.targetOffsetY);
+              }
+
+              if (_this6.controlCoordinates.initialScale === 1) {
+                _this6.controlCoordinates.zoomed = false;
+
+                if (_this6.domNodes.caption.style.display === 'none') {
+                  _this6.fadeIn(_this6.domNodes.caption, _this6.options.fadeSpeed);
+                }
+              }
+
+              _this6.controlCoordinates.initialPinchDistance = null;
+              _this6.controlCoordinates.capture = false;
+            } else if (_this6.controlCoordinates.touchCount === 1)
+            /* Single touch */
+            {
+              _this6.controlCoordinates.initialPointerOffsetX = event.touches[0].clientX;
+              _this6.controlCoordinates.initialPointerOffsetY = event.touches[0].clientY;
+            } else if (_this6.controlCoordinates.touchCount > 1)
+            /* Pinch */
+            {
+              _this6.controlCoordinates.initialPinchDistance = null;
+            }
+        }
+
+        if (_this6.controlCoordinates.mousedown) {
+          _this6.controlCoordinates.mousedown = false;
+          var possibleDir = true;
+
+          if (!_this6.options.loop) {
+            if (_this6.currentImageIndex === 0 && _this6.controlCoordinates.swipeDiff < 0) {
+              possibleDir = false;
+            }
+
+            if (_this6.currentImageIndex >= _this6.relatedElements.length - 1 && _this6.controlCoordinates.swipeDiff > 0) {
+              possibleDir = false;
+            }
+          }
+
+          if (Math.abs(_this6.controlCoordinates.swipeDiff) > _this6.options.swipeTolerance && possibleDir) {
+            _this6.loadImage(_this6.controlCoordinates.swipeDiff > 0 ? 1 : -1);
+          } else if (_this6.options.animationSlide) {
+            _this6.slide(_this6.options.animationSpeed / 1000, 0 + 'px');
+          }
+
+          if (_this6.options.swipeClose && Math.abs(_this6.controlCoordinates.swipeYDiff) > 50 && Math.abs(_this6.controlCoordinates.swipeDiff) < _this6.options.swipeTolerance) {
+            _this6.close();
+          }
+        }
+      });
+      this.addEventListener(this.domNodes.image, ['dblclick'], function (event) {
+        if (_this6.isTouchDevice) return;
+        _this6.controlCoordinates.initialPointerOffsetX = event.clientX;
+        _this6.controlCoordinates.initialPointerOffsetY = event.clientY;
+        _this6.controlCoordinates.containerHeight = _this6.getDimensions(_this6.domNodes.image).height;
+        _this6.controlCoordinates.containerWidth = _this6.getDimensions(_this6.domNodes.image).width;
+        _this6.controlCoordinates.imgHeight = _this6.getDimensions(_this6.currentImage).height;
+        _this6.controlCoordinates.imgWidth = _this6.getDimensions(_this6.currentImage).width;
+        _this6.controlCoordinates.containerOffsetX = _this6.domNodes.image.offsetLeft;
+        _this6.controlCoordinates.containerOffsetY = _this6.domNodes.image.offsetTop;
+
+        _this6.currentImage.classList.add('sl-transition');
+
+        if (!_this6.controlCoordinates.zoomed) {
+          _this6.controlCoordinates.initialScale = _this6.options.doubleTapZoom;
+
+          _this6.setZoomData(_this6.controlCoordinates.initialScale, 0, 0);
+
+          _this6.zoomPanElement(0 + "px", 0 + "px", _this6.controlCoordinates.initialScale);
+
+          if (!_this6.domNodes.caption.style.opacity && _this6.domNodes.caption.style.display !== 'none') {
+            _this6.fadeOut(_this6.domNodes.caption, _this6.options.fadeSpeed);
+          }
+
+          _this6.controlCoordinates.zoomed = true;
+        } else {
+          _this6.controlCoordinates.initialScale = 1;
+
+          _this6.setZoomData(_this6.controlCoordinates.initialScale, 0, 0);
+
+          _this6.zoomPanElement(0 + "px", 0 + "px", _this6.controlCoordinates.initialScale);
+
+          _this6.controlCoordinates.zoomed = false;
+
+          if (_this6.domNodes.caption.style.display === 'none') {
+            _this6.fadeIn(_this6.domNodes.caption, _this6.options.fadeSpeed);
+          }
+        }
+
+        setTimeout(function () {
+          if (_this6.currentImage) {
+            _this6.currentImage.classList.remove('sl-transition');
+          }
+        }, 200);
+        _this6.controlCoordinates.capture = true;
+        return false;
+      });
+    }
+  }, {
+    key: "getDimensions",
+    value: function getDimensions(element) {
+      var styles = window.getComputedStyle(element),
+          height = element.offsetHeight,
+          width = element.offsetWidth,
+          borderTopWidth = parseFloat(styles.borderTopWidth),
+          borderBottomWidth = parseFloat(styles.borderBottomWidth),
+          paddingTop = parseFloat(styles.paddingTop),
+          paddingBottom = parseFloat(styles.paddingBottom),
+          borderLeftWidth = parseFloat(styles.borderLeftWidth),
+          borderRightWidth = parseFloat(styles.borderRightWidth),
+          paddingLeft = parseFloat(styles.paddingLeft),
+          paddingRight = parseFloat(styles.paddingRight);
+      return {
+        height: height - borderBottomWidth - borderTopWidth - paddingTop - paddingBottom,
+        width: width - borderLeftWidth - borderRightWidth - paddingLeft - paddingRight
+      };
+    }
+  }, {
+    key: "updateHash",
+    value: function updateHash() {
+      var newHash = 'pid=' + (this.currentImageIndex + 1),
+          newURL = window.location.href.split('#')[0] + '#' + newHash;
+      this.hashReseted = false;
+
+      if (this.pushStateSupport) {
+        window.history[this.historyHasChanges ? 'replaceState' : 'pushState']('', document.title, newURL);
+      } else {
+        // what is the browser target of this?
+        if (this.historyHasChanges) {
+          window.location.replace(newURL);
+        } else {
+          window.location.hash = newHash;
+        }
+      }
+
+      if (!this.historyHasChanges) {
+        this.urlChangedOnce = true;
+      }
+
+      this.historyHasChanges = true;
+    }
+  }, {
+    key: "resetHash",
+    value: function resetHash() {
+      this.hashReseted = true;
+
+      if (this.urlChangedOnce) {
+        history.back();
+      } else {
+        if (this.pushStateSupport) {
+          history.pushState('', document.title, window.location.pathname + window.location.search);
+        } else {
+          window.location.hash = '';
+        }
+      } //
+      //in case an history operation is still pending
+
+
+      clearTimeout(this.historyUpdateTimeout);
+    }
+  }, {
+    key: "updateURL",
+    value: function updateURL() {
+      clearTimeout(this.historyUpdateTimeout);
+
+      if (!this.historyHasChanges) {
+        this.updateHash(); // first time
+      } else {
+        this.historyUpdateTimeout = setTimeout(this.updateHash.bind(this), 800);
+      }
+    }
+  }, {
+    key: "setCaption",
+    value: function setCaption(captionText, imageWidth) {
+      var _this7 = this;
+
+      if (this.options.captions && captionText && captionText !== '' && typeof captionText !== "undefined") {
+        this.hide(this.domNodes.caption);
+        this.domNodes.caption.style.width = imageWidth + 'px';
+        this.domNodes.caption.innerHTML = captionText;
+        this.domNodes.image.appendChild(this.domNodes.caption);
+        setTimeout(function () {
+          _this7.fadeIn(_this7.domNodes.caption, _this7.options.fadeSpeed);
+        }, this.options.captionDelay);
+      }
+    }
+  }, {
+    key: "slide",
+    value: function slide(speed, pos) {
+      if (!this.transitionCapable) {
+        return this.domNodes.image.style.left = pos;
+      }
+
+      this.domNodes.image.style[this.transitionPrefix + 'transform'] = 'translateX(' + pos + ')';
+      this.domNodes.image.style[this.transitionPrefix + 'transition'] = this.transitionPrefix + 'transform ' + speed + 's linear';
+    }
+  }, {
+    key: "getRelated",
+    value: function getRelated(rel) {
+      var elems;
+
+      if (rel && rel !== false && rel !== 'nofollow') {
+        elems = Array.from(this.elements).filter(function (element) {
+          return element.getAttribute('rel') === rel;
+        });
+      } else {
+        elems = this.elements;
+      }
+
+      return elems;
+    }
+  }, {
+    key: "openImage",
+    value: function openImage(element) {
+      var _this8 = this;
+
+      element.dispatchEvent(new Event('show.' + this.eventNamespace));
+
+      if (this.options.disableScroll) {
+        this.globalScrollbarWidth = this.toggleScrollbar('hide');
+      }
+
+      if (this.options.htmlClass && this.options.htmlClass !== '') {
+        document.querySelector('html').classList.add(this.options.htmlClass);
+      }
+
+      document.body.appendChild(this.domNodes.wrapper);
+      this.domNodes.wrapper.appendChild(this.domNodes.image);
+
+      if (this.options.overlay) {
+        document.body.appendChild(this.domNodes.overlay);
+      }
+
+      this.relatedElements = this.getRelated(element.rel);
+
+      if (this.options.showCounter) {
+        if (this.relatedElements.length == 1 && this.domNodes.wrapper.contains(this.domNodes.counter)) {
+          this.domNodes.wrapper.removeChild(this.domNodes.counter);
+        } else if (this.relatedElements.length > 1 && !this.domNodes.wrapper.contains(this.domNodes.counter)) {
+          this.domNodes.wrapper.appendChild(this.domNodes.counter);
+        }
+      }
+
+      this.isAnimating = true;
+      this.currentImageIndex = this.relatedElements.indexOf(element);
+      var targetURL = element.getAttribute(this.options.sourceAttr);
+      this.currentImage = document.createElement('img');
+      this.currentImage.style.display = 'none';
+      this.currentImage.setAttribute('src', targetURL);
+      this.currentImage.dataset.scale = 1;
+      this.currentImage.dataset.translateX = 0;
+      this.currentImage.dataset.translateY = 0;
+
+      if (this.loadedImages.indexOf(targetURL) === -1) {
+        this.loadedImages.push(targetURL);
+      }
+
+      this.domNodes.image.innerHTML = '';
+      this.domNodes.image.setAttribute('style', '');
+      this.domNodes.image.appendChild(this.currentImage);
+      this.fadeIn(this.domNodes.overlay, this.options.fadeSpeed);
+      this.fadeIn([this.domNodes.counter, this.domNodes.navigation, this.domNodes.closeButton], this.options.fadeSpeed);
+      this.show(this.domNodes.spinner);
+      this.domNodes.counter.querySelector('.sl-current').innerHTML = this.currentImageIndex + 1;
+      this.domNodes.counter.querySelector('.sl-total').innerHTML = this.relatedElements.length;
+      this.adjustImage();
+
+      if (this.options.preloading) {
+        this.preload();
+      }
+
+      setTimeout(function () {
+        element.dispatchEvent(new Event('shown.' + _this8.eventNamespace));
+      }, this.options.animationSpeed);
+    }
+  }, {
+    key: "forceFocus",
+    value: function forceFocus() {
+      var _this9 = this;
+
+      this.removeEventListener(document, 'focusin.' + this.eventNamespace);
+      this.addEventListener(document, 'focusin.' + this.eventNamespace, function (event) {
+        if (document !== event.target && _this9.domNodes.wrapper !== event.target && !_this9.domNodes.wrapper.contains(event.target)) {
+          _this9.domNodes.wrapper.focus();
+        }
+      });
+    } // utility
+
+  }, {
+    key: "addEventListener",
+    value: function addEventListener(elements, events, callback, opts) {
+      elements = this.wrap(elements);
+      events = this.wrap(events);
+
+      var _iterator = _createForOfIteratorHelper(elements),
+          _step;
+
+      try {
+        for (_iterator.s(); !(_step = _iterator.n()).done;) {
+          var element = _step.value;
+
+          if (!element.namespaces) {
+            element.namespaces = {};
+          } // save the namespaces addEventListener the DOM element itself
+
+
+          var _iterator2 = _createForOfIteratorHelper(events),
+              _step2;
+
+          try {
+            for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
+              var event = _step2.value;
+              var options = opts || false;
+              element.namespaces[event] = callback;
+              element.addEventListener(event.split('.')[0], callback, options);
+            }
+          } catch (err) {
+            _iterator2.e(err);
+          } finally {
+            _iterator2.f();
+          }
+        }
+      } catch (err) {
+        _iterator.e(err);
+      } finally {
+        _iterator.f();
+      }
+    }
+  }, {
+    key: "removeEventListener",
+    value: function removeEventListener(elements, events) {
+      elements = this.wrap(elements);
+      events = this.wrap(events);
+
+      var _iterator3 = _createForOfIteratorHelper(elements),
+          _step3;
+
+      try {
+        for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
+          var element = _step3.value;
+
+          var _iterator4 = _createForOfIteratorHelper(events),
+              _step4;
+
+          try {
+            for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
+              var event = _step4.value;
+
+              if (element.namespaces && element.namespaces[event]) {
+                element.removeEventListener(event.split('.')[0], element.namespaces[event]);
+                delete element.namespaces[event];
+              }
+            }
+          } catch (err) {
+            _iterator4.e(err);
+          } finally {
+            _iterator4.f();
+          }
+        }
+      } catch (err) {
+        _iterator3.e(err);
+      } finally {
+        _iterator3.f();
+      }
+    }
+  }, {
+    key: "fadeOut",
+    value: function fadeOut(elements, duration, callback) {
+      var _this10 = this;
+
+      elements = this.wrap(elements);
+
+      var _iterator5 = _createForOfIteratorHelper(elements),
+          _step5;
+
+      try {
+        for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {
+          var element = _step5.value;
+          element.style.opacity = 1;
+        }
+      } catch (err) {
+        _iterator5.e(err);
+      } finally {
+        _iterator5.f();
+      }
+
+      this.isFadeIn = false;
+
+      var step = 16.66666 / (duration || this.options.fadeSpeed),
+          fade = function fade() {
+        var currentOpacity = parseFloat(elements[0].style.opacity);
+
+        if ((currentOpacity -= step) < 0) {
+          var _iterator6 = _createForOfIteratorHelper(elements),
+              _step6;
+
+          try {
+            for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {
+              var element = _step6.value;
+              element.style.display = "none";
+              element.style.opacity = '';
+            }
+          } catch (err) {
+            _iterator6.e(err);
+          } finally {
+            _iterator6.f();
+          }
+
+          callback && callback.call(_this10, elements);
+        } else {
+          var _iterator7 = _createForOfIteratorHelper(elements),
+              _step7;
+
+          try {
+            for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) {
+              var _element = _step7.value;
+              _element.style.opacity = currentOpacity;
+            }
+          } catch (err) {
+            _iterator7.e(err);
+          } finally {
+            _iterator7.f();
+          }
+
+          requestAnimationFrame(fade);
+        }
+      };
+
+      fade();
+    }
+  }, {
+    key: "fadeIn",
+    value: function fadeIn(elements, duration, callback, display) {
+      var _this11 = this;
+
+      elements = this.wrap(elements);
+
+      var _iterator8 = _createForOfIteratorHelper(elements),
+          _step8;
+
+      try {
+        for (_iterator8.s(); !(_step8 = _iterator8.n()).done;) {
+          var element = _step8.value;
+          element.style.opacity = 0;
+          element.style.display = display || "block";
+        }
+      } catch (err) {
+        _iterator8.e(err);
+      } finally {
+        _iterator8.f();
+      }
+
+      this.isFadeIn = true;
+
+      var opacityTarget = parseFloat(elements[0].dataset.opacityTarget || 1),
+          step = 16.66666 * opacityTarget / (duration || this.options.fadeSpeed),
+          fade = function fade() {
+        var currentOpacity = parseFloat(elements[0].style.opacity);
+
+        if (!((currentOpacity += step) > opacityTarget)) {
+          var _iterator9 = _createForOfIteratorHelper(elements),
+              _step9;
+
+          try {
+            for (_iterator9.s(); !(_step9 = _iterator9.n()).done;) {
+              var element = _step9.value;
+              element.style.opacity = currentOpacity;
+            }
+          } catch (err) {
+            _iterator9.e(err);
+          } finally {
+            _iterator9.f();
+          }
+
+          if (!_this11.isFadeIn) return;
+          requestAnimationFrame(fade);
+        } else {
+          var _iterator10 = _createForOfIteratorHelper(elements),
+              _step10;
+
+          try {
+            for (_iterator10.s(); !(_step10 = _iterator10.n()).done;) {
+              var _element2 = _step10.value;
+              _element2.style.opacity = '';
+            }
+          } catch (err) {
+            _iterator10.e(err);
+          } finally {
+            _iterator10.f();
+          }
+
+          callback && callback.call(_this11, elements);
+        }
+      };
+
+      fade();
+    }
+  }, {
+    key: "hide",
+    value: function hide(elements) {
+      elements = this.wrap(elements);
+
+      var _iterator11 = _createForOfIteratorHelper(elements),
+          _step11;
+
+      try {
+        for (_iterator11.s(); !(_step11 = _iterator11.n()).done;) {
+          var element = _step11.value;
+          element.dataset.initialDisplay = element.style.display;
+          element.style.display = 'none';
+        }
+      } catch (err) {
+        _iterator11.e(err);
+      } finally {
+        _iterator11.f();
+      }
+    }
+  }, {
+    key: "show",
+    value: function show(elements, display) {
+      elements = this.wrap(elements);
+
+      var _iterator12 = _createForOfIteratorHelper(elements),
+          _step12;
+
+      try {
+        for (_iterator12.s(); !(_step12 = _iterator12.n()).done;) {
+          var element = _step12.value;
+          element.style.display = element.dataset.initialDisplay || display || 'block';
+        }
+      } catch (err) {
+        _iterator12.e(err);
+      } finally {
+        _iterator12.f();
+      }
+    }
+  }, {
+    key: "wrap",
+    value: function wrap(input) {
+      return typeof input[Symbol.iterator] === 'function' && typeof input !== 'string' ? input : [input];
+    }
+  }, {
+    key: "on",
+    value: function on(events, callback) {
+      events = this.wrap(events);
+
+      var _iterator13 = _createForOfIteratorHelper(this.elements),
+          _step13;
+
+      try {
+        for (_iterator13.s(); !(_step13 = _iterator13.n()).done;) {
+          var element = _step13.value;
+
+          if (!element.fullyNamespacedEvents) {
+            element.fullyNamespacedEvents = {};
+          }
+
+          var _iterator14 = _createForOfIteratorHelper(events),
+              _step14;
+
+          try {
+            for (_iterator14.s(); !(_step14 = _iterator14.n()).done;) {
+              var event = _step14.value;
+              element.fullyNamespacedEvents[event] = callback;
+              element.addEventListener(event, callback);
+            }
+          } catch (err) {
+            _iterator14.e(err);
+          } finally {
+            _iterator14.f();
+          }
+        }
+      } catch (err) {
+        _iterator13.e(err);
+      } finally {
+        _iterator13.f();
+      }
+
+      return this;
+    }
+  }, {
+    key: "off",
+    value: function off(events) {
+      events = this.wrap(events);
+
+      var _iterator15 = _createForOfIteratorHelper(this.elements),
+          _step15;
+
+      try {
+        for (_iterator15.s(); !(_step15 = _iterator15.n()).done;) {
+          var element = _step15.value;
+
+          var _iterator16 = _createForOfIteratorHelper(events),
+              _step16;
+
+          try {
+            for (_iterator16.s(); !(_step16 = _iterator16.n()).done;) {
+              var event = _step16.value;
+
+              if (typeof element.fullyNamespacedEvents !== 'undefined' && event in element.fullyNamespacedEvents) {
+                element.removeEventListener(event, element.fullyNamespacedEvents[event]);
+              }
+            }
+          } catch (err) {
+            _iterator16.e(err);
+          } finally {
+            _iterator16.f();
+          }
+        }
+      } catch (err) {
+        _iterator15.e(err);
+      } finally {
+        _iterator15.f();
+      }
+
+      return this;
+    } // api
+
+  }, {
+    key: "open",
+    value: function open(elem) {
+      elem = elem || this.elements[0];
+
+      if (typeof jQuery !== "undefined" && elem instanceof jQuery) {
+        elem = elem.get(0);
+      }
+
+      this.initialImageIndex = this.elements.indexOf(elem);
+
+      if (this.initialImageIndex > -1) {
+        this.openImage(elem);
+      }
+    }
+  }, {
+    key: "next",
+    value: function next() {
+      this.loadImage(1);
+    }
+  }, {
+    key: "prev",
+    value: function prev() {
+      this.loadImage(-1);
+    } //close is exposed anyways..
+
+  }, {
+    key: "destroy",
+    value: function destroy() {
+      //remove all custom event listeners from elements
+      this.off(['close.' + this.eventNamespace, 'closed.' + this.eventNamespace, 'nextImageLoaded.' + this.eventNamespace, 'prevImageLoaded.' + this.eventNamespace, 'change.' + this.eventNamespace, 'nextDone.' + this.eventNamespace, 'prevDone.' + this.eventNamespace, 'error.' + this.eventNamespace, 'changed.' + this.eventNamespace, 'next.' + this.eventNamespace, 'prev.' + this.eventNamespace, 'show.' + this.eventNamespace, 'shown.' + this.eventNamespace]);
+      this.removeEventListener(this.elements, 'click.' + this.eventNamespace);
+      this.removeEventListener(document, 'focusin.' + this.eventNamespace);
+      this.removeEventListener(document.body, 'contextmenu.' + this.eventNamespace);
+      this.removeEventListener(document.body, 'keyup.' + this.eventNamespace);
+      this.removeEventListener(this.domNodes.navigation.getElementsByTagName('button'), 'click.' + this.eventNamespace);
+      this.removeEventListener(this.domNodes.closeButton, 'click.' + this.eventNamespace);
+      this.removeEventListener(window, 'resize.' + this.eventNamespace);
+      this.removeEventListener(window, 'hashchange.' + this.eventNamespace);
+      this.close();
+
+      if (this.isOpen) {
+        document.body.removeChild(this.domNodes.wrapper);
+        document.body.removeChild(this.domNodes.overlay);
+      }
+
+      this.elements = null;
+    }
+  }, {
+    key: "refresh",
+    value: function refresh() {
+      if (!this.initialSelector) {
+        throw 'refreshing only works when you initialize using a selector!';
+      }
+
+      var options = this.options,
+          selector = this.initialSelector;
+      this.destroy();
+      this.constructor(selector, options);
+      return this;
+    }
+  }, {
+    key: "hash",
+    get: function get() {
+      return window.location.hash.substring(1);
+    }
+  }]);
+
+  return SimpleLightbox;
+}();
+
+var _default = SimpleLightbox;
+exports["default"] = _default;
+global.SimpleLightbox = SimpleLightbox;
\ No newline at end of file
diff --git a/photos/simplelightbox-master/src/jquery-plugin-wrap.js b/photos/simplelightbox-master/src/jquery-plugin-wrap.js
new file mode 100644
index 0000000000000000000000000000000000000000..4a0995fe71b7899cfbceffd29cf7d3d43f622ee8
--- /dev/null
+++ b/photos/simplelightbox-master/src/jquery-plugin-wrap.js
@@ -0,0 +1,8 @@
+require('./simple-lightbox');
+
+(function ($, window, document, undefined) {
+    'use strict';
+    $.fn.simpleLightbox = function (options) {
+        return this.length ? new SimpleLightbox(this.get(), options) : null;
+    }
+})(jQuery, window, document);
diff --git a/photos/simplelightbox-master/src/legacy.js b/photos/simplelightbox-master/src/legacy.js
new file mode 100644
index 0000000000000000000000000000000000000000..dd9aea0cfab4263e2cb70715cd2cb14b8dbfbe26
--- /dev/null
+++ b/photos/simplelightbox-master/src/legacy.js
@@ -0,0 +1,6 @@
+import "core-js/stable";
+import "regenerator-runtime/runtime";
+
+(function(self, undefined) {function Call(t,l){var n=arguments.length>2?arguments[2]:[];if(!1===IsCallable(t))throw new TypeError(Object.prototype.toString.call(t)+"is not a function.");return t.apply(l,n)}function CreateMethodProperty(e,r,t){var a={value:t,writable:!0,enumerable:!1,configurable:!0};Object.defineProperty(e,r,a)}function Get(n,t){return n[t]}function IsCallable(n){return"function"==typeof n}function SameValueNonNumber(e,n){return e===n}function ToInteger(n){var i=Number(n);return isNaN(i)?0:1/i===Infinity||1/i==-Infinity||i===Infinity||i===-Infinity?i:(i<0?-1:1)*Math.floor(Math.abs(i))}function ToLength(n){var t=ToInteger(n);return t<=0?0:Math.min(t,Math.pow(2,53)-1)}function ToObject(e){if(null===e||e===undefined)throw TypeError();return Object(e)}function GetV(t,e){return ToObject(t)[e]}function GetMethod(e,n){var r=GetV(e,n);if(null===r||r===undefined)return undefined;if(!1===IsCallable(r))throw new TypeError("Method not callable: "+n);return r}function Type(e){switch(typeof e){case"undefined":return"undefined";case"boolean":return"boolean";case"number":return"number";case"string":return"string";case"symbol":return"symbol";default:return null===e?"null":"Symbol"in self&&(e instanceof self.Symbol||e.constructor===self.Symbol)?"symbol":"object"}}function OrdinaryToPrimitive(r,t){if("string"===t)var e=["toString","valueOf"];else e=["valueOf","toString"];for(var i=0;i<e.length;++i){var n=e[i],a=Get(r,n);if(IsCallable(a)){var o=Call(a,r);if("object"!==Type(o))return o}}throw new TypeError("Cannot convert to primitive.")}function SameValueZero(n,e){return Type(n)===Type(e)&&("number"===Type(n)?!(!isNaN(n)||!isNaN(e))||(1/n===Infinity&&1/e==-Infinity||(1/n==-Infinity&&1/e===Infinity||n===e)):SameValueNonNumber(n,e))}function ToPrimitive(e){var t=arguments.length>1?arguments[1]:undefined;if("object"===Type(e)){if(arguments.length<2)var i="default";else t===String?i="string":t===Number&&(i="number");var r="function"==typeof self.Symbol&&"symbol"==typeof self.Symbol.toPrimitive?GetMethod(e,self.Symbol.toPrimitive):undefined;if(r!==undefined){var n=Call(r,e,[i]);if("object"!==Type(n))return n;throw new TypeError("Cannot convert exotic object to primitive.")}return"default"===i&&(i="number"),OrdinaryToPrimitive(e,i)}return e}function ToString(t){switch(Type(t)){case"symbol":throw new TypeError("Cannot convert a Symbol value to a string");case"object":return ToString(ToPrimitive(t,String));default:return String(t)}}CreateMethodProperty(Array.prototype,"includes",function e(r){"use strict";var t=ToObject(this),o=ToLength(Get(t,"length"));if(0===o)return!1;var n=ToInteger(arguments[1]);if(n>=0)var a=n;else(a=o+n)<0&&(a=0);for(;a<o;){var i=Get(t,ToString(a));if(SameValueZero(r,i))return!0;a+=1}return!1});!function(){function e(e,t){if(!e)throw new Error("Not enough arguments");var n;if("createEvent"in document){n=document.createEvent("Event");var o=!(!t||t.bubbles===undefined)&&t.bubbles,i=!(!t||t.cancelable===undefined)&&t.cancelable;return n.initEvent(e,o,i),n}return n=document.createEventObject(),n.type=e,n.bubbles=!(!t||t.bubbles===undefined)&&t.bubbles,n.cancelable=!(!t||t.cancelable===undefined)&&t.cancelable,n}var t={click:1,dblclick:1,keyup:1,keypress:1,keydown:1,mousedown:1,mouseup:1,mousemove:1,mouseover:1,mouseenter:1,mouseleave:1,mouseout:1,storage:1,storagecommit:1,textinput:1};if("undefined"!=typeof document&&"undefined"!=typeof window){var n=window.Event&&window.Event.prototype||null;e.NONE=0,e.CAPTURING_PHASE=1,e.AT_TARGET=2,e.BUBBLING_PHASE=3,window.Event=Window.prototype.Event=e,n&&Object.defineProperty(window.Event,"prototype",{configurable:!1,enumerable:!1,writable:!0,value:n}),"createEvent"in document||(window.addEventListener=Window.prototype.addEventListener=Document.prototype.addEventListener=Element.prototype.addEventListener=function o(){var e=this,n=arguments[0],o=arguments[1];if(e===window&&n in t)throw new Error("In IE8 the event: "+n+" is not available on the window object. Please see https://github.com/Financial-Times/polyfill-service/issues/317 for more information.");e._events||(e._events={}),e._events[n]||(e._events[n]=function(t){var n,o=e._events[t.type].list,i=o.slice(),r=-1,c=i.length;for(t.preventDefault=function a(){!1!==t.cancelable&&(t.returnValue=!1)},t.stopPropagation=function l(){t.cancelBubble=!0},t.stopImmediatePropagation=function s(){t.cancelBubble=!0,t.cancelImmediate=!0},t.currentTarget=e,t.relatedTarget=t.fromElement||null,t.target=t.target||t.srcElement||e,t.timeStamp=(new Date).getTime(),t.clientX&&(t.pageX=t.clientX+document.documentElement.scrollLeft,t.pageY=t.clientY+document.documentElement.scrollTop);++r<c&&!t.cancelImmediate;)r in i&&(n=i[r],o.includes(n)&&"function"==typeof n&&n.call(e,t))},e._events[n].list=[],e.attachEvent&&e.attachEvent("on"+n,e._events[n])),e._events[n].list.push(o)},window.removeEventListener=Window.prototype.removeEventListener=Document.prototype.removeEventListener=Element.prototype.removeEventListener=function i(){var e,t=this,n=arguments[0],o=arguments[1];t._events&&t._events[n]&&t._events[n].list&&-1!==(e=t._events[n].list.indexOf(o))&&(t._events[n].list.splice(e,1),t._events[n].list.length||(t.detachEvent&&t.detachEvent("on"+n,t._events[n]),delete t._events[n]))},window.dispatchEvent=Window.prototype.dispatchEvent=Document.prototype.dispatchEvent=Element.prototype.dispatchEvent=function r(e){if(!arguments.length)throw new Error("Not enough arguments");if(!e||"string"!=typeof e.type)throw new Error("DOM Events Exception 0");var t=this,n=e.type;try{if(!e.bubbles){e.cancelBubble=!0;var o=function(e){e.cancelBubble=!0,(t||window).detachEvent("on"+n,o)};this.attachEvent("on"+n,o)}this.fireEvent("on"+n,e)}catch(i){e.target=t;do{e.currentTarget=t,"_events"in t&&"function"==typeof t._events[n]&&t._events[n].call(t,e),"function"==typeof t["on"+n]&&t["on"+n].call(t,e),t=9===t.nodeType?t.parentWindow:t.parentNode}while(t&&!e.cancelBubble)}return!0},document.attachEvent("onreadystatechange",function(){"complete"===document.readyState&&document.dispatchEvent(new e("DOMContentLoaded",{bubbles:!0}))}))}}();self.CustomEvent=function e(t,n){if(!t)throw Error('TypeError: Failed to construct "CustomEvent": An event name must be provided.');var l;if(n=n||{bubbles:!1,cancelable:!1,detail:null},"createEvent"in document)try{l=document.createEvent("CustomEvent"),l.initCustomEvent(t,n.bubbles,n.cancelable,n.detail)}catch(a){l=document.createEvent("Event"),l.initEvent(t,n.bubbles,n.cancelable),l.detail=n.detail}else l=new Event(t,n),l.detail=n&&n.detail||null;return l},CustomEvent.prototype=Event.prototype;})('object' === typeof window && window || 'object' === typeof self && self || 'object' === typeof global && global || {});
+
+require('./simple-lightbox');
\ No newline at end of file
diff --git a/photos/simplelightbox-master/src/license-notice.txt b/photos/simplelightbox-master/src/license-notice.txt
new file mode 100644
index 0000000000000000000000000000000000000000..0bfdb96626cc6fbb8f3a934f17c365d45dc47c1b
--- /dev/null
+++ b/photos/simplelightbox-master/src/license-notice.txt
@@ -0,0 +1,6 @@
+/*!
+	By André Rinas, www.andrerinas.de
+	Documentation, www.simplelightbox.de
+	Available for use under the MIT License
+	Version 2.7.0
+*/
diff --git a/photos/simplelightbox-master/src/simple-lightbox.js b/photos/simplelightbox-master/src/simple-lightbox.js
new file mode 100644
index 0000000000000000000000000000000000000000..6169062278646a7351e295d4d3d61e4e3dfb344a
--- /dev/null
+++ b/photos/simplelightbox-master/src/simple-lightbox.js
@@ -0,0 +1,1371 @@
+class SimpleLightbox {
+
+    defaultOptions = {
+        sourceAttr: 'href',
+        overlay: true,
+        spinner: true,
+        nav: true,
+        navText: ['&lsaquo;', '&rsaquo;'],
+        captions: true,
+        captionDelay: 0,
+        captionSelector: 'img',
+        captionType: 'attr',
+        captionsData: 'title',
+        captionPosition: 'bottom',
+        captionClass: '',
+        close: true,
+        closeText: '&times;',
+        swipeClose: true,
+        showCounter: true,
+        fileExt: 'png|jpg|jpeg|gif|webp',
+        animationSlide: true,
+        animationSpeed: 250,
+        preloading: true,
+        enableKeyboard: true,
+        loop: true,
+        rel: false,
+        docClose: true,
+        swipeTolerance: 50,
+        className: 'simple-lightbox',
+        widthRatio: 0.8,
+        heightRatio: 0.9,
+        scaleImageToRatio: false,
+        disableRightClick: false,
+        disableScroll: true,
+        alertError: true,
+        alertErrorMessage: 'Image not found, next image will be loaded',
+        additionalHtml: false,
+        history: true,
+        throttleInterval: 0,
+        doubleTapZoom: 2,
+        maxZoom: 10,
+        htmlClass: 'has-lightbox',
+        rtl: false,
+        fixedClass: 'sl-fixed',
+        fadeSpeed: 300,
+        uniqueImages: true,
+        focus: true
+    };
+
+    transitionPrefix;
+    transitionCapable = false;
+
+    isTouchDevice = ('ontouchstart' in window);
+
+
+    initialLocationHash;
+
+    pushStateSupport = ('pushState' in history);
+
+    isOpen = false;
+    isAnimating = false;
+    isClosing = false;
+    isFadeIn = false;
+    urlChangedOnce = false;
+    hashReseted = false;
+    historyHasChanges = false;
+    historyUpdateTimeout = null;
+
+    currentImage;
+    eventNamespace = 'simplelightbox';
+    domNodes = {};
+
+    loadedImages = [];
+    initialImageIndex = 0;
+    currentImageIndex = 0;
+
+    initialSelector = null;
+    globalScrollbarWidth = 0;
+
+    controlCoordinates = {
+        swipeDiff: 0,
+        swipeYDiff: 0,
+        swipeStart: 0,
+        swipeEnd: 0,
+        swipeYStart: 0,
+        swipeYEnd: 0,
+        mousedown: false,
+        imageLeft: 0,
+        zoomed: false,
+        containerHeight: 0,
+        containerWidth: 0,
+        containerOffsetX: 0,
+        containerOffsetY: 0,
+        imgHeight: 0,
+        imgWidth: 0,
+        capture: false,
+        initialOffsetX: 0,
+        initialOffsetY: 0,
+        initialPointerOffsetX: 0,
+        initialPointerOffsetY: 0,
+        initialPointerOffsetX2: 0,
+        initialPointerOffsetY2: 0,
+        initialScale: 1,
+        initialPinchDistance: 0,
+        pointerOffsetX: 0,
+        pointerOffsetY: 0,
+        pointerOffsetX2: 0,
+        pointerOffsetY2: 0,
+        targetOffsetX: 0,
+        targetOffsetY: 0,
+        targetScale: 0,
+        pinchOffsetX: 0,
+        pinchOffsetY: 0,
+        limitOffsetX: 0,
+        limitOffsetY: 0,
+        scaleDifference: 0,
+        targetPinchDistance: 0,
+        touchCount: 0,
+        doubleTapped: false,
+        touchmoveCount: 0
+    };
+
+    constructor(elements, options) {
+
+        this.options = Object.assign(this.defaultOptions, options);
+
+        if (typeof elements === 'string') {
+            this.initialSelector = elements;
+            this.elements = Array.from(document.querySelectorAll(elements));
+        } else {
+            this.elements = ((typeof elements.length !== 'undefined') && elements.length > 0) ? Array.from(elements) : [elements];
+        }
+
+        this.relatedElements = [];
+
+        this.transitionPrefix = this.calculateTransitionPrefix();
+        this.transitionCapable = this.transitionPrefix !== false;
+        this.initialLocationHash = this.hash;
+
+        // this should be handled by attribute selector IMHO! => 'a[rel=bla]'...
+        if (this.options.rel) {
+            this.elements = this.getRelated(this.options.rel);
+        }
+
+        if (this.options.uniqueImages) {
+            let imgArr = [];
+            this.elements = Array.from(this.elements).filter(
+                element => {
+                    let src = element.getAttribute(this.options.sourceAttr);
+                    if(imgArr.indexOf(src) === -1) {
+                        imgArr.push(src);
+                        return true;
+                    }
+                    return false;
+                }
+            );
+        }
+
+        this.createDomNodes();
+
+        if (this.options.close) {
+            this.domNodes.wrapper.appendChild(this.domNodes.closeButton);
+        }
+
+        if (this.options.nav) {
+            this.domNodes.wrapper.appendChild(this.domNodes.navigation);
+        }
+
+        if (this.options.spinner) {
+            this.domNodes.wrapper.appendChild(this.domNodes.spinner);
+        }
+
+        this.addEventListener(this.elements, 'click.' + this.eventNamespace, (event) => {
+
+            if (this.isValidLink(event.currentTarget)) {
+                event.preventDefault();
+                if (this.isAnimating) {
+                    return false;
+                }
+
+                this.initialImageIndex = this.elements.indexOf(event.currentTarget);
+                this.openImage(event.currentTarget);
+            }
+        });
+
+        // close addEventListener click addEventListener doc
+        if (this.options.docClose) {
+            this.addEventListener(this.domNodes.wrapper, ['click.' + this.eventNamespace, 'touchstart.' + this.eventNamespace], (event) => {
+                if (this.isOpen && event.target === event.currentTarget) {
+                    this.close();
+                }
+            });
+        }
+
+        // disable rightclick
+        if (this.options.disableRightClick) {
+            this.addEventListener(document.body, 'contextmenu.' + this.eventNamespace, (event) => {
+                if (event.target.classList.contains('sl-overlay')) {
+                    event.preventDefault();
+                }
+            });
+        }
+
+        // keyboard-control
+        if (this.options.enableKeyboard) {
+            this.addEventListener(document.body, 'keyup.' + this.eventNamespace, this.throttle((event) => {
+                this.controlCoordinates.swipeDiff = 0;
+                // keyboard control only if lightbox is open
+
+                if (this.isAnimating && event.key === 'Escape') {
+                    this.currentImage.setAttribute('src', '');
+                    this.isAnimating = false;
+                    return this.close();
+                }
+
+                if (this.isOpen) {
+                    event.preventDefault();
+                    if (event.key === 'Escape') {
+                        this.close();
+                    }
+                    if(!this.isAnimating && ['ArrowLeft', 'ArrowRight'].indexOf(event.key) > -1) {
+                      this.loadImage(event.key === 'ArrowRight' ? 1 : -1);
+                    }
+                }
+            }, this.options.throttleInterval));
+        }
+
+        this.addEvents();
+    }
+
+    createDomNodes() {
+        this.domNodes.overlay = document.createElement('div');
+        this.domNodes.overlay.classList.add('sl-overlay');
+        this.domNodes.overlay.dataset.opacityTarget = ".7";
+
+        this.domNodes.closeButton = document.createElement('button');
+        this.domNodes.closeButton.classList.add('sl-close');
+        this.domNodes.closeButton.innerHTML = this.options.closeText;
+
+        this.domNodes.spinner = document.createElement('div');
+        this.domNodes.spinner.classList.add('sl-spinner');
+        this.domNodes.spinner.innerHTML = '<div></div>';
+
+        this.domNodes.navigation = document.createElement('div');
+        this.domNodes.navigation.classList.add('sl-navigation');
+        this.domNodes.navigation.innerHTML = `<button class="sl-prev">${this.options.navText[0]}</button><button class="sl-next">${this.options.navText[1]}</button>`;
+
+        this.domNodes.counter = document.createElement('div');
+        this.domNodes.counter.classList.add('sl-counter');
+        this.domNodes.counter.innerHTML = '<span class="sl-current"></span>/<span class="sl-total"></span>';
+
+        this.domNodes.caption = document.createElement('div');
+        this.domNodes.caption.classList.add('sl-caption', 'pos-' + this.options.captionPosition);
+        if (this.options.captionClass) {
+            this.domNodes.caption.classList.add(this.options.captionClass);
+        }
+
+        this.domNodes.image = document.createElement('div');
+        this.domNodes.image.classList.add('sl-image');
+
+        this.domNodes.wrapper = document.createElement('div');
+        this.domNodes.wrapper.classList.add('sl-wrapper');
+        this.domNodes.wrapper.setAttribute('tabindex',-1);
+        this.domNodes.wrapper.setAttribute('role','dialog');
+        this.domNodes.wrapper.setAttribute('aria-hidden',false);
+        if (this.options.className) {
+            this.domNodes.wrapper.classList.add(this.options.className);
+        }
+        if(this.options.rtl) {
+            this.domNodes.wrapper.classList.add('sl-dir-rtl');
+        }
+    }
+
+    throttle(func, limit) {
+        let inThrottle;
+        return function () {
+            if (!inThrottle) {
+                func.apply(this, arguments);
+                inThrottle = true;
+                setTimeout(function () {
+                    return inThrottle = false;
+                }, limit);
+            }
+        };
+    }
+
+    isValidLink(element) {
+        return (!this.options.fileExt) || ('pathname' in element && (new RegExp('(' + this.options.fileExt + ')$', 'i')).test(element.pathname));
+    }
+
+    calculateTransitionPrefix() {
+        let s = (document.body || document.documentElement).style;
+
+        return 'transition' in s ? '' :
+            'WebkitTransition' in s ? '-webkit-' :
+                'MozTransition' in s ? '-moz-' :
+                    'OTransition' in s ? '-o' :
+                        false;
+    }
+
+    toggleScrollbar(type) {
+        let scrollbarWidth = 0;
+        let fixedElements =  [].slice.call(document.querySelectorAll('.'+this.options.fixedClass))
+        if (type === 'hide') {
+            let fullWindowWidth = window.innerWidth;
+            if (!fullWindowWidth) {
+                let documentElementRect = document.documentElement.getBoundingClientRect();
+                fullWindowWidth = documentElementRect.right - Math.abs(documentElementRect.left);
+            }
+            if (document.body.clientWidth < fullWindowWidth) {
+                let scrollDiv = document.createElement('div'),
+                    paddingRight = parseInt(document.body.style.paddingRight || 0, 10);
+
+                scrollDiv.classList.add('sl-scrollbar-measure');
+
+                document.body.appendChild(scrollDiv);
+                scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth;
+                document.body.removeChild(scrollDiv);
+
+                document.body.dataset.originalPaddingRight = paddingRight;
+                if (scrollbarWidth > 0) {
+                    document.body.classList.add('hidden-scroll');
+                    document.body.style.paddingRight = (paddingRight + scrollbarWidth) + 'px';
+
+                    fixedElements.forEach(element => {
+                        const actualPadding = element.style.paddingRight
+                        const calculatedPadding = window.getComputedStyle(element)['padding-right']
+                        element.dataset.originalPaddingRight = actualPadding;
+                        element.style.paddingRight = `${parseFloat(calculatedPadding) + scrollbarWidth}px`
+                    });
+
+                }
+            }
+        } else {
+            document.body.classList.remove('hidden-scroll');
+            document.body.style.paddingRight = document.body.dataset.originalPaddingRight;
+
+            fixedElements.forEach(element => {
+                const padding = element.dataset.originalPaddingRight;
+                if (typeof padding !== 'undefined') {
+                    element.style.paddingRight = padding
+                }
+            });
+        }
+        return scrollbarWidth;
+    }
+
+    close() {
+        if (!this.isOpen || this.isAnimating || this.isClosing) {
+            return false;
+        }
+
+        this.isClosing = true;
+        let element = this.relatedElements[this.currentImageIndex];
+        element.dispatchEvent(new Event('close.simplelightbox'));
+
+        if (this.options.history) {
+            this.historyHasChanges = false;
+            if(!this.hashReseted) {
+                this.resetHash();
+            }
+        }
+
+        this.removeEventListener(document, 'focusin.' + this.eventNamespace);
+
+
+        this.fadeOut(document.querySelectorAll('.sl-image img, .sl-overlay, .sl-close, .sl-navigation, .sl-image .sl-caption, .sl-counter'), this.options.fadeSpeed, () => {
+            if (this.options.disableScroll) {
+                this.toggleScrollbar('show');
+            }
+
+            if (this.options.htmlClass && this.options.htmlClass !== '') {
+                document.querySelector('html').classList.remove(this.options.htmlClass);
+            }
+
+            document.body.removeChild(this.domNodes.wrapper);
+            document.body.removeChild(this.domNodes.overlay);
+            this.domNodes.additionalHtml = null;
+
+            element.dispatchEvent(new Event('closed.simplelightbox'));
+
+            this.isClosing = false;
+        });
+
+        this.currentImage = null;
+        this.isOpen = false;
+        this.isAnimating = false;
+
+        // reset touchcontrol coordinates
+        for (let key in this.controlCoordinates) {
+            this.controlCoordinates[key] = 0;
+        }
+        this.controlCoordinates.mousedown = false;
+        this.controlCoordinates.zoomed = false;
+        this.controlCoordinates.capture = false;
+        this.controlCoordinates.initialScale = this.minMax(1, 1, this.options.maxZoom);
+        this.controlCoordinates.doubleTapped = false;
+    }
+
+    get hash() {
+        return window.location.hash.substring(1);
+    }
+
+    preload() {
+        let index = this.currentImageIndex,
+            length = this.relatedElements.length,
+            next = (index + 1 < 0) ? length - 1 : (index + 1 >= length - 1) ? 0 : index + 1,
+            prev = (index - 1 < 0) ? length - 1 : (index - 1 >= length - 1) ? 0 : index - 1,
+            nextImage = new Image(),
+            prevImage = new Image();
+
+        nextImage.addEventListener('load', (event) => {
+            let src = event.target.getAttribute('src');
+            if (this.loadedImages.indexOf(src) === -1) { //is this condition even required... setting multiple times will not change usage...
+                this.loadedImages.push(src);
+            }
+            this.relatedElements[index].dispatchEvent(new Event('nextImageLoaded.' + this.eventNamespace));
+        });
+        nextImage.setAttribute('src', this.relatedElements[next].getAttribute(this.options.sourceAttr));
+
+        prevImage.addEventListener('load', (event) => {
+            let src = event.target.getAttribute('src');
+            if (this.loadedImages.indexOf(src) === -1) {
+                this.loadedImages.push(src);
+            }
+            this.relatedElements[index].dispatchEvent(new Event('prevImageLoaded.' + this.eventNamespace));
+        });
+        prevImage.setAttribute('src', this.relatedElements[prev].getAttribute(this.options.sourceAttr));
+    }
+
+    loadImage(direction) {
+        let slideDirection = direction;
+        if(this.options.rtl) {
+            direction = -direction;
+        }
+
+        this.relatedElements[this.currentImageIndex].dispatchEvent(new Event('change.' + this.eventNamespace));
+        this.relatedElements[this.currentImageIndex].dispatchEvent(new Event((direction === 1 ? 'next' : 'prev') + '.' + this.eventNamespace));
+
+        let newIndex = this.currentImageIndex + direction;
+
+        if (this.isAnimating || (newIndex < 0 || newIndex >= this.relatedElements.length) && this.options.loop === false) {
+            return false;
+        }
+
+        this.currentImageIndex = (newIndex < 0) ? this.relatedElements.length - 1 : (newIndex > this.relatedElements.length - 1) ? 0 : newIndex;
+
+        this.domNodes.counter.querySelector('.sl-current').innerHTML = this.currentImageIndex + 1;
+
+
+        if (this.options.animationSlide) {
+            this.slide(this.options.animationSpeed / 1000, (-100 * slideDirection) - this.controlCoordinates.swipeDiff + 'px');
+        }
+
+        this.fadeOut(this.domNodes.image, this.options.fadeSpeed, () => {
+            this.isAnimating = true;
+
+            if(!this.isClosing) {
+                setTimeout(() => {
+
+                    let element = this.relatedElements[this.currentImageIndex];
+                    this.currentImage.setAttribute('src', element.getAttribute(this.options.sourceAttr));
+
+                    if (this.loadedImages.indexOf(element.getAttribute(this.options.sourceAttr)) === -1) {
+                        this.show(this.domNodes.spinner);
+                    }
+
+                    if(this.domNodes.image.contains(this.domNodes.caption)) {
+                      this.domNodes.image.removeChild(this.domNodes.caption);
+                    }
+
+                    this.adjustImage(slideDirection);
+                    if (this.options.preloading) this.preload();
+                }, 100);
+            } else {
+                this.isAnimating = false;
+            }
+        });
+    }
+
+    adjustImage(direction) {
+        if (!this.currentImage) {
+            return false;
+        }
+
+        let tmpImage = new Image(),
+            windowWidth = window.innerWidth * this.options.widthRatio,
+            windowHeight = window.innerHeight * this.options.heightRatio;
+
+        tmpImage.setAttribute('src', this.currentImage.getAttribute('src'));
+
+        this.currentImage.dataset.scale = 1;
+        this.currentImage.dataset.translateX = 0;
+        this.currentImage.dataset.translateY = 0;
+        this.zoomPanElement(0, 0, 1);
+
+        tmpImage.addEventListener('error', (event) => {
+            this.relatedElements[this.currentImageIndex].dispatchEvent(new Event('error.' + this.eventNamespace));
+            this.isAnimating = false;
+            this.isOpen = false;
+            this.domNodes.spinner.style.display = 'none';
+
+            let dirIsDefined = direction === 1 || direction === -1;
+            if (this.initialImageIndex === this.currentImageIndex && dirIsDefined) {
+                return this.close();
+            }
+
+            if (this.options.alertError) {
+                alert(this.options.alertErrorMessage);
+            }
+
+            this.loadImage(dirIsDefined ? direction : 1);
+        });
+
+
+        tmpImage.addEventListener('load', (event) => {
+            if (typeof direction !== 'undefined') {
+                this.relatedElements[this.currentImageIndex].dispatchEvent(new Event('changed.' + this.eventNamespace));
+                this.relatedElements[this.currentImageIndex].dispatchEvent(new Event((direction === 1 ? 'nextDone' : 'prevDone') + '.' + this.eventNamespace));
+            }
+
+            // history
+            if (this.options.history) {
+                this.updateURL();
+            }
+
+            if (this.loadedImages.indexOf(this.currentImage.getAttribute('src')) === -1) {
+                this.loadedImages.push(this.currentImage.getAttribute('src'));
+            }
+
+            let imageWidth = event.target.width,
+                imageHeight = event.target.height;
+
+            if (this.options.scaleImageToRatio || imageWidth > windowWidth || imageHeight > windowHeight) {
+                let ratio = imageWidth / imageHeight > windowWidth / windowHeight ? imageWidth / windowWidth : imageHeight / windowHeight;
+                imageWidth /= ratio;
+                imageHeight /= ratio;
+            }
+
+            this.domNodes.image.style.top = (window.innerHeight - imageHeight) / 2 + 'px';
+            this.domNodes.image.style.left = (window.innerWidth - imageWidth - this.globalScrollbarWidth) / 2 + 'px';
+            this.domNodes.image.style.width = imageWidth + 'px';
+            this.domNodes.image.style.height = imageHeight + 'px';
+
+            this.domNodes.spinner.style.display = 'none';
+            if( this.options.focus ) {
+                this.forceFocus();
+            }
+            this.fadeIn(this.currentImage, this.options.fadeSpeed, () => {
+                if( this.options.focus ) {
+                    this.domNodes.wrapper.focus();
+                }
+            });
+
+            this.isOpen = true;
+
+            let captionContainer,
+                captionText;
+
+            if (typeof this.options.captionSelector === 'string') {
+                captionContainer = this.options.captionSelector === 'self' ? this.relatedElements[this.currentImageIndex] : this.relatedElements[this.currentImageIndex].querySelector(this.options.captionSelector);
+            } else if (typeof this.options.captionSelector === 'function') {
+                captionContainer = this.options.captionSelector(this.relatedElements[this.currentImageIndex]);
+            }
+
+            if(this.options.captions && captionContainer) {
+                if (this.options.captionType === 'data') {
+                    captionText = captionContainer.dataset[this.options.captionsData];
+                } else if (this.options.captionType === 'text') {
+                    captionText = captionContainer.innerHTML;
+                } else {
+                    captionText = captionContainer.getAttribute(this.options.captionsData);
+                }
+            }
+
+            if (!this.options.loop) {
+                if (this.currentImageIndex === 0) {
+                    this.hide(this.domNodes.navigation.querySelector('.sl-prev'));
+                }
+                if (this.currentImageIndex >= this.relatedElements.length - 1) {
+                    this.hide(this.domNodes.navigation.querySelector('.sl-next'));
+                }
+                if (this.currentImageIndex > 0) {
+                    this.show(this.domNodes.navigation.querySelector('.sl-prev'));
+                }
+                if (this.currentImageIndex < this.relatedElements.length - 1) {
+                    this.show(this.domNodes.navigation.querySelector('.sl-next'));
+                }
+            }
+
+            if (this.relatedElements.length === 1) {
+                this.hide(this.domNodes.navigation.querySelectorAll('.sl-prev, .sl-next'));
+            } else {
+                this.show(this.domNodes.navigation.querySelectorAll('.sl-prev, .sl-next'));
+            }
+
+            if (direction === 1 || direction === -1) {
+                if (this.options.animationSlide) {
+                    this.slide(0, 100 * direction + 'px');
+                    setTimeout(() => {
+                        this.slide(this.options.animationSpeed / 1000, 0 + 'px');
+                    }, 50);
+                }
+                this.fadeIn(this.domNodes.image, this.options.fadeSpeed, () => {
+                    this.isAnimating = false;
+                    this.setCaption(captionText, imageWidth);
+                });
+
+            } else {
+                this.isAnimating = false;
+                this.setCaption(captionText, imageWidth);
+            }
+
+            if (this.options.additionalHtml && !this.domNodes.additionalHtml) {
+                this.domNodes.additionalHtml = document.createElement('div');
+                this.domNodes.additionalHtml.classList.add('sl-additional-html');
+                this.domNodes.additionalHtml.innerHTML = this.options.additionalHtml;
+                this.domNodes.image.appendChild(this.domNodes.additionalHtml);
+            }
+
+        });
+    }
+
+    zoomPanElement(targetOffsetX, targetOffsetY, targetScale) {
+
+        this.currentImage.style[this.transitionPrefix + 'transform'] = 'translate(' + targetOffsetX + ',' + targetOffsetY + ') scale(' + targetScale + ')';
+
+    };
+
+    minMax(value, min, max) {
+        return (value < min) ? min : (value > max) ? max : value;
+    };
+
+    setZoomData(initialScale, targetOffsetX, targetOffsetY) {
+        this.currentImage.dataset.scale = initialScale;
+        this.currentImage.dataset.translateX = targetOffsetX;
+        this.currentImage.dataset.translateY = targetOffsetY;
+    };
+
+
+    hashchangeHandler() {
+        if (this.isOpen && this.hash === this.initialLocationHash) {
+            this.hashReseted = true;
+            this.close();
+        }
+    }
+
+    addEvents() {
+
+        // resize/responsive
+        this.addEventListener(window, 'resize.' + this.eventNamespace, (event) => {
+            //this.adjustImage.bind(this)
+            if (this.isOpen) {
+                this.adjustImage();
+            }
+        });
+
+        this.addEventListener(this.domNodes.closeButton, ['click.' + this.eventNamespace, 'touchstart.' + this.eventNamespace], this.close.bind(this));
+
+        if (this.options.history) {
+            setTimeout(() => {
+                this.addEventListener(window, 'hashchange.' + this.eventNamespace, (event) => {
+                    if (this.isOpen) {
+                        this.hashchangeHandler();
+                    }
+                });
+            }, 40);
+        }
+
+        this.addEventListener(this.domNodes.navigation.getElementsByTagName('button'), 'click.' + this.eventNamespace, (event) => {
+            if (!event.currentTarget.tagName.match(/button/i)) {
+                return true;
+            }
+
+            event.preventDefault();
+            this.controlCoordinates.swipeDiff = 0;
+            this.loadImage(event.currentTarget.classList.contains('sl-next') ? 1 : -1);
+        });
+
+        this.addEventListener(this.domNodes.image, ['touchstart.' + this.eventNamespace, 'mousedown.' + this.eventNamespace], (event) => {
+            if (event.target.tagName === 'A' && event.type === 'touchstart') {
+                return true;
+            }
+
+            if (event.type === 'mousedown') {
+                this.controlCoordinates.initialPointerOffsetX = event.clientX;
+                this.controlCoordinates.initialPointerOffsetY = event.clientY;
+                this.controlCoordinates.containerHeight = this.getDimensions(this.domNodes.image).height;
+                this.controlCoordinates.containerWidth = this.getDimensions(this.domNodes.image).width;
+                this.controlCoordinates.imgHeight = this.getDimensions(this.currentImage).height;
+                this.controlCoordinates.imgWidth = this.getDimensions(this.currentImage).width;
+                this.controlCoordinates.containerOffsetX = this.domNodes.image.offsetLeft;
+                this.controlCoordinates.containerOffsetY = this.domNodes.image.offsetTop;
+
+                this.controlCoordinates.initialOffsetX = parseFloat(this.currentImage.dataset.translateX);
+                this.controlCoordinates.initialOffsetY = parseFloat(this.currentImage.dataset.translateY);
+                this.controlCoordinates.capture = true;
+            } else {
+                this.controlCoordinates.touchCount = event.touches.length;
+                this.controlCoordinates.initialPointerOffsetX = event.touches[0].clientX;
+                this.controlCoordinates.initialPointerOffsetY = event.touches[0].clientY;
+                this.controlCoordinates.containerHeight = this.getDimensions(this.domNodes.image).height;
+                this.controlCoordinates.containerWidth = this.getDimensions(this.domNodes.image).width;
+                this.controlCoordinates.imgHeight = this.getDimensions(this.currentImage).height;
+                this.controlCoordinates.imgWidth = this.getDimensions(this.currentImage).width;
+                this.controlCoordinates.containerOffsetX = this.domNodes.image.offsetLeft;
+                this.controlCoordinates.containerOffsetY = this.domNodes.image.offsetTop;
+
+                if (this.controlCoordinates.touchCount === 1) /* Single touch */ {
+                    if (!this.controlCoordinates.doubleTapped) {
+                        this.controlCoordinates.doubleTapped = true;
+                        setTimeout(() => {
+                            this.controlCoordinates.doubleTapped = false;
+                        }, 300);
+                    } else {
+
+                        this.currentImage.classList.add('sl-transition');
+                        if (!this.controlCoordinates.zoomed) {
+                            this.controlCoordinates.initialScale = this.options.doubleTapZoom;
+                            this.setZoomData(this.controlCoordinates.initialScale,0, 0);
+                            this.zoomPanElement(0 + "px", 0 + "px", this.controlCoordinates.initialScale);
+
+
+                            if (!this.domNodes.caption.style.opacity && this.domNodes.caption.style.display !== 'none') {
+                                this.fadeOut(this.domNodes.caption, this.options.fadeSpeed);
+                            }
+
+                            this.controlCoordinates.zoomed = true;
+                        } else {
+                            this.controlCoordinates.initialScale = 1;
+                            this.setZoomData(this.controlCoordinates.initialScale,0, 0);
+                            this.zoomPanElement(0 + "px", 0 + "px", this.controlCoordinates.initialScale);
+                            this.controlCoordinates.zoomed = false;
+                        }
+
+                        setTimeout(() => {
+                            if (this.currentImage) {
+                                this.currentImage.classList.remove('sl-transition');
+                            }
+                        }, 200);
+                        return false;
+                    }
+
+                    this.controlCoordinates.initialOffsetX  = parseFloat(this.currentImage.dataset.translateX);
+                    this.controlCoordinates.initialOffsetY = parseFloat(this.currentImage.dataset.translateY);
+                }
+                else if (this.controlCoordinates.touchCount === 2) /* Pinch */ {
+                    this.controlCoordinates.initialPointerOffsetX2 = event.touches[1].clientX;
+                    this.controlCoordinates.initialPointerOffsetY2 = event.touches[1].clientY;
+                    this.controlCoordinates.initialOffsetX = parseFloat(this.currentImage.dataset.translateX);
+                    this.controlCoordinates.initialOffsetY = parseFloat(this.currentImage.dataset.translateY);
+                    this.controlCoordinates.pinchOffsetX = (this.controlCoordinates.initialPointerOffsetX + this.controlCoordinates.initialPointerOffsetX2) / 2;
+                    this.controlCoordinates.pinchOffsetY = (this.controlCoordinates.initialPointerOffsetY + this.controlCoordinates.initialPointerOffsetY2) / 2;
+                    this.controlCoordinates.initialPinchDistance = Math.sqrt(((this.controlCoordinates.initialPointerOffsetX - this.controlCoordinates.initialPointerOffsetX2) * (this.controlCoordinates.initialPointerOffsetX - this.controlCoordinates.initialPointerOffsetX2)) + ((this.controlCoordinates.initialPointerOffsetY - this.controlCoordinates.initialPointerOffsetY2) * (this.controlCoordinates.initialPointerOffsetY - this.controlCoordinates.initialPointerOffsetY2)));
+                }
+                this.controlCoordinates.capture = true;
+            }
+            if(this.controlCoordinates.mousedown) return true;
+            if (this.transitionCapable) {
+                this.controlCoordinates.imageLeft = parseInt(this.domNodes.image.style.left, 10);
+            }
+            this.controlCoordinates.mousedown = true;
+            this.controlCoordinates.swipeDiff = 0;
+            this.controlCoordinates.swipeYDiff = 0;
+            this.controlCoordinates.swipeStart = event.pageX || event.touches[0].pageX;
+            this.controlCoordinates.swipeYStart = event.pageY || event.touches[0].pageY;
+
+            return false;
+        });
+
+        this.addEventListener(this.domNodes.image, ['touchmove.' + this.eventNamespace, 'mousemove.' + this.eventNamespace, 'MSPointerMove'], (event) => {
+
+
+            if (!this.controlCoordinates.mousedown) {
+                return true;
+            }
+
+            event.preventDefault();
+
+            if (event.type === 'touchmove') {
+                if (this.controlCoordinates.capture === false) {
+                    return false;
+                }
+
+                this.controlCoordinates.pointerOffsetX = event.touches[0].clientX;
+                this.controlCoordinates.pointerOffsetY = event.touches[0].clientY;
+                this.controlCoordinates.touchCount = event.touches.length;
+                this.controlCoordinates.touchmoveCount++;
+
+                if (this.controlCoordinates.touchCount > 1) /* Pinch */ {
+                    this.controlCoordinates.pointerOffsetX2 = event.touches[1].clientX;
+                    this.controlCoordinates.pointerOffsetY2 = event.touches[1].clientY;
+                    this.controlCoordinates.targetPinchDistance = Math.sqrt(((this.controlCoordinates.pointerOffsetX - this.controlCoordinates.pointerOffsetX2) * (this.controlCoordinates.pointerOffsetX - this.controlCoordinates.pointerOffsetX2)) + ((this.controlCoordinates.pointerOffsetY - this.controlCoordinates.pointerOffsetY2) * (this.controlCoordinates.pointerOffsetY - this.controlCoordinates.pointerOffsetY2)));
+                    if (this.controlCoordinates.initialPinchDistance === null) {
+                        this.controlCoordinates.initialPinchDistance = this.controlCoordinates.targetPinchDistance;
+                    }
+
+                    if (Math.abs(this.controlCoordinates.initialPinchDistance - this.controlCoordinates.targetPinchDistance) >= 1) {
+                        /* Initialize helpers */
+                        this.controlCoordinates.targetScale = this.minMax(this.controlCoordinates.targetPinchDistance / this.controlCoordinates.initialPinchDistance * this.controlCoordinates.initialScale, 1, this.options.maxZoom);
+                        this.controlCoordinates.limitOffsetX = ((this.controlCoordinates.imgWidth * this.controlCoordinates.targetScale) - this.controlCoordinates.containerWidth) / 2;
+                        this.controlCoordinates.limitOffsetY = ((this.controlCoordinates.imgHeight * this.controlCoordinates.targetScale) - this.controlCoordinates.containerHeight) / 2;
+                        this.controlCoordinates.scaleDifference = this.controlCoordinates.targetScale - this.controlCoordinates.initialScale;
+                        this.controlCoordinates.targetOffsetX = (this.controlCoordinates.imgWidth * this.controlCoordinates.targetScale) <= this.controlCoordinates.containerWidth ? 0 : this.minMax(this.controlCoordinates.initialOffsetX - ((((((this.controlCoordinates.pinchOffsetX - this.controlCoordinates.containerOffsetX) - (this.controlCoordinates.containerWidth / 2)) - this.controlCoordinates.initialOffsetX) / (this.controlCoordinates.targetScale - this.controlCoordinates.scaleDifference))) * this.controlCoordinates.scaleDifference), this.controlCoordinates.limitOffsetX * (-1), this.controlCoordinates.limitOffsetX);
+                        this.controlCoordinates.targetOffsetY = (this.controlCoordinates.imgHeight * this.controlCoordinates.targetScale) <= this.controlCoordinates.containerHeight ? 0 : this.minMax(this.controlCoordinates.initialOffsetY - ((((((this.controlCoordinates.pinchOffsetY - this.controlCoordinates.containerOffsetY) - (this.controlCoordinates.containerHeight / 2)) - this.controlCoordinates.initialOffsetY) / (this.controlCoordinates.targetScale - this.controlCoordinates.scaleDifference))) * this.controlCoordinates.scaleDifference), this.controlCoordinates.limitOffsetY * (-1), this.controlCoordinates.limitOffsetY);
+
+                        this.zoomPanElement(this.controlCoordinates.targetOffsetX + "px", this.controlCoordinates.targetOffsetY + "px", this.controlCoordinates.targetScale);
+
+                        if (this.controlCoordinates.targetScale > 1) {
+                            this.controlCoordinates.zoomed = true;
+                            if (!this.domNodes.caption.style.opacity && this.domNodes.caption.style.display !== 'none') {
+                                this.fadeOut(this.domNodes.caption, this.options.fadeSpeed);
+                            }
+                        }
+
+                        this.controlCoordinates.initialPinchDistance = this.controlCoordinates.targetPinchDistance;
+                        this.controlCoordinates.initialScale = this.controlCoordinates.targetScale;
+                        this.controlCoordinates.initialOffsetX = this.controlCoordinates.targetOffsetX;
+                        this.controlCoordinates.initialOffsetY = this.controlCoordinates.targetOffsetY;
+                    }
+                } else {
+                    this.controlCoordinates.targetScale = this.controlCoordinates.initialScale;
+                    this.controlCoordinates.limitOffsetX = ((this.controlCoordinates.imgWidth * this.controlCoordinates.targetScale) - this.controlCoordinates.containerWidth) / 2;
+                    this.controlCoordinates.limitOffsetY = ((this.controlCoordinates.imgHeight * this.controlCoordinates.targetScale) - this.controlCoordinates.containerHeight) / 2;
+                    this.controlCoordinates.targetOffsetX = (this.controlCoordinates.imgWidth * this.controlCoordinates.targetScale) <= this.controlCoordinates.containerWidth ? 0 : this.minMax(this.controlCoordinates.pointerOffsetX - (this.controlCoordinates.initialPointerOffsetX - this.controlCoordinates.initialOffsetX), this.controlCoordinates.limitOffsetX * (-1), this.controlCoordinates.limitOffsetX);
+                    this.controlCoordinates.targetOffsetY = (this.controlCoordinates.imgHeight * this.controlCoordinates.targetScale) <= this.controlCoordinates.containerHeight ? 0 : this.minMax(this.controlCoordinates.pointerOffsetY - (this.controlCoordinates.initialPointerOffsetY - this.controlCoordinates.initialOffsetY), this.controlCoordinates.limitOffsetY * (-1), this.controlCoordinates.limitOffsetY);
+
+                    if (Math.abs(this.controlCoordinates.targetOffsetX) === Math.abs(this.controlCoordinates.limitOffsetX)) {
+                        this.controlCoordinates.initialOffsetX = this.controlCoordinates.targetOffsetX;
+                        this.controlCoordinates.initialPointerOffsetX = this.controlCoordinates.pointerOffsetX;
+                    }
+
+                    if (Math.abs(this.controlCoordinates.targetOffsetY) === Math.abs(this.controlCoordinates.limitOffsetY)) {
+                        this.controlCoordinates.initialOffsetY = this.controlCoordinates.targetOffsetY;
+                        this.controlCoordinates.initialPointerOffsetY = this.controlCoordinates.pointerOffsetY;
+                    }
+
+                    this.setZoomData(this.controlCoordinates.initialScale, this.controlCoordinates.targetOffsetX, this.controlCoordinates.targetOffsetY);
+                    this.zoomPanElement(this.controlCoordinates.targetOffsetX + "px", this.controlCoordinates.targetOffsetY + "px", this.controlCoordinates.targetScale);
+                }
+            }
+
+            /* Mouse Move implementation */
+            if (event.type === 'mousemove' && this.controlCoordinates.mousedown) {
+              if(event.type == 'touchmove') return true;
+              if(this.controlCoordinates.capture === false) return false;
+
+              this.controlCoordinates.pointerOffsetX = event.clientX;
+              this.controlCoordinates.pointerOffsetY = event.clientY;
+
+              this.controlCoordinates.targetScale = this.controlCoordinates.initialScale;
+              this.controlCoordinates.limitOffsetX = ((this.controlCoordinates.imgWidth * this.controlCoordinates.targetScale) - this.controlCoordinates.containerWidth) / 2;
+              this.controlCoordinates.limitOffsetY = ((this.controlCoordinates.imgHeight * this.controlCoordinates.targetScale) - this.controlCoordinates.containerHeight) / 2;
+              this.controlCoordinates.targetOffsetX = (this.controlCoordinates.imgWidth * this.controlCoordinates.targetScale) <= this.controlCoordinates.containerWidth ? 0 : this.minMax(this.controlCoordinates.pointerOffsetX - (this.controlCoordinates.initialPointerOffsetX - this.controlCoordinates.initialOffsetX), this.controlCoordinates.limitOffsetX * (-1), this.controlCoordinates.limitOffsetX);
+              this.controlCoordinates.targetOffsetY = (this.controlCoordinates.imgHeight * this.controlCoordinates.targetScale) <= this.controlCoordinates.containerHeight ? 0 : this.minMax(this.controlCoordinates.pointerOffsetY - (this.controlCoordinates.initialPointerOffsetY - this.controlCoordinates.initialOffsetY), this.controlCoordinates.limitOffsetY * (-1), this.controlCoordinates.limitOffsetY);
+
+              if (Math.abs(this.controlCoordinates.targetOffsetX) === Math.abs(this.controlCoordinates.limitOffsetX)) {
+                  this.controlCoordinates.initialOffsetX = this.controlCoordinates.targetOffsetX;
+                  this.controlCoordinates.initialPointerOffsetX = this.controlCoordinates.pointerOffsetX;
+              }
+
+              if (Math.abs(this.controlCoordinates.targetOffsetY) === Math.abs(this.controlCoordinates.limitOffsetY)) {
+                  this.controlCoordinates.initialOffsetY = this.controlCoordinates.targetOffsetY;
+                  this.controlCoordinates.initialPointerOffsetY = this.controlCoordinates.pointerOffsetY;
+              }
+
+              this.setZoomData(this.controlCoordinates.initialScale, this.controlCoordinates.targetOffsetX, this.controlCoordinates.targetOffsetY);
+              this.zoomPanElement(this.controlCoordinates.targetOffsetX + "px", this.controlCoordinates.targetOffsetY + "px", this.controlCoordinates.targetScale);
+
+            }
+
+            if (!this.controlCoordinates.zoomed) {
+
+                this.controlCoordinates.swipeEnd = event.pageX || event.touches[0].pageX;
+                this.controlCoordinates.swipeYEnd = event.pageY || event.touches[0].pageY;
+                this.controlCoordinates.swipeDiff = this.controlCoordinates.swipeStart - this.controlCoordinates.swipeEnd;
+                this.controlCoordinates.swipeYDiff = this.controlCoordinates.swipeYStart - this.controlCoordinates.swipeYEnd;
+                if (this.options.animationSlide) {
+                    this.slide(0, -this.controlCoordinates.swipeDiff + 'px');
+                }
+            }
+
+        });
+
+
+        this.addEventListener(this.domNodes.image, ['touchend.' + this.eventNamespace, 'mouseup.' + this.eventNamespace, 'touchcancel.' + this.eventNamespace, 'mouseleave.' + this.eventNamespace, 'pointerup', 'pointercancel', 'MSPointerUp', 'MSPointerCancel'], (event) => {
+
+
+            if (this.isTouchDevice && event.type === 'touchend') {
+                this.controlCoordinates.touchCount = event.touches.length;
+                if (this.controlCoordinates.touchCount === 0) /* No touch */ {
+                    /* Set attributes */
+                    if (this.currentImage) {
+                        this.setZoomData(this.controlCoordinates.initialScale, this.controlCoordinates.targetOffsetX, this.controlCoordinates.targetOffsetY);
+                    }
+                    if (this.controlCoordinates.initialScale === 1) {
+                        this.controlCoordinates.zoomed = false;
+                        if (this.domNodes.caption.style.display === 'none') {
+                            this.fadeIn(this.domNodes.caption, this.options.fadeSpeed);
+                        }
+                    }
+                    this.controlCoordinates.initialPinchDistance = null;
+                    this.controlCoordinates.capture = false;
+                } else if (this.controlCoordinates.touchCount === 1) /* Single touch */ {
+                    this.controlCoordinates.initialPointerOffsetX = event.touches[0].clientX;
+                    this.controlCoordinates.initialPointerOffsetY = event.touches[0].clientY;
+                } else if (this.controlCoordinates.touchCount > 1) /* Pinch */ {
+                    this.controlCoordinates.initialPinchDistance = null;
+                }
+            }
+
+
+            if (this.controlCoordinates.mousedown) {
+                this.controlCoordinates.mousedown = false;
+                let possibleDir = true;
+                if (!this.options.loop) {
+                    if (this.currentImageIndex === 0 && this.controlCoordinates.swipeDiff < 0) {
+                        possibleDir = false;
+                    }
+                    if (this.currentImageIndex >= this.relatedElements.length - 1 && this.controlCoordinates.swipeDiff > 0) {
+                        possibleDir = false;
+                    }
+                }
+                if (Math.abs(this.controlCoordinates.swipeDiff) > this.options.swipeTolerance && possibleDir) {
+                    this.loadImage(this.controlCoordinates.swipeDiff > 0 ? 1 : -1);
+                }
+                else if (this.options.animationSlide) {
+                    this.slide(this.options.animationSpeed / 1000, 0 + 'px');
+                }
+
+                if (this.options.swipeClose && Math.abs(this.controlCoordinates.swipeYDiff) > 50 && Math.abs(this.controlCoordinates.swipeDiff) < this.options.swipeTolerance) {
+                    this.close();
+                }
+            }
+        });
+
+        this.addEventListener(this.domNodes.image, ['dblclick'], (event) => {
+            if(this.isTouchDevice) return;
+            this.controlCoordinates.initialPointerOffsetX = event.clientX;
+            this.controlCoordinates.initialPointerOffsetY = event.clientY;
+            this.controlCoordinates.containerHeight = this.getDimensions(this.domNodes.image).height;
+            this.controlCoordinates.containerWidth = this.getDimensions(this.domNodes.image).width;
+            this.controlCoordinates.imgHeight = this.getDimensions(this.currentImage).height;
+            this.controlCoordinates.imgWidth = this.getDimensions(this.currentImage).width;
+            this.controlCoordinates.containerOffsetX = this.domNodes.image.offsetLeft;
+            this.controlCoordinates.containerOffsetY = this.domNodes.image.offsetTop;
+
+            this.currentImage.classList.add('sl-transition');
+
+            if(!this.controlCoordinates.zoomed) {
+                this.controlCoordinates.initialScale = this.options.doubleTapZoom;
+                this.setZoomData(this.controlCoordinates.initialScale, 0, 0);
+                this.zoomPanElement(0 + "px", 0 + "px", this.controlCoordinates.initialScale);
+                if (!this.domNodes.caption.style.opacity && this.domNodes.caption.style.display !== 'none') {
+                    this.fadeOut(this.domNodes.caption, this.options.fadeSpeed);
+                }
+                this.controlCoordinates.zoomed = true;
+            } else {
+                this.controlCoordinates.initialScale = 1;
+                this.setZoomData(this.controlCoordinates.initialScale, 0, 0);
+                this.zoomPanElement(0 + "px", 0 + "px", this.controlCoordinates.initialScale);
+                this.controlCoordinates.zoomed = false;
+                if (this.domNodes.caption.style.display === 'none') {
+                    this.fadeIn(this.domNodes.caption, this.options.fadeSpeed);
+                }
+            }
+            setTimeout(() => {
+                if (this.currentImage) {
+                    this.currentImage.classList.remove('sl-transition');
+                }
+            }, 200);
+
+            this.controlCoordinates.capture = true;
+            return false;
+        });
+
+    }
+
+    getDimensions(element) {
+        let styles = window.getComputedStyle(element),
+            height = element.offsetHeight,
+            width = element.offsetWidth,
+            borderTopWidth = parseFloat(styles.borderTopWidth),
+            borderBottomWidth = parseFloat(styles.borderBottomWidth),
+            paddingTop = parseFloat(styles.paddingTop),
+            paddingBottom = parseFloat(styles.paddingBottom),
+            borderLeftWidth = parseFloat(styles.borderLeftWidth),
+            borderRightWidth = parseFloat(styles.borderRightWidth),
+            paddingLeft = parseFloat(styles.paddingLeft),
+            paddingRight = parseFloat(styles.paddingRight);
+        return {
+            height: height - borderBottomWidth - borderTopWidth - paddingTop - paddingBottom,
+            width: width - borderLeftWidth - borderRightWidth - paddingLeft - paddingRight
+        };
+    }
+
+    updateHash() {
+        let newHash = 'pid=' + (this.currentImageIndex + 1),
+            newURL = window.location.href.split('#')[0] + '#' + newHash;
+
+        this.hashReseted = false;
+
+        if (this.pushStateSupport) {
+            window.history[this.historyHasChanges ? 'replaceState' : 'pushState']('', document.title, newURL);
+        } else {
+            // what is the browser target of this?
+            if (this.historyHasChanges) {
+                window.location.replace(newURL);
+            } else {
+                window.location.hash = newHash;
+            }
+        }
+        if(!this.historyHasChanges) {
+            this.urlChangedOnce = true;
+        }
+
+        this.historyHasChanges = true;
+    }
+
+    resetHash() {
+        this.hashReseted = true;
+        if(this.urlChangedOnce) {
+            history.back();
+        } else {
+            if (this.pushStateSupport) {
+                history.pushState('', document.title, window.location.pathname + window.location.search);
+            } else {
+                window.location.hash = '';
+            }
+        }
+        //
+        //in case an history operation is still pending
+        clearTimeout(this.historyUpdateTimeout);
+    }
+
+    updateURL() {
+        clearTimeout(this.historyUpdateTimeout);
+        if (!this.historyHasChanges) {
+            this.updateHash(); // first time
+        } else {
+            this.historyUpdateTimeout = setTimeout(this.updateHash.bind(this), 800);
+        }
+    }
+
+    setCaption(captionText, imageWidth) {
+        if (this.options.captions && captionText && captionText !== '' && typeof captionText !== "undefined") {
+            this.hide(this.domNodes.caption);
+            this.domNodes.caption.style.width = imageWidth + 'px';
+            this.domNodes.caption.innerHTML = captionText;
+
+            this.domNodes.image.appendChild(this.domNodes.caption);
+
+            setTimeout(() => {
+                this.fadeIn(this.domNodes.caption, this.options.fadeSpeed);
+            }, this.options.captionDelay);
+        }
+    }
+
+    slide(speed, pos) {
+        if (!this.transitionCapable) {
+            return this.domNodes.image.style.left = pos;
+        }
+
+        this.domNodes.image.style[this.transitionPrefix + 'transform'] = 'translateX(' + pos + ')';
+        this.domNodes.image.style[this.transitionPrefix + 'transition'] = this.transitionPrefix + 'transform ' + speed + 's linear';
+    }
+
+    getRelated(rel) {
+        let elems;
+        if (rel && rel !== false && rel !== 'nofollow') {
+            elems = Array.from(this.elements).filter(element => element.getAttribute('rel') === rel);
+        } else {
+            elems = this.elements;
+        }
+        return elems;
+    }
+
+    openImage(element) {
+        element.dispatchEvent(new Event('show.' + this.eventNamespace));
+
+        if (this.options.disableScroll) {
+            this.globalScrollbarWidth = this.toggleScrollbar('hide');
+        }
+
+        if (this.options.htmlClass && this.options.htmlClass !== '') {
+            document.querySelector('html').classList.add(this.options.htmlClass);
+        }
+
+        document.body.appendChild(this.domNodes.wrapper);
+
+        this.domNodes.wrapper.appendChild(this.domNodes.image);
+        if (this.options.overlay) {
+            document.body.appendChild(this.domNodes.overlay);
+        }
+
+        this.relatedElements = this.getRelated(element.rel);
+
+        if (this.options.showCounter) {
+            if (this.relatedElements.length == 1 && this.domNodes.wrapper.contains(this.domNodes.counter)) {
+                this.domNodes.wrapper.removeChild(this.domNodes.counter);
+            } else if(this.relatedElements.length > 1 && !this.domNodes.wrapper.contains(this.domNodes.counter)) {
+                this.domNodes.wrapper.appendChild(this.domNodes.counter);
+            }
+        }
+
+        this.isAnimating = true;
+
+        this.currentImageIndex = this.relatedElements.indexOf(element);
+
+        let targetURL = element.getAttribute(this.options.sourceAttr);
+
+        this.currentImage = document.createElement('img');
+        this.currentImage.style.display = 'none';
+        this.currentImage.setAttribute('src', targetURL);
+        this.currentImage.dataset.scale = 1;
+        this.currentImage.dataset.translateX = 0;
+        this.currentImage.dataset.translateY = 0;
+
+        if (this.loadedImages.indexOf(targetURL) === -1) {
+            this.loadedImages.push(targetURL);
+        }
+
+        this.domNodes.image.innerHTML = '';
+        this.domNodes.image.setAttribute('style', '');
+
+        this.domNodes.image.appendChild(this.currentImage);
+
+
+        this.fadeIn(this.domNodes.overlay, this.options.fadeSpeed);
+        this.fadeIn([this.domNodes.counter, this.domNodes.navigation, this.domNodes.closeButton], this.options.fadeSpeed);
+
+        this.show(this.domNodes.spinner);
+        this.domNodes.counter.querySelector('.sl-current').innerHTML = this.currentImageIndex + 1;
+        this.domNodes.counter.querySelector('.sl-total').innerHTML = this.relatedElements.length;
+
+        this.adjustImage();
+        if (this.options.preloading) {
+            this.preload();
+        }
+
+        setTimeout(() => {
+            element.dispatchEvent(new Event('shown.' + this.eventNamespace));
+        }, this.options.animationSpeed);
+    }
+
+    forceFocus() {
+        this.removeEventListener(document, 'focusin.' + this.eventNamespace);
+        this.addEventListener(document, 'focusin.' + this.eventNamespace, event => {
+            if (document !== event.target &&
+                this.domNodes.wrapper !== event.target &&
+                !this.domNodes.wrapper.contains(event.target)) {
+                this.domNodes.wrapper.focus();
+            }
+        });
+    }
+
+    // utility
+
+    addEventListener(elements, events, callback, opts) {
+        elements = this.wrap(elements);
+        events = this.wrap(events);
+
+
+        for (let element of elements) {
+            if (!element.namespaces) {
+                element.namespaces = {};
+            } // save the namespaces addEventListener the DOM element itself
+
+            for (let event of events) {
+                let options = opts || false;
+                element.namespaces[event] = callback;
+                element.addEventListener(event.split('.')[0], callback, options);
+
+            }
+        }
+    }
+
+    removeEventListener(elements, events) {
+        elements = this.wrap(elements);
+        events = this.wrap(events);
+        for (let element of elements) {
+            for (let event of events) {
+                if(element.namespaces && element.namespaces[event]) {
+                    element.removeEventListener(event.split('.')[0], element.namespaces[event]);
+                    delete element.namespaces[event];
+                }
+            }
+        }
+    }
+
+    fadeOut(elements, duration, callback) {
+        elements = this.wrap(elements);
+        for (let element of elements) {
+            element.style.opacity = 1;
+        }
+
+        this.isFadeIn = false;
+
+        let step = 16.66666 / (duration || this.options.fadeSpeed),
+            fade = () => {
+                let currentOpacity = parseFloat(elements[0].style.opacity);
+                if ((currentOpacity -= step) < 0) {
+                    for (let element of elements) {
+                        element.style.display = "none";
+                        element.style.opacity = '';
+                    }
+                    callback && callback.call(this, elements);
+                } else {
+                    for (let element of elements) {
+                        element.style.opacity = currentOpacity;
+                    }
+                    requestAnimationFrame(fade);
+                }
+            };
+
+        fade();
+    }
+
+    fadeIn(elements, duration, callback, display) {
+        elements = this.wrap(elements);
+        for (let element of elements) {
+            element.style.opacity = 0;
+            element.style.display = display || "block";
+        }
+
+        this.isFadeIn = true;
+
+        let opacityTarget = parseFloat(elements[0].dataset.opacityTarget || 1),
+            step = (16.66666 * opacityTarget) / (duration || this.options.fadeSpeed),
+            fade = () => {
+                let currentOpacity = parseFloat(elements[0].style.opacity);
+                if (!((currentOpacity += step) > opacityTarget)) {
+                    for (let element of elements) {
+                        element.style.opacity = currentOpacity;
+                    }
+                    if(!this.isFadeIn) return;
+                    requestAnimationFrame(fade);
+                } else {
+                    for (let element of elements) {
+                        element.style.opacity = '';
+                    }
+                    callback && callback.call(this, elements);
+                }
+            };
+
+        fade();
+    }
+
+    hide(elements) {
+        elements = this.wrap(elements);
+        for (let element of elements) {
+            element.dataset.initialDisplay = element.style.display;
+            element.style.display = 'none';
+        }
+    }
+
+    show(elements, display) {
+        elements = this.wrap(elements);
+        for (let element of elements) {
+            element.style.display = element.dataset.initialDisplay || display || 'block';
+        }
+    }
+
+    wrap(input) {
+        return typeof input[Symbol.iterator] === 'function' && typeof input !== 'string' ? input : [input];
+    }
+
+    on(events, callback) {
+        events = this.wrap(events);
+        for (let element of this.elements) {
+            if (!element.fullyNamespacedEvents) {
+                element.fullyNamespacedEvents = {};
+            }
+            for (let event of events) {
+                element.fullyNamespacedEvents[event] = callback;
+                element.addEventListener(event, callback);
+            }
+        }
+        return this;
+    }
+
+    off(events) {
+        events = this.wrap(events);
+        for (let element of this.elements) {
+            for (let event of events) {
+                if (typeof element.fullyNamespacedEvents !== 'undefined' && event in element.fullyNamespacedEvents) {
+                    element.removeEventListener(event, element.fullyNamespacedEvents[event]);
+                }
+            }
+        }
+        return this;
+    }
+
+    // api
+
+    open(elem) {
+        elem = elem || this.elements[0];
+        if(typeof jQuery !== "undefined" && elem instanceof jQuery) {
+            elem = elem.get(0);
+        }
+        this.initialImageIndex = this.elements.indexOf(elem);
+        if(this.initialImageIndex > -1) {
+            this.openImage(elem);
+        }
+    }
+
+    next() {
+        this.loadImage(1);
+    }
+
+    prev() {
+        this.loadImage(-1);
+    }
+
+    //close is exposed anyways..
+
+    destroy() {
+        //remove all custom event listeners from elements
+        this.off([
+            'close.' + this.eventNamespace,
+            'closed.' + this.eventNamespace,
+            'nextImageLoaded.' + this.eventNamespace,
+            'prevImageLoaded.' + this.eventNamespace,
+            'change.' + this.eventNamespace,
+            'nextDone.' + this.eventNamespace,
+            'prevDone.' + this.eventNamespace,
+            'error.' + this.eventNamespace,
+            'changed.' + this.eventNamespace,
+            'next.' + this.eventNamespace,
+            'prev.' + this.eventNamespace,
+            'show.' + this.eventNamespace,
+            'shown.' + this.eventNamespace
+        ]);
+
+        this.removeEventListener(this.elements, 'click.' + this.eventNamespace);
+        this.removeEventListener(document, 'focusin.' + this.eventNamespace);
+        this.removeEventListener(document.body, 'contextmenu.' + this.eventNamespace);
+        this.removeEventListener(document.body, 'keyup.' + this.eventNamespace);
+
+        this.removeEventListener(this.domNodes.navigation.getElementsByTagName('button'), 'click.' + this.eventNamespace);
+        this.removeEventListener(this.domNodes.closeButton, 'click.' + this.eventNamespace);
+        this.removeEventListener(window, 'resize.' + this.eventNamespace);
+        this.removeEventListener(window, 'hashchange.' + this.eventNamespace);
+
+        this.close();
+        if (this.isOpen) {
+            document.body.removeChild(this.domNodes.wrapper);
+            document.body.removeChild(this.domNodes.overlay);
+        }
+
+        this.elements = null;
+    }
+
+    refresh() {
+        if (!this.initialSelector) {
+            throw 'refreshing only works when you initialize using a selector!';
+        }
+
+        let options = this.options,
+            selector = this.initialSelector;
+
+        this.destroy();
+
+        this.constructor(selector, options);
+
+        return this;
+    }
+}
+export default SimpleLightbox;
+
+global.SimpleLightbox = SimpleLightbox;
\ No newline at end of file
diff --git a/photos/simplelightbox-master/src/simple-lightbox.scss b/photos/simplelightbox-master/src/simple-lightbox.scss
new file mode 100644
index 0000000000000000000000000000000000000000..3fbde6016462166c369f09d0dfe8be3928c53137
--- /dev/null
+++ b/photos/simplelightbox-master/src/simple-lightbox.scss
@@ -0,0 +1,334 @@
+// You can customize Simplelightbox with the following variables:
+
+$sl-font-family: Arial, Baskerville, monospace !default;
+$sl-overlay-background: #fff !default;
+$sl-overlay-opacity: 0.7 !default;
+$sl-navigation-color: #000 !default;
+$sl-caption-color: #fff !default;
+$sl-caption-background: rgba(0, 0, 0, 0.8) !default;
+
+$sl-counter-fontsize: 1rem !default;
+$sl-caption-fontsize: 1rem !default;
+$sl-close-fontsize: 3rem !default;
+
+$sl-breakpoint-medium: 35.5em !default; // 568px, when 1em == 16px
+$sl-breakpoint-large: 50em !default; // 800px, when 1em == 16px
+
+$sl-arrow-fontsize-small: 2rem !default;
+$sl-arrow-fontsize-medium: 3rem !default;
+$sl-arrow-fontsize-large: 3rem !default;
+$sl-img-border-small: 0 none !default;
+$sl-img-border-medium: 0 none !default;
+$sl-img-border-large: 0 none !default;
+$sl-iframe-border-small: 0 none !default;
+$sl-iframe-border-medium: 0 none !default;
+$sl-iframe-border-large: 0 none !default;
+
+$add-vendor-prefixes: true !default;
+
+body.hidden-scroll {
+    overflow: hidden;
+}
+
+.sl-overlay {
+    position: fixed;
+    left: 0;
+    right: 0;
+    top: 0;
+    bottom: 0;
+    background: $sl-overlay-background;
+    opacity: $sl-overlay-opacity;
+    display: none;
+    z-index: 1035;
+}
+
+.sl-wrapper {
+    z-index: 1040;
+    width: 100%;
+    height: 100%;
+    left: 0;
+    top: 0;
+    position: fixed;
+
+    * {
+        box-sizing: border-box;
+    }
+    button {
+        border: 0 none;
+        background: transparent;
+        font-size: 28px;
+        padding: 0;
+        cursor: pointer;
+        &:hover {
+            opacity: 0.7;
+        }
+    }
+
+    .sl-close {
+        display: none;
+        position: fixed;
+        right: 30px;
+        top: 30px;
+        z-index: 10060;
+        margin-top: -14px;
+        margin-right: -14px;
+        height: 44px;
+        width: 44px;
+        line-height: 44px;
+        font-family: $sl-font-family;
+        color: $sl-navigation-color;
+        font-size: $sl-close-fontsize;
+
+        &:focus {
+            //outline: none;
+        }
+    }
+
+    .sl-counter {
+        display: none;
+        position: fixed;
+        top: 30px;
+        left: 30px;
+        z-index: 1060;
+        color: $sl-navigation-color;
+        font-size: $sl-counter-fontsize;
+    }
+
+    .sl-navigation {
+        width: 100%;
+        display: none;
+        button {
+            position: fixed;
+            top: 50%;
+            margin-top: -22px;
+            height: 44px;
+            width: 22px;
+            line-height: 44px;
+            text-align: center;
+            display: block;
+            z-index: 10060;
+            font-family: $sl-font-family;
+            color: $sl-navigation-color;
+            &.sl-next {
+                right: 5px;
+                font-size: $sl-arrow-fontsize-small;
+            }
+
+            &.sl-prev {
+                left: 5px;
+                font-size: $sl-arrow-fontsize-small;
+            }
+
+            &:focus {
+                //outline: none;
+            }
+
+            @media (min-width: $sl-breakpoint-medium) {
+                width: 44px;
+
+                &.sl-next {
+                    right: 10px;
+                    font-size: $sl-arrow-fontsize-medium;
+                }
+
+                &.sl-prev {
+                    left: 10px;
+                    font-size: $sl-arrow-fontsize-medium;
+                }
+            }
+            @media (min-width: $sl-breakpoint-large) {
+                width: 44px;
+
+                &.sl-next {
+                    right: 20px;
+                    font-size: $sl-arrow-fontsize-large;
+                }
+
+                &.sl-prev {
+                    left: 20px;
+                    font-size: $sl-arrow-fontsize-large;
+                }
+            }
+        }
+    }
+
+    &.sl-dir-rtl {
+        .sl-navigation {
+            direction: ltr;
+        }
+    }
+
+    .sl-image {
+        position: fixed;
+        @if $add-vendor-prefixes {
+            -ms-touch-action: none;
+        }
+        touch-action: none;
+        z-index: 10000;
+        img {
+            margin: 0;
+            padding: 0;
+            display: block;
+            border: $sl-img-border-small;
+            width: 100%;
+            height: auto;
+            @media (min-width: $sl-breakpoint-medium) {
+                border: $sl-img-border-medium;
+            }
+            @media (min-width: $sl-breakpoint-large) {
+                border: $sl-img-border-large;
+            }
+
+        }
+        iframe {
+            background: #000;
+            border: $sl-iframe-border-small;
+            @media (min-width: $sl-breakpoint-medium) {
+                border: $sl-iframe-border-medium;
+            }
+            @media (min-width: $sl-breakpoint-large) {
+                border: $sl-iframe-border-large;
+            }
+        }
+        .sl-caption {
+            display: none;
+            padding: 10px;
+            color: $sl-caption-color;
+            background: $sl-caption-background;
+            font-size: $sl-caption-fontsize;
+            position: absolute;
+            bottom: 0;
+            left: 0;
+            right: 0;
+
+            &.pos-top {
+                bottom: auto;
+                top: 0;
+            }
+
+            &.pos-outside {
+                bottom: auto;
+            }
+        }
+
+        .sl-download {
+            display: none;
+            position: absolute;
+            bottom: 5px;
+            right: 5px;
+            color: $sl-navigation-color;
+            z-index: 1060;
+        }
+    }
+}
+
+.sl-spinner {
+    display: none;
+    border: 5px solid #333;
+    border-radius: 40px;
+    height: 40px;
+    left: 50%;
+    margin: -20px 0 0 -20px;
+    opacity: 0;
+    position: fixed;
+    top: 50%;
+    width: 40px;
+    z-index: 1007;
+    @if $add-vendor-prefixes {
+        -webkit-animation: pulsate 1s ease-out infinite;
+        -moz-animation: pulsate 1s ease-out infinite;
+        -ms-animation: pulsate 1s ease-out infinite;
+        -o-animation: pulsate 1s ease-out infinite;
+    }
+    animation: pulsate 1s ease-out infinite;
+}
+
+.sl-scrollbar-measure {
+    position: absolute;
+    top: -9999px;
+    width: 50px;
+    height: 50px;
+    overflow: scroll;
+}
+
+.sl-transition {
+    @if $add-vendor-prefixes {
+        transition: -moz-transform ease 200ms;
+        transition: -ms-transform ease 200ms;
+        transition: -o-transform ease 200ms;
+        transition: -webkit-transform ease 200ms;
+    }
+    transition: transform ease 200ms;
+}
+
+@-webkit-keyframes pulsate {
+    0% {
+        transform: scale(.1);
+        opacity: 0.0;
+    }
+    50% {
+        opacity: 1;
+    }
+    100% {
+        transform: scale(1.2);
+        opacity: 0;
+    }
+}
+
+@keyframes pulsate {
+    0% {
+        transform: scale(.1);
+        opacity: 0.0;
+    }
+    50% {
+        opacity: 1;
+    }
+    100% {
+        transform: scale(1.2);
+        opacity: 0;
+    }
+}
+
+@if $add-vendor-prefixes {
+    @-moz-keyframes pulsate {
+        0% {
+            transform: scale(.1);
+            opacity: 0.0;
+        }
+        50% {
+            opacity: 1;
+        }
+        100% {
+            transform: scale(1.2);
+            opacity: 0;
+        }
+    }
+
+    @-o-keyframes pulsate {
+        0% {
+            transform: scale(.1);
+            opacity: 0.0;
+        }
+        50% {
+            opacity: 1;
+        }
+        100% {
+            transform: scale(1.2);
+            opacity: 0;
+        }
+    }
+
+    @-ms-keyframes pulsate {
+        0% {
+            transform: scale(.1);
+            opacity: 0.0;
+        }
+        50% {
+            opacity: 1;
+        }
+        100% {
+            transform: scale(1.2);
+            opacity: 0;
+        }
+    }
+}
diff --git a/photos/style.css b/photos/style.css
new file mode 100644
index 0000000000000000000000000000000000000000..48603ab1891b14092f76d07dc85252043269e03d
--- /dev/null
+++ b/photos/style.css
@@ -0,0 +1,32 @@
+.container{
+    margin: 0 auto;
+}
+
+
+.container .gallery a img {
+  float: left;
+  width: 20%;
+  height: auto;
+  border: 2px solid #fff;
+  -webkit-transition: -webkit-transform .15s ease;
+  -moz-transition: -moz-transform .15s ease;
+  -o-transition: -o-transform .15s ease;
+  -ms-transition: -ms-transform .15s ease;
+  transition: transform .15s ease;
+  position: relative;
+}
+
+.container .gallery a:hover img {
+  -webkit-transform: scale(1.05);
+  -moz-transform: scale(1.05);
+  -o-transform: scale(1.05);
+  -ms-transform: scale(1.05);
+  transform: scale(1.05);
+  z-index: 5;
+}
+
+.clear {
+  clear: both;
+  float: none;
+  width: 100%;
+}
\ No newline at end of file