www.100explosive.shop Open in urlscan Pro
2606:4700::6812:e92a  Public Scan

URL: https://www.100explosive.shop/products/3-ton?st
Submission: On December 08 via api from US — Scanned from DE

Form analysis 6 forms found in the DOM

<form>
  <input name="variant_id" type="hidden" value="${data.variants[0].id}">
  <button type="button" class="product-snippet__quick-shop-icon" role="addToCart" data-quick-shop="${data.handle}" data-track-product-id="${data.id}" data-track="click" data-track-content="add_to_cart" data-track-source="quick_shop">
    <svg class="" width="16" height="16" xmlns="http://www.w3.org/2000/svg">
      <path d="M8.6 1.9a.3.3 0 0 0-.3-.3h-.6a.3.3 0 0 0-.3.3v5.5H1.9a.3.3 0 0 0-.3.3v.6a.3.3 0 0 0 .3.3h5.5v5.5a.3.3 0 0 0 .3.3h.6a.3.3 0 0 0 .3-.3V8.6h5.5a.3.3 0 0 0 .3-.3v-.6a.3.3 0 0 0-.3-.3H8.6V1.9z" fill="currentColor"></path>
    </svg>
  </button>
</form>

GET /search

<form class="flex items-center" action="/search" method="get">
  <button type="submit" class="clear text-0 text-inherit cursor-pointer">
    <svg class="" width="26" height="26" xmlns="http://www.w3.org/2000/svg">
      <path fill-rule="evenodd" clip-rule="evenodd"
        d="M17.925 20.057A9.955 9.955 0 0 1 12 22C6.477 22 2 17.523 2 12S6.477 2 12 2s10 4.477 10 10a9.968 9.968 0 0 1-2.864 7.006l4.929 4.928a.8.8 0 0 1-1.132 1.132l-5-5-.008-.01zM20.4 12a8.4 8.4 0 1 1-16.8 0 8.4 8.4 0 0 1 16.8 0z"
        fill="currentColor"></path>
    </svg>
  </button>
  <input @input-debounced="header_search_predictive_render.rerender(data=event.value, redo=true);" class="header__search_sidebar-input flex-1 text-base leading-none type-text-font-family clear" type="text" autocomplete="off" name="q"
    placeholder="Search products">
  <button type="reset" class="header__search-modal-close text-0 text-inherit clear cursor-pointer" @tap="header_search_sidebar.close()">
    <svg class="" width="26" height="26" xmlns="http://www.w3.org/2000/svg">
      <path d="M21.502 5.732A.85.85 0 0 0 20.3 4.53l-7.32 7.32L5.734 4.6a.85.85 0 0 0-1.202 1.203l7.248 7.247L4.53 20.3A.85.85 0 0 0 5.733 21.5l7.248-7.248 7.319 7.319a.85.85 0 0 0 1.202-1.202l-7.319-7.319 7.319-7.319z" fill="currentColor"></path>
    </svg>
  </button>
</form>

<form role="spz-product-form78e576c1-249c-4b89-bffb-c02375747c5c">
  <div class="product-info-body-inner product-info-body-z-index" id="product-info-body-inner-container">
    <h1 class="product-info__header_title m-0 type-heading-font-family text-base lg:text-xl leading-1.3 lg:leading-1.2 break-words ">3 Ton Long-Reach Low-Profile Professional Floor Jack with RAPID PUMP</h1>
    <spz-render id="product-info-prices" layout="container" manual="" class="i-spzhtml-layout-container i-spzhtml-element i-spzhtml-built i-spzhtml-layout" i-spzhtml-layout="container" style="height: auto;">
      <template> ${function() { const variantData = data.variant ||
        {"id":"4e316841-574e-494d-b142-695f6182d6c8","product_id":"78e576c1-249c-4b89-bffb-c02375747c5c","title":"Blue","weight_unit":"kg","inventory_quantity":-570,"sku":"sku2097625714777","barcode":"","position":1,"option1":"Blue","option2":"","option3":"","note":"","image":{"src":"\/\/img.fantaskycdn.com\/8dacb98ea213d8adf5631151c6e3f33d.jpeg","path":"8dacb98ea213d8adf5631151c6e3f33d.jpeg","width":1200,"height":1200,"alt":"","aspect_ratio":1},"wholesale_price":[{"price":39.99,"min_quantity":1}],"weight":"0","compare_at_price":"0","price":"39.99","retail_price":"0","available":true,"url":"\/products\/3-ton?variant=4e316841-574e-494d-b142-695f6182d6c8","available_quantity":999999999,"options":[{"name":"COLOR","value":"Blue"}],"off_ratio":0,"flashsale_info":[],"sales":293};
        const saveType = "percentage"; const saveText = "Save {{saved_amount}}"; const productLabelDiscountOn = true; return ` <div class="flex items-center justify-between mt-3">
          <div spz-if="${!variantData.price}" class="mr-2 text-2xl leading-1.2 font-semibold color-price flex">
            <spz-currency class="mr-2 text-2xl leading-1.2 font-semibold color-price" container-class="product-info__header_price" value="${data.product.price_min}" layout="container"></spz-currency>
            <span class="flex" spz-if="${!variantData.price &amp;&amp; data.product.price_min < data.product.price_max}"> - <spz-currency class="ml-2 text-2xl leading-1.2 font-semibold color-price" container-class="product-info__header_price"
                value="${data.product.price_max}" layout="container"></spz-currency></span>
          </div>
          <div spz-else="" class="flex items-center flex-wrap">
            <spz-currency class="mr-2 text-2xl leading-1.2 font-semibold color-price" container-class="product-info__header_price" value="${variantData.price}" layout="container"></spz-currency>
            <spz-currency class="body-plus-2 leading-1.1 color-compare-price line-through mr-2" container-class="product-info__header_compare-at-price" layout="container" value="${variantData.compare_at_price}"
              spz-if="${+variantData.price < +variantData.compare_at_price}"></spz-currency>
            <div spz-if="${productLabelDiscountOn &amp;&amp; variantData.off_ratio > 0}" class="inline-block color-save-price whitespace-nowrap"> ${saveText.replace('\{\{saved_amount\}\}', saveType == 'percentage' ? variantData.off_ratio + '%' :
              `<spz-currency class="inline-block" value="${variantData.compare_at_price - variantData.price}" layout="container"></spz-currency>` )} </div>
          </div>
        </div> `; }()} </template>
      <div class="flex items-center justify-between mt-3">
        <div class="flex items-center flex-wrap" spz-else="">
          <spz-currency class="mr-2 text-2xl leading-1.2 font-semibold color-price i-spzhtml-element i-spzhtml-layout-container i-spzhtml-built i-spzhtml-layout" container-class="product-info__header_price" value="39.99" layout="container"
            i-spzhtml-layout="container">
            <div class="money product-info__header_price notranslate">$39.99</div>
          </spz-currency>
        </div>
      </div>
    </spz-render>
    <div class="flex flex-wrap item-center justify-between color-compare-price mt-3">
      <div>293 sold</div>
    </div>
    <div class="plugin-discount-wrap empty-hidden" role="[theme-seat-for-plugin]">
      <div class="bootstrap">
        <div class="plugin__wrappers d-flex flex-column">
          <div class="plugin_modals position-relative plugin_modals-rebate" id="Modal192828" style="order: 8">
            <style>
              #Modal192828 {
                --modal_background: linear-gradient(0deg, #ebc19e, #fff3e8 100%);
                --modal_caret_background: #fff2e9;
                --modal_title_color: #B83D07;
                --modal_close_color: #FFFFFF;
                --modal_close_background_color: #F03010;
                --list_border_color: #dddddd;
              }

              @media (max-width: 767.98px) {
                #Modal192828 .coupon_plugin__coupon:last-child {
                  padding-bottom: 0;
                }
              }

              #Modal192828 .modal-footer {
                position: relative;
                margin-top: -30px;
              }

              #Modal192828 .modal-footer::before {
                content: '';
                position: absolute;
                bottom: 0;
                left: 0;
                right: 0;
                height: 150%;
                background-image: url(//img.fantaskycdn.com/oss/operation/e8ebb03dbb710457ca3b4b6a70898ab2.svg);
                background-repeat: no-repeat;
                background-size: 100%;
                pointer-events: none;
              }

              @media (max-width: 767.98px) {
                #Modal192828 .discount-present-item:last-child {
                  padding-bottom: 40px;
                }

                #Modal192828 .plugin_modals__wrapper-list>a:last-child {
                  padding-bottom: 14px;
                }
              }
            </style>
            <!-- 弹窗 -->
            <div class="fade plugin_modals__modal" data-backdrop="false" role="dialog" id="target_Modal192828">
              <div class="plugin_modals__modal-mask" data-dismiss="modal" aria-label="Close"></div>
              <div class="modal-dialog m-0" role="document">
                <div class="modal-content">
                  <div class="modal-header justify-content-center p-1">
                    <h5 class="modal-title p-1">SPECIAL OFFER</h5>
                    <i type="button" class="modal_close" data-dismiss="modal" aria-label="Close"><svg class="icon" viewBox="0 0 1024 1024" xmlns="http://www.w3.org/2000/svg" width="20" height="20"><defs><style></style></defs><path d="M512 1024C229.805 1024 0 794.195 0 512S229.805 0 512 0s512 229.805 512 512-229.805 512-512 512zm0-47.628C768 976.372 976.372 768 976.372 512S768 47.628 512 47.628 47.628 256 47.628 512 256 976.372 512 976.372z" fill="currentColor"></path><path d="M540.577 507.237l167.888 167.889c9.526 9.525 9.526 23.814 0 33.34s-23.814 9.525-33.34 0l-167.888-167.89-169.079 167.89c-9.525 9.525-23.814 9.525-33.34 0-9.525-9.526-9.525-23.815 0-33.34l167.889-167.889-167.888-169.079c-9.526-9.525-9.526-23.814 0-33.34 9.525-9.525 23.814-9.525 33.34 0l167.888 167.889 167.888-167.888c9.525-9.526 23.814-9.526 33.34 0 9.525 9.525 9.525 23.814 0 33.34L540.576 507.236z" fill="currentColor"></path></svg></i>
                  </div>
                  <div class="modal-body">
                    <div class="plugin_modals__wrapper">
                      <!-- modal头部 -->
                      <img alt="product rebate" class="plugin_modals__wrapper-top w-100"
                        src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAtAAAAAyCAYAAAB1ROw8AAAID0lEQVR4Xu3dsY7URhgAYBvlXoE3CBQUkajoiQQFSgG55iLyDEjkAehowiPQBInmQoqkoeB6qgiKQwLeIG26nBRnzHqP3LF3O157PLO+75pIMDvj//t/536bWbu+9eBOlfvn15tXm9zHELP+9wfv65hxY4/J5SPesTO5ej75ncZZPU/jrJ6ncVbP0zir52mcY1bJVfNnHdulmIM2ZiHw27dXvp7aIseayxhzrJ1jTfFOV9XyO29r+ZXfVAI5aivHmhf191FM3eTMx6rjy95AlwZyXhKbproRk+Qxx+RYc3n8OdbOsaZ4x6zY8+eS33lby6/8phLIUVs51ryov49S1U3KebM30CmDG3vupqpvjz3nuvlyrHl8Aot3XXoG/738DiaMniCHdY41nb/RJTF4oPwOJoyeIId1jjUv6vkbXQgFDczeQOe8wtsgD7tT3jHv1trd4DjH+oh4x5JcMY/8JsRdPbV6TkiunhPiqudWwPmbsMQKOH/XRldav5i9ga6q+vJatXIG7Pzb1I+mOpxurZ2p1luxjngT4stvQtzVU6vnhOTqOSGuem4FnL8JS6yA8zciurL6xewNdHj8xvUItZKG7L24efVh6gN6cfPK/bDGXup1IuYXbwRS3yHy21dstPHqeTTKzxOp5wSocVOq5zinXqPUcy+uyQaX1i9mb6DDc+GuTaY/0kIhiY+7E2ykGU9O084d9l49TTL5BpOKdwO0cz4iv+N69p1NPfcVO3+8eh7Xs+9s6rmvmHr+v0Bp5+952SmtX8zaQLd7bsLJ/8245T/JbDuhwf0lxZ3ods527hBFzq0bpxHFO1JZye9IkMOmUc/D/I4/rZ5Hghw2jXoe5qeey+o3zsxm2y9O+T20dWVV53yRSnfl0zaL2/pzFK6I3tV1s3v31YePQ4L4dDHR1PuFX1CId8Mky++GcGk/pp439FXPG8Kl/Zh63tBXPW8Il+FjddX8eO/gw7MMS3+xZOYG+uqbwhvGmBwddYP2L9XNo76NdHvidpv326dtlHTX+azYxRtTFd0Y+e2BlWeoeu7hrp57YOUZqp57uKvnHljlDH0e3kj4QwmHk62B7gr3cEuaxuhchTvSb8NFwWG4SnpZ19Xr0w314kq3utE+X7Ldz7PtFxDiPfkvD/K7lVuyjs9v9aye/f85+tddcQOdv/M+f7uCOwo3K6/1vVmZolizNdCLvXPVzymCKmDO9i7AurvJMWMKCCXqEGJiiRkTtVgBg2JiiRlTQChRhxATS8yYqMUKGBQTS8yYAkKJOoSYWGLGRC1WwKCYWGLGFBBK1CHExBIzJmqxAgbFxBIzpoBQog4hJpaYMVGLlTAoXCj9dO/g/ZPcx5LzS4TtY9rm+rOueW7jjhmzLT4xscSMEW+ZAjG5ixlTZnRfHlVMLDFjxFumQEzuYsaUGZ16jsldzBj5LVegiP4xSwO9+PLgdv9Tb7l15cgIECBAgAABAvMUaPvHlI8SjlXL0kCHtw8mfxFJLIBxBAgQIECAAAEC2ySQv4+cvIHu9j5v47Oft6myHCsBAgQIECBAYJYCi7vQ6d8KfR7epA109+KUx7PMpqAIECBAgAABAgSmEDhq38KZ88UqkzbQ3fOO57R5f4oisQYBAgQIECBAgMBngU+9ZNdXZnGZrIHuNnzvZYnSogQIECBAgAABAnMSaJvovVxfKJykgV5s3aifzilrYiFAgAABAgQIEMgr0PaXObZyJG+gl++YD7y2buStMasTIECAAAECBOYmsNM09f7UTXTyBroNyjOf51ar4iFAgAABAgQIlCHQ9pltvznl0SRtoMMjRt5onqdMp7UIECBAgAABAhdPoHu03ZupIv8qxULLbRua5xS65iRAgAABAgQIEDgtsGyi67rZvfvqw8eUQqPfgdY8p0yXuQkQIECAAAECBM4SWG7nSL0netQGun2USHgm36E7zwqbAAECBAgQIEAgh0Dbh7b9aMpH3NW3HtwZHFvb5XcPs/ac58GaJiBAgAABAgQIEBhJ4Pmlunk09paOwXegl3edQ5Ca55EybRoCBAgQIECAAIFRBPZS3I3e+A704rZ4/bDbrnEUQvSc51HybBICBAgQIECAAIGRBNoetf3ZqavqbVU1T+4dfHg2dO5eDXT3BcHvwqL37XMeSu/zBAgQIECAAAECUwssGunqWXhax++bbu1Y20AvmubqRnhV4u2w2K47zVOn2XoECBAgQIAAAQIjCyzvTO/XVfOyrqvXfZrp4wZ6+biPtlkOWzMuhzvM10OHfs2d5pHTZToCBAgQIECAAIHSBI5C3/su9L2H4b9/hq0ef53XVNd///Hwn1N3lY/3ipQWmeMhQIAAAQIECBAgkFhgVS984s/aNxGe/vKfLwMmzorpCRAgQIAAAQIEihVY1Quf+LPBj7ErNnQHRoAAAQIECBAgQCCBgAY6AaopCRAgQIAAAQIE5iuggZ5vbkVGgAABAgQIECCQQEADnQDVlAQIECBAgAABAvMV0EDPN7ciI0CAAAECBAgQSCCggU6AakoCBAgQIECAAIH5Cmig55tbkREgQIAAAQIECCQQ0EAnQDUlAQIECBAgQIDAfAU00PPNrcgIECBAgAABAgQSCGigE6CakgABAgQIECBAYL4CGuj55lZkBAgQIECAAAECCQQ00AlQTUmAAAECBAgQIDBfAQ30fHMrMgIECBAgQIAAgQQCGugEqKYkQIAAAQIECBCYr4AGer65FRkBAgQIECBAgEACgf8ADWHGqni73L8AAAAASUVORK5CYII=">
                      <div class="plugin_modals__wrapper-bg">
                        <div class="plugin_modals__wrapper-list">
                          <style>
                            a.product_detail_rebate_list {
                              display: inline-flex;
                              align-items: start;
                              color: #EB391B;
                            }

                            a.product_detail_rebate_list:hover {
                              color: #EB391B;
                            }

                            .plugin_modals__modal .rebate-icon {
                              display: none;
                            }

                            .rebate-icon {
                              margin-right: 4px;
                              padding-top: 4px;
                            }
                          </style>
                          <a class="product_detail_rebate_list" impr="1" imprevt="1" href="/promotions/rebate/d01441d7-0132-4d8c-bbb2-075cb2232446">
  <svg xmlns="http://www.w3.org/2000/svg" width="16" height="24" fill="none" class="rebate-icon">
    <g clip-path="url(#a)">
      <path fill="#EB391B" fill-rule="evenodd" d="M9.127 1.275a1.576 1.576 0 0 0-2.255 0l-.693.709a1.576 1.576 0 0 1-1.146.475l-.991-.012a1.576 1.576 0 0 0-1.595 1.595l.011.991a1.576 1.576 0 0 1-.475 1.146l-.708.693a1.576 1.576 0 0 0 0 2.255l.709.693c.308.3.48.716.475 1.146l-.012.992a1.576 1.576 0 0 0 1.595 1.594l.991-.011a1.577 1.577 0 0 1 1.146.475l.693.709a1.575 1.575 0 0 0 2.255 0l.693-.71a1.576 1.576 0 0 1 1.146-.475l.992.012a1.575 1.575 0 0 0 1.594-1.594l-.011-.992a1.577 1.577 0 0 1 .475-1.146l.709-.693a1.575 1.575 0 0 0 0-2.255l-.71-.693a1.576 1.576 0 0 1-.475-1.146l.012-.991a1.576 1.576 0 0 0-1.594-1.595l-.992.011a1.576 1.576 0 0 1-1.146-.475l-.693-.708ZM5.84 6.92a1.08 1.08 0 1 0 0-2.16 1.08 1.08 0 0 0 0 2.16Zm4.32 4.32a1.08 1.08 0 1 0 0-2.161 1.08 1.08 0 0 0 0 2.16Zm.56-5.96a.793.793 0 0 1 0 1.12L6.4 10.72A.792.792 0 0 1 5.28 9.6L9.6 5.28a.792.792 0 0 1 1.12 0Z" clip-rule="evenodd"></path>
    </g>
    <defs>
      <clipPath id="a"><path fill="#fff" d="M0 0h16v16H0z"></path></clipPath>
    </defs>
  </svg>
   <div style="flex:1;">
    
      <li id="pdr__rule" class="pdr__rule">
        Buy <b><span class="money notranslate">$70.00</span></b> more and save <b>12%</b> off
      </li>
    
      <li id="pdr__rule" class="pdr__rule">
        Buy <b><span class="money notranslate">$100.00</span></b> more and save <b>33%</b> off
      </li>
    
      <li id="pdr__rule" class="pdr__rule">
        Buy <b><span class="money notranslate">$150.00</span></b> more and save <b>55%</b> off
      </li>
    
      <li id="pdr__rule" class="pdr__rule">
        Buy <b><span class="money notranslate">$200.00</span></b> more and save <b>67%</b> off
      </li>
    
      <li id="pdr__rule" class="pdr__rule">
        Buy <b><span class="money notranslate">$250.00</span></b> more and save <b>77%</b> off
      </li>
    
   </div>
  </a>
                        </div>
                      </div>
                      <!-- modal底部 -->
                      <img alt="product rebate" class="plugin_modals__wrapper-bottom w-100"
                        src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAtAAAAAyCAYAAAB1ROw8AAAHlUlEQVR4Xu3dz2pdRRgA8HOk9Ql8hSZFt10LJYEKbcHSItSNDyCVQsGtdCu4UfoAroTSYEACXbQWXHetvekrdOcyi+PMTaLXkOSefzNzevK7ILU6Z76Z33yHfpnOPaf++7dHTeVDgAABAgQIECBAgEArgQ9atdKIAAECBAgQIECAAIGlgAJaIhAgQIAAAQIECBDoIKCA7oClKQECBAgQIECAAAEFtBwgQIAAAQIECBAg0EFAAd0BS1MCBAgQIECAAAECCmg5QIAAAQIECBAgQKCDgAK6A5amBAgQIECAAAECBBTQcoAAAQIECBAgQIBABwEFdAcsTQkQIECAAAECBAgooOUAAQIECBAgQIAAgQ4CCugOWJoSIECAAAECBAgQUEDLAQIECBAgQIAAAQIdBBTQHbA0JUCAAAECBAgQIKCAlgMECBAgQIAAAQIEOggooDtgaUqAAAECBAgQIEAgFtAHGAgQIECAAAECBAgQOFMg1sv/1syX7r1cfBib7mxvXFle0lTXqrr+qGmaj6uqvh7+yyZMAgQIECBAgAABAjMXWIRC+FVd139WTfOuqqvXcb53X+y/PTnv+sbDW+daLAvrUFQ3Vf1FaHgz/HN55nimR4AAAQIECBAgMH+BuKO8V1fN01gsn1Yon0WwtoBevfBwl7r+rGmqr+1Mzz+rzJAAAQIECBAgMEOBRV1XT8Ju8/MuRfOqQ6cC+n/F9NbG/bAr/Z1CeoZpZUoECBAgQIAAgfkJLMJu8+O7L/d/GTq13gX0ceCd7c0HYUf6h/B7RzuGrobrCRAgQIAAAQIExhRYfvEv7Dg/uvti8dNYHQ9+jF0czNEXEXfHGpR+CBAgQIAAAQIECIwgsFfXzSdjFs9xTIML6OOJhSL6TtgW/zL83mPxRlhtXRAgQIAAAQIECPQWOIh1aaxP+55zPi/yaAV0DBLPlMQqP/xreAyIDwECBAgQIECAAIHsAuFLgmHXeYSzzmeNfNQCellEh2flhUHfVkRnTxYBCRAgQIAAAQIXWSCegojF8+0Uu86rsIO/RHjeKj3b2nwT/r8XsVzkVDZ3AgQIECBAgEAegd14ZCNHqNF3oFcHHSZx1U50jmUUgwABAgQIECBwoQUWuYrnqJy0gI4BHOe40Mls8gQIECBAgACB1ALLYxupg6z2n7yAXjkT7ekcOVdWLAIECBAgQIDA/AUOcpx5PsmYvICOAQ+L6OrR/NfQDAkQIECAAAECBHIJHL4gZf9trnjHcbIU0IdF9PLtL7u5JygeAQIECBAgQIDALAV2x35BSlulbAV0HFDYYv82/OIoR9vV0Y4AAQIECBAgQOA0gXh0I9aVRT5ZC2hHOYqssaAECBAgQIAAgVkJlDq6cYyYtYCOQY+22r2pcFZpbDIECBAgQIAAgWwCi1JHN4oV0DFweDf542zEAhEgQIAAAQIECMxGYAp1ZPYd6OUu9OG7ye1CzyaVTYQAAQIECBAgkEVgcVRHZgl2VpAiBfRyF7qunhSdueAECBAgQIAAAQLvlcBU6sdL5dSa56GMjk/kuFxuDEkih5315lVdVX+EsyqvTz6bcGd740rVVNeaqvo0zP96GMFmklHk69R8V6ytr3zOd+uNEsn96/7159Eot1KRTi7a/RuRQ90Y68fyn/rGw1vFRvFsa/PXEPzzYgMYL3D8QWAvPk6l68O8Y8HVNPX34fqb79EPE+bbMnesb0uoss3kc0t/+dwSqmwz+dzSXz63hJpWs917Lxd3pjCkogX0zvbmg6apfpwCxIAx7PYpnE/GW7mRp/4Dhfn2SBbr2wMtzyXyuYezfO6BlucS+dzDWT73QCt0STi+8U3pp28cT71wAb3cfd0vtA6Dw6ZYyCn/UGG+g1Omsr7DDcfqQT4Pl5TPww3H6kE+D5eUz8MNU/cQNiw3uv5Nf6oxFS2g46TCMY434Zf37RzwQXiEylepvgW6s7Vxv6nqn4PLVM6Hm++Id6D1HRGzX1fyuZ/bqVfJ5xEx+3Uln/u5yecgMMH797zVXITjG1dHXO5BXRV7CsfKqP8aNIMCFy/ffnP4KL4kn9h3jJGk8x6dmm8PtHMusb7jenbtTT53FTu/vXwe17Nrb/K5q5h8XhWY2v27ZjUnVS8WL6DDzf/7uOmfvLfdHOdvjmLsJp/N+gDmu96ocwvr25lsrAvk81iSK/3I5wSo7bqUz+2cOrWSz524sjWeWr1YvICumuZdNv3hgQ7iFwaHd9Ouh6NY8RvVpT7mm1De+ibEPb1r+ZyQXD4nxJXPUcD9mzDFJnD/rp/dxOrF8gV0eFbyerXJtNjLeXj9KNZewdmbb0J865sQ9/Su5XNCcvmcEFc+RwH3b8IUm8D9u352E6sXyxfQ68km0yJ8cfBp7sGUiHk8xxKxS8Q033xZbX3nbW19rW8qgRK5VSLmRf3zKFXepOy3eAGdc0d3MGSJn35KxPzvDs7/twPmOzhNW3dQwrpETPncOiUGN7S+gwlbd1DCukRM92/rlBjcsOT6Dh58/g6KP8YuTjk8yi682Xr6n/D4lPCG7vyfUj7mm2etrW8eZ/mcx1k+53GWz3mc5XMe5zZRSuX8WWP7Bxil8XEJz7ZOAAAAAElFTkSuQmCC">
                    </div>
                  </div>
                  <div class="modal-footer d-md-none">
                    <a type="button" class="footer_close" style="border-radius: 100px;" data-dismiss="modal">CLOSE</a>
                  </div>
                </div>
              </div>
            </div>
            <!-- 入口 -->
            <div class="plugin_modals__list" data-toggle="modal" data-target="#target_Modal192828" impr="1" imprevt="1" imprsd="true">
              <div class="plugin_modals__list-name">
                <style>
                  a.product_detail_rebate_list {
                    display: inline-flex;
                    align-items: start;
                    color: #EB391B;
                  }

                  a.product_detail_rebate_list:hover {
                    color: #EB391B;
                  }

                  .plugin_modals__modal .rebate-icon {
                    display: none;
                  }

                  .rebate-icon {
                    margin-right: 4px;
                    padding-top: 4px;
                  }
                </style>
                <a class="product_detail_rebate_list" impr="1" imprevt="1" href="/promotions/rebate/d01441d7-0132-4d8c-bbb2-075cb2232446" imprsd="true">
  <svg xmlns="http://www.w3.org/2000/svg" width="16" height="24" fill="none" class="rebate-icon">
    <g clip-path="url(#a)">
      <path fill="#EB391B" fill-rule="evenodd" d="M9.127 1.275a1.576 1.576 0 0 0-2.255 0l-.693.709a1.576 1.576 0 0 1-1.146.475l-.991-.012a1.576 1.576 0 0 0-1.595 1.595l.011.991a1.576 1.576 0 0 1-.475 1.146l-.708.693a1.576 1.576 0 0 0 0 2.255l.709.693c.308.3.48.716.475 1.146l-.012.992a1.576 1.576 0 0 0 1.595 1.594l.991-.011a1.577 1.577 0 0 1 1.146.475l.693.709a1.575 1.575 0 0 0 2.255 0l.693-.71a1.576 1.576 0 0 1 1.146-.475l.992.012a1.575 1.575 0 0 0 1.594-1.594l-.011-.992a1.577 1.577 0 0 1 .475-1.146l.709-.693a1.575 1.575 0 0 0 0-2.255l-.71-.693a1.576 1.576 0 0 1-.475-1.146l.012-.991a1.576 1.576 0 0 0-1.594-1.595l-.992.011a1.576 1.576 0 0 1-1.146-.475l-.693-.708ZM5.84 6.92a1.08 1.08 0 1 0 0-2.16 1.08 1.08 0 0 0 0 2.16Zm4.32 4.32a1.08 1.08 0 1 0 0-2.161 1.08 1.08 0 0 0 0 2.16Zm.56-5.96a.793.793 0 0 1 0 1.12L6.4 10.72A.792.792 0 0 1 5.28 9.6L9.6 5.28a.792.792 0 0 1 1.12 0Z" clip-rule="evenodd"></path>
    </g>
    <defs>
      <clipPath id="a"><path fill="#fff" d="M0 0h16v16H0z"></path></clipPath>
    </defs>
  </svg>
   <div style="flex:1;">
    
      <li id="pdr__rule" class="pdr__rule">
        Buy <b><span class="money notranslate">$70.00</span></b> more and save <b>12%</b> off
      </li>
    
      <li id="pdr__rule" class="pdr__rule">
        Buy <b><span class="money notranslate">$100.00</span></b> more and save <b>33%</b> off
      </li>
    
      <li id="pdr__rule" class="pdr__rule">
        Buy <b><span class="money notranslate">$150.00</span></b> more and save <b>55%</b> off
      </li>
    
      <li id="pdr__rule" class="pdr__rule">
        Buy <b><span class="money notranslate">$200.00</span></b> more and save <b>67%</b> off
      </li>
    
      <li id="pdr__rule" class="pdr__rule">
        Buy <b><span class="money notranslate">$250.00</span></b> more and save <b>77%</b> off
      </li>
    
   </div>
  </a>
              </div>
              <div class="plugin_modals__list-labels text-right"></div>
              <i class="plugin_modals__list-icon">
        <svg class="icon" viewBox="0 0 1024 1024" xmlns="http://www.w3.org/2000/svg" width="18" height="18"><defs><style></style></defs><path d="M636.48 512.32l-366.4 366.4a48 48 0 0067.84 67.872l384.672-384.64a48 48 0 0011.456-49.6 48 48 0 00-11.456-49.6L337.952 78.016a48 48 0 00-67.904 67.904l366.4 366.4z"></path></svg>
      </i>
            </div>
          </div>
        </div>
      </div>
    </div>
    <spz-variants class="product-info__variants flex flex-col items-start i-spzhtml-layout-container i-spzhtml-element i-spzhtml-built i-spzhtml-layout" layout="container" id="product-info-variants" src="script:product-json" switch-slide="[]"
      slide="product-main-images;" manual="" interference="" interact="hover" inherit-url-variant="" @mouseout="product-info-selected-variant-COLOR.rerender(data=event);" @colormouseover="product-info-selected-variant-COLOR.rerender(data=event);"
      i-spzhtml-layout="container">
      <fieldset class="product-info__variants_content mt-6 lg:mt-8 mx-0" name="COLOR">
        <legend class="w-full">
          <span class="lg:body-plus-2 leading-1.3 product-info__variants_title">Color</span>
          <spz-render class="inline-block opacity-60 i-spzhtml-layout-container i-spzhtml-element i-spzhtml-built i-spzhtml-layout" id="product-info-selected-variant-COLOR" layout="container" manual="" i-spzhtml-layout="container"
            style="height: 21px;">
            <template> ${function(){ const optName = "COLOR"; const optionValue = data.originData.selectData ? data.originData.selectData[optName].value : data.originData.value; const optionValueText = optionValue ? (': ' + optionValue) : ''; return
              ` <span> ${optionValueText} </span> ` }()} </template>
            <span> : Blue </span></spz-render>
        </legend>
        <div class="flex flex-wrap  ">
          <div class="relative mt-3 mr-3">
            <input type="radio" option="Blue" id="product-info-variant-Blue-0" class="pointer-events-auto" name="product-info-variant-COLOR" value="Blue" form="product-info-body"
              @input-debounced="product-info-selected-variant-color.rerender(data=event);" checked="">
            <label class="product-info-variant-option relative flex items-center break-words flex-shrink-0 overflow-hidden 
    
      rounded-[1px]
    
  " data-type="image-with-text">
              <spz-img class="ml-1 i-spzhtml-layout-responsive i-spzhtml-layout-size-defined i-spzhtml-element i-spzhtml-built i-spzhtml-layout" src="//img.fantaskycdn.com/8dacb98ea213d8adf5631151c6e3f33d_48x.jpeg" layout="responsive" width="42"
                height="42" alt="" object-fit="cover" auto-fit="" i-spzhtml-layout="responsive" complete=""><i-spzhtml-sizer style="padding-top:100%;"></i-spzhtml-sizer><img decoding="async" alt=""
                  src="//img.fantaskycdn.com/8dacb98ea213d8adf5631151c6e3f33d_48x.jpeg" class="i-spzhtml-fill-content i-spzhtml-replaced-content" style="object-fit: cover;"></spz-img>
              <span class="break-words py-2 px-3">Blue</span>
            </label>
          </div>
          <div class="relative mt-3 mr-3">
            <input type="radio" option="Black" id="product-info-variant-Black-1" class="pointer-events-auto" name="product-info-variant-COLOR" value="Black" form="product-info-body"
              @input-debounced="product-info-selected-variant-color.rerender(data=event);">
            <label class="product-info-variant-option relative flex items-center break-words flex-shrink-0 overflow-hidden 
    
      rounded-[1px]
    
  " data-type="image-with-text">
              <spz-img class="ml-1 i-spzhtml-layout-responsive i-spzhtml-layout-size-defined i-spzhtml-element i-spzhtml-built i-spzhtml-layout" src="//img.fantaskycdn.com/ae238034cee4a84fbde5d22233c5c9dc_48x.jpeg" layout="responsive" width="42"
                height="42" alt="" object-fit="cover" auto-fit="" i-spzhtml-layout="responsive" complete=""><i-spzhtml-sizer style="padding-top:100%;"></i-spzhtml-sizer><img decoding="async" alt=""
                  src="//img.fantaskycdn.com/ae238034cee4a84fbde5d22233c5c9dc_48x.jpeg" class="i-spzhtml-fill-content i-spzhtml-replaced-content" style="object-fit: cover;"></spz-img>
              <span class="break-words py-2 px-3">Black</span>
            </label>
          </div>
          <div class="relative mt-3 mr-3">
            <input type="radio" option="Green" id="product-info-variant-Green-2" class="pointer-events-auto" name="product-info-variant-COLOR" value="Green" form="product-info-body"
              @input-debounced="product-info-selected-variant-color.rerender(data=event);">
            <label class="product-info-variant-option relative flex items-center break-words flex-shrink-0 overflow-hidden 
    
      rounded-[1px]
    
  " data-type="image-with-text">
              <spz-img class="ml-1 i-spzhtml-layout-responsive i-spzhtml-layout-size-defined i-spzhtml-element i-spzhtml-built i-spzhtml-layout" src="//img.fantaskycdn.com/3cf1f0b40059b65b7b62bf39d02365c3_48x.jpeg" layout="responsive" width="42"
                height="42" alt="" object-fit="cover" auto-fit="" i-spzhtml-layout="responsive" complete=""><i-spzhtml-sizer style="padding-top:100%;"></i-spzhtml-sizer><img decoding="async" alt=""
                  src="//img.fantaskycdn.com/3cf1f0b40059b65b7b62bf39d02365c3_48x.jpeg" class="i-spzhtml-fill-content i-spzhtml-replaced-content" style="object-fit: cover;"></spz-img>
              <span class="break-words py-2 px-3">Green</span>
            </label>
          </div>
          <div class="relative mt-3 mr-3">
            <input type="radio" option="Orange" id="product-info-variant-Orange-3" class="pointer-events-auto" name="product-info-variant-COLOR" value="Orange" form="product-info-body"
              @input-debounced="product-info-selected-variant-color.rerender(data=event);">
            <label class="product-info-variant-option relative flex items-center break-words flex-shrink-0 overflow-hidden 
    
      rounded-[1px]
    
  " data-type="image-with-text">
              <spz-img class="ml-1 i-spzhtml-layout-responsive i-spzhtml-layout-size-defined i-spzhtml-element i-spzhtml-built i-spzhtml-layout" src="//img.fantaskycdn.com/515f441e1f1a3d65cb7910cfc1f9c599_48x.jpeg" layout="responsive" width="42"
                height="42" alt="" object-fit="cover" auto-fit="" i-spzhtml-layout="responsive" complete=""><i-spzhtml-sizer style="padding-top:100%;"></i-spzhtml-sizer><img decoding="async" alt=""
                  src="//img.fantaskycdn.com/515f441e1f1a3d65cb7910cfc1f9c599_48x.jpeg" class="i-spzhtml-fill-content i-spzhtml-replaced-content" style="object-fit: cover;"></spz-img>
              <span class="break-words py-2 px-3">Orange</span>
            </label>
          </div>
        </div>
      </fieldset>
      <spz-render id="COLOR-error-tip" manual="" layout="container" class="i-spzhtml-layout-container i-spzhtml-element i-spzhtml-built i-spzhtml-layout" i-spzhtml-layout="container">
        <template> ${function(){ const tipText = "Please select a {{ name }}".replace(/\{\{\s+name\s+\}\}/g, data); return `<div class="product-info__variants-tips font-bold">${tipText}</div>` }()} </template>
      </spz-render>
    </spz-variants>
    <div class="mt-5 lg:mt-6">
      <div class="lg:body-plus-2 leading-1.3">Quantity</div>
      <spz-quantity class="product-info-qty mt-3 i-spzhtml-layout-fixed-height i-spzhtml-layout-size-defined i-spzhtml-element i-spzhtml-built i-spzhtml-layout" id="product-info-quantity" name="quantity" value="1" min="1" max="999999999"
        icon-class="product-info-qty-btn clear flex items-center justify-center flex-shrink-0" input-class="product-info-qty-input clear flex-shrink-0 body-plus-2 text-center" height="40" layout="fixed-height" style="height:40px;"
        i-spzhtml-layout="fixed-height">
        <div class="i-spzhtml-fill-content i-spzhtml-replaced-content"><span role="button" class="i-spzhtml-quantity-number-decrease product-info-qty-btn clear flex items-center justify-center flex-shrink-0" disabled=""><svg role="decrease" class=""
              width="16" height="16" xmlns="http://www.w3.org/2000/svg">
              <path d="M13.7 7.4a.3.3 0 0 1 .3.3v.6a.3.3 0 0 1-.3.3H2.3a.3.3 0 0 1-.3-.3v-.6a.3.3 0 0 1 .3-.3h11.4z" fill="currentColor"></path>
            </svg></span><input type="number" name="quantity" min="1" max="999999999" class="i-spzhtml-quantity-number-input product-info-qty-input clear flex-shrink-0 body-plus-2 text-center"><span role="button"
            class="i-spzhtml-quantity-number-increase product-info-qty-btn clear flex items-center justify-center flex-shrink-0"><svg role="increase" class="" width="16" height="16" xmlns="http://www.w3.org/2000/svg">
              <path d="M8.3 14a.3.3 0 0 0 .3-.3V8.6h5.1a.3.3 0 0 0 .3-.3v-.6a.3.3 0 0 0-.3-.3H8.6V2.3a.3.3 0 0 0-.3-.3h-.6a.3.3 0 0 0-.3.3v5.1H2.3a.3.3 0 0 0-.3.3v.6a.3.3 0 0 0 .3.3h5.1v5.1a.3.3 0 0 0 .3.3h.6z" fill="currentColor"></path>
            </svg></span></div>
      </spz-quantity>
    </div>
    <div class="mt-5 lg:mt-6">
      <button class="relative button-primary flex items-center justify-center body-plus-2  type-text-font-family rounded-btn product-info_atc_btn" type="button" role="addToCart" data-track="click" data-track-content="add_to_cart"
        data-track-source="add_to_cart">
        <span role="content">Add to cart</span>
        <spz-render id="product-info-btn-price" layout="container" template="product-info-btn-price-template" manual="" class="i-spzhtml-layout-container i-spzhtml-element i-spzhtml-built i-spzhtml-layout" i-spzhtml-layout="container"
          style="height: auto;">
          <div class="flex"><span class="product_price_before"></span><spz-currency value="39.99" layout="container" class="i-spzhtml-element i-spzhtml-layout-container i-spzhtml-built i-spzhtml-layout" i-spzhtml-layout="container">
              <div class="money notranslate">$39.99</div>
            </spz-currency></div>
        </spz-render>
        <style>
          .product_price_before::before {
            content: ' - ';
            display: block;
            width: 20px;
          }
        </style>
        <template id="product-info-btn-price-template"> ${function(){ const wholesale_enabled = false; const qty = data.quantity || 1; const currentSelectVariant = data.variant; const defaultVariant = (data.product &amp;&amp; data.product.variants
          &amp;&amp; data.product.variants[0]); const productVariant =
          {"id":"4e316841-574e-494d-b142-695f6182d6c8","product_id":"78e576c1-249c-4b89-bffb-c02375747c5c","title":"Blue","weight_unit":"kg","inventory_quantity":-570,"sku":"sku2097625714777","barcode":"","position":1,"option1":"Blue","option2":"","option3":"","note":"","image":{"src":"\/\/img.fantaskycdn.com\/8dacb98ea213d8adf5631151c6e3f33d.jpeg","path":"8dacb98ea213d8adf5631151c6e3f33d.jpeg","width":1200,"height":1200,"alt":"","aspect_ratio":1},"wholesale_price":[{"price":39.99,"min_quantity":1}],"weight":"0","compare_at_price":"0","price":"39.99","retail_price":"0","available":true,"url":"\/products\/3-ton?variant=4e316841-574e-494d-b142-695f6182d6c8","available_quantity":999999999,"options":[{"name":"COLOR","value":"Blue"}],"off_ratio":0,"flashsale_info":[],"sales":293};
          const variantData = currentSelectVariant || defaultVariant || productVariant; const wholesale_price = variantData.wholesale_price || []; if(wholesale_enabled &amp;&amp; wholesale_price.length &gt; 0) { let wholesaleIndex =
          wholesale_price.findIndex(item =&gt; { return item.min_quantity &gt; qty; }); if(wholesaleIndex &lt; 0){ wholesaleIndex = wholesale_price.length - 1; }else if(wholesaleIndex &gt; 0){ wholesaleIndex = wholesaleIndex - 1; } const
          wholesalePrice = wholesale_price[wholesaleIndex] || ''; return ` <div class="flex">
            <span class="product_price_before"></span><spz-currency value="${wholesalePrice.price}" layout="container"></spz-currency>
          </div> ` }else { return `<div class="flex"><span class="product_price_before"></span><spz-currency value="${variantData &amp;&amp; variantData.price}" layout="container"></spz-currency></div>` } }()} </template>
        <div class="loading items-center justify-center absolute inset-0 flex" role="loading" show="">
          <div class="loading-bounce"></div>
        </div>
      </button>
      <button class="relative button-secondary w-full rounded-btn mt-3 product-info_atc_btn product-info_buy_now_btn" role="buyNow" type="button" data-track="click" data-track-content="checkout" data-track-source="buy_now">
        <span role="content">Buy now</span>
        <div class="loading items-center justify-center absolute inset-0 flex" role="loading" show="">
          <div class="loading-bounce"></div>
        </div>
      </button>
      <div class="product-info__out_stock mt-2 text-center text-sm leading-1.3 opacity-70 lg:mt-3 hidden"> Product was out of stock. </div>
      <div class="product-info__unavailable mt-2 text-center text-sm leading-1.3 opacity-70 lg:mt-3 hidden"> Product is unavailable. </div>
    </div>
    <spz-render layout="container" id="product-detail-featured" manual="" class="i-spzhtml-layout-container i-spzhtml-element i-spzhtml-built i-spzhtml-layout" i-spzhtml-layout="container" style="height: 18px;">
      <template> ${function(){ const variantData = data.variant ||
        {"id":"4e316841-574e-494d-b142-695f6182d6c8","product_id":"78e576c1-249c-4b89-bffb-c02375747c5c","title":"Blue","weight_unit":"kg","inventory_quantity":-570,"sku":"sku2097625714777","barcode":"","position":1,"option1":"Blue","option2":"","option3":"","note":"","image":{"src":"\/\/img.fantaskycdn.com\/8dacb98ea213d8adf5631151c6e3f33d.jpeg","path":"8dacb98ea213d8adf5631151c6e3f33d.jpeg","width":1200,"height":1200,"alt":"","aspect_ratio":1},"wholesale_price":[{"price":39.99,"min_quantity":1}],"weight":"0","compare_at_price":"0","price":"39.99","retail_price":"0","available":true,"url":"\/products\/3-ton?variant=4e316841-574e-494d-b142-695f6182d6c8","available_quantity":999999999,"options":[{"name":"COLOR","value":"Blue"}],"off_ratio":0,"flashsale_info":[],"sales":293};
        return ` <div class="mt-5 body-minus-2">
          <div spz-if="${!!(variantData &amp;&amp; variantData.sku)}" class="product-detail-featured-item"> Sku : <span>${variantData &amp;&amp; variantData.sku}</span>
          </div>
          <div spz-if="${variantData &amp;&amp; +variantData.weight > 0}" class="product-detail-featured-item"> Weight : <span>${variantData &amp;&amp; variantData.weight}${variantData &amp;&amp; variantData.weight_unit}</span>
          </div>
          <div spz-if="${!!(variantData &amp;&amp; variantData.barcode)}" class="product-detail-featured-item"> Barcode : <span>${variantData &amp;&amp; variantData.barcode}</span>
          </div>
        </div> ` }()} </template>
      <div class="mt-5 body-minus-2">
        <div class="product-detail-featured-item" spz-if="true"> Sku : <span>sku2097625714777</span>
        </div>
      </div>
    </spz-render>
    <spz-render id="product-info-current-inventory-render" layout="container" class="i-spzhtml-layout-container i-spzhtml-element i-spzhtml-built i-spzhtml-layout" i-spzhtml-layout="container" data-empty="" finish="">
      <template> ${function() { const minInventory = parseInt('10'); const maxInventory = parseInt('50'); const randomInventory = Math.round(Math.random() * (maxInventory - minInventory)) + minInventory; const customText = "Only {stock} item(s) left
        in stock!".replace(/\{stock\}/g, '<b class="color-body">' + randomInventory + '</b>'); const barWidth = (randomInventory / maxInventory) * 100 + '%'; return ` <div class="product-info__current-inventory mt-7 lg:mt-8">
          <div class="product-info-inventory-text break-all body-plus-2 leading-1.2">${customText}</div>
          <div class="product-info-inventory-progress relative rounded-[1px] overflow-hidden">
            <div class="product-info-inventory-progress-bar absolute top-0 left-0 h-full w-0" style="width: ${barWidth}"></div>
          </div>
        </div> `; }()} </template>
      <div class="product-info__current-inventory mt-7 lg:mt-8">
        <div class="product-info-inventory-text break-all body-plus-2 leading-1.2">Only <b class="color-body">38</b> item(s) left in stock!</div>
        <div class="product-info-inventory-progress relative rounded-[1px] overflow-hidden">
          <div class="product-info-inventory-progress-bar absolute top-0 left-0 h-full w-0" style="width: 76%"></div>
        </div>
      </div>
    </spz-render>
    <div class="product-info__current-viewer flex items-center mt-6 lg:mt-8">
      <svg class="flex-shrink-0" width="24" height="24" xmlns="http://www.w3.org/2000/svg">
        <path fill-rule="evenodd" clip-rule="evenodd"
          d="M12.052 6.4h-.002c-4.31 0-7.95 2.395-9.107 5.675a.377.377 0 0 0 0 .25C4.1 15.605 7.739 18 12.05 18c4.337 0 7.996-2.425 9.128-5.737a.194.194 0 0 0 0-.126c-1.132-3.311-4.79-5.736-9.126-5.737zm-8.026 5.947a.372.372 0 0 1 0-.293c.782-1.831 2.517-3.366 4.782-4.13a4.218 4.218 0 1 0 6.494.004c2.26.765 3.99 2.298 4.772 4.126.04.093.04.199 0 .293-1.125 2.631-4.22 4.651-8.024 4.651-3.806 0-6.9-2.02-8.024-4.652zm7.918-4.945a1.582 1.582 0 1 1-3.052.493 10.126 10.126 0 0 1 3.052-.493z"
          fill="currentColor"></path>
      </svg>
      <span class="current__viewer-text ml-2 break-all body-plus-2">
        <spz-rng class="inline-block i-spzhtml-layout-container i-spzhtml-element i-spzhtml-built i-spzhtml-layout" layout="container" max="100" min="20" change-range="6" interval-seconds="3" i-spzhtml-layout="container"><span>87</span></spz-rng>
        people are viewing this right now</span>
    </div>
    <style id="app-parakeet-style">
      #app-parakeet *,
      #app-parakeet :after,
      #app-parakeet :before,
      .plugin-parakeet *,
      .plugin-parakeet :after,
      .plugin-parakeet :before {
        border: 0 solid #e5e7eb;
        box-sizing: border-box
      }

      #app-parakeet :after,
      #app-parakeet :before,
      .plugin-parakeet :after,
      .plugin-parakeet :before {
        --tw-content: ""
      }

      #app-parakeet html,
      .plugin-parakeet html {
        -webkit-text-size-adjust: 100%;
        font-family: ui-sans-serif, system-ui, -apple-system, Segoe UI, Roboto, Ubuntu, Cantarell, Noto Sans, sans-serif, BlinkMacSystemFont, Helvetica Neue, Arial, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol, Noto Color Emoji;
        line-height: 1.5;
        tab-size: 4
      }

      #app-parakeet body,
      .plugin-parakeet body {
        line-height: inherit;
        margin: 0
      }

      #app-parakeet hr,
      .plugin-parakeet hr {
        border-top-width: 1px;
        color: inherit;
        height: 0
      }

      #app-parakeet abbr:where([title]),
      .plugin-parakeet abbr:where([title]) {
        -webkit-text-decoration: underline dotted;
        text-decoration: underline dotted
      }

      #app-parakeet h1,
      #app-parakeet h2,
      #app-parakeet h3,
      #app-parakeet h4,
      #app-parakeet h5,
      #app-parakeet h6,
      .plugin-parakeet h1,
      .plugin-parakeet h2,
      .plugin-parakeet h3,
      .plugin-parakeet h4,
      .plugin-parakeet h5,
      .plugin-parakeet h6 {
        font-size: inherit;
        font-weight: inherit
      }

      #app-parakeet a,
      .plugin-parakeet a {
        color: inherit;
        text-decoration: inherit
      }

      #app-parakeet b,
      #app-parakeet strong,
      .plugin-parakeet b,
      .plugin-parakeet strong {
        font-weight: bolder
      }

      #app-parakeet code,
      #app-parakeet kbd,
      #app-parakeet pre,
      #app-parakeet samp,
      .plugin-parakeet code,
      .plugin-parakeet kbd,
      .plugin-parakeet pre,
      .plugin-parakeet samp {
        font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, Liberation Mono, Courier New, monospace;
        font-size: 1em
      }

      #app-parakeet small,
      .plugin-parakeet small {
        font-size: 80%
      }

      #app-parakeet sub,
      #app-parakeet sup,
      .plugin-parakeet sub,
      .plugin-parakeet sup {
        font-size: 75%;
        line-height: 0;
        position: relative;
        vertical-align: initial
      }

      #app-parakeet sub,
      .plugin-parakeet sub {
        bottom: -.25em
      }

      #app-parakeet sup,
      .plugin-parakeet sup {
        top: -.5em
      }

      #app-parakeet table,
      .plugin-parakeet table {
        border-collapse: collapse;
        border-color: inherit;
        text-indent: 0
      }

      #app-parakeet button,
      #app-parakeet input,
      #app-parakeet optgroup,
      #app-parakeet select,
      #app-parakeet textarea,
      .plugin-parakeet button,
      .plugin-parakeet input,
      .plugin-parakeet optgroup,
      .plugin-parakeet select,
      .plugin-parakeet textarea {
        color: inherit;
        font-family: inherit;
        font-size: 100%;
        font-weight: inherit;
        line-height: inherit;
        margin: 0;
        padding: 0
      }

      #app-parakeet button,
      #app-parakeet select,
      .plugin-parakeet button,
      .plugin-parakeet select {
        text-transform: none
      }

      #app-parakeet [type=button],
      #app-parakeet [type=reset],
      #app-parakeet [type=submit],
      #app-parakeet button,
      .plugin-parakeet [type=button],
      .plugin-parakeet [type=reset],
      .plugin-parakeet [type=submit],
      .plugin-parakeet button {
        -webkit-appearance: button;
        background-color: initial;
        background-image: none
      }

      #app-parakeet :-moz-focusring,
      .plugin-parakeet :-moz-focusring {
        outline: auto
      }

      #app-parakeet :-moz-ui-invalid,
      .plugin-parakeet :-moz-ui-invalid {
        box-shadow: none
      }

      #app-parakeet progress,
      .plugin-parakeet progress {
        vertical-align: initial
      }

      #app-parakeet ::-webkit-inner-spin-button,
      #app-parakeet ::-webkit-outer-spin-button,
      .plugin-parakeet ::-webkit-inner-spin-button,
      .plugin-parakeet ::-webkit-outer-spin-button {
        height: auto
      }

      #app-parakeet [type=search],
      .plugin-parakeet [type=search] {
        -webkit-appearance: textfield;
        outline-offset: -2px
      }

      #app-parakeet ::-webkit-search-decoration,
      .plugin-parakeet ::-webkit-search-decoration {
        -webkit-appearance: none
      }

      #app-parakeet ::-webkit-file-upload-button,
      .plugin-parakeet ::-webkit-file-upload-button {
        -webkit-appearance: button;
        font: inherit
      }

      #app-parakeet summary,
      .plugin-parakeet summary {
        display: list-item
      }

      #app-parakeet blockquote,
      #app-parakeet dd,
      #app-parakeet dl,
      #app-parakeet figure,
      #app-parakeet h1,
      #app-parakeet h2,
      #app-parakeet h3,
      #app-parakeet h4,
      #app-parakeet h5,
      #app-parakeet h6,
      #app-parakeet hr,
      #app-parakeet p,
      #app-parakeet pre,
      .plugin-parakeet blockquote,
      .plugin-parakeet dd,
      .plugin-parakeet dl,
      .plugin-parakeet figure,
      .plugin-parakeet h1,
      .plugin-parakeet h2,
      .plugin-parakeet h3,
      .plugin-parakeet h4,
      .plugin-parakeet h5,
      .plugin-parakeet h6,
      .plugin-parakeet hr,
      .plugin-parakeet p,
      .plugin-parakeet pre {
        margin: 0
      }

      #app-parakeet fieldset,
      .plugin-parakeet fieldset {
        margin: 0;
        padding: 0
      }

      #app-parakeet legend,
      .plugin-parakeet legend {
        padding: 0
      }

      #app-parakeet menu,
      #app-parakeet ol,
      #app-parakeet ul,
      .plugin-parakeet menu,
      .plugin-parakeet ol,
      .plugin-parakeet ul {
        list-style: none;
        margin: 0;
        padding: 0
      }

      #app-parakeet textarea,
      .plugin-parakeet textarea {
        resize: vertical
      }

      #app-parakeet input::-webkit-input-placeholder,
      #app-parakeet textarea::-webkit-input-placeholder,
      .plugin-parakeet input::-webkit-input-placeholder,
      .plugin-parakeet textarea::-webkit-input-placeholder {
        color: #9ca3af;
        opacity: 1
      }

      #app-parakeet input::placeholder,
      #app-parakeet textarea::placeholder,
      .plugin-parakeet input::placeholder,
      .plugin-parakeet textarea::placeholder {
        color: #9ca3af;
        opacity: 1
      }

      #app-parakeet [role=button],
      #app-parakeet button,
      .plugin-parakeet [role=button],
      .plugin-parakeet button {
        cursor: pointer
      }

      #app-parakeet :disabled,
      .plugin-parakeet :disabled {
        cursor: default
      }

      #app-parakeet audio,
      #app-parakeet canvas,
      #app-parakeet embed,
      #app-parakeet iframe,
      #app-parakeet img,
      #app-parakeet object,
      #app-parakeet svg,
      #app-parakeet video,
      .plugin-parakeet audio,
      .plugin-parakeet canvas,
      .plugin-parakeet embed,
      .plugin-parakeet iframe,
      .plugin-parakeet img,
      .plugin-parakeet object,
      .plugin-parakeet svg,
      .plugin-parakeet video {
        display: block;
        vertical-align: middle
      }

      #app-parakeet img,
      #app-parakeet video,
      .plugin-parakeet img,
      .plugin-parakeet video {
        height: auto;
        max-width: 100%
      }

      #app-parakeet *,
      #app-parakeet :after,
      #app-parakeet :before,
      .plugin-parakeet *,
      .plugin-parakeet :after,
      .plugin-parakeet :before {
        --tw-border-spacing-x: 0;
        --tw-border-spacing-y: 0;
        --tw-translate-x: 0;
        --tw-translate-y: 0;
        --tw-rotate: 0;
        --tw-skew-x: 0;
        --tw-skew-y: 0;
        --tw-scale-x: 1;
        --tw-scale-y: 1;
        --tw-pan-x: ;
        --tw-pan-y: ;
        --tw-pinch-zoom: ;
        --tw-scroll-snap-strictness: proximity;
        --tw-ordinal: ;
        --tw-slashed-zero: ;
        --tw-numeric-figure: ;
        --tw-numeric-spacing: ;
        --tw-numeric-fraction: ;
        --tw-ring-inset: ;
        --tw-ring-offset-width: 0px;
        --tw-ring-offset-color: #fff;
        --tw-ring-color: rgba(59, 130, 246, .5);
        --tw-ring-offset-shadow: 0 0 transparent;
        --tw-ring-shadow: 0 0 transparent;
        --tw-shadow: 0 0 transparent;
        --tw-shadow-colored: 0 0 transparent;
        --tw-blur: ;
        --tw-brightness: ;
        --tw-contrast: ;
        --tw-grayscale: ;
        --tw-hue-rotate: ;
        --tw-invert: ;
        --tw-saturate: ;
        --tw-sepia: ;
        --tw-drop-shadow: ;
        --tw-backdrop-blur: ;
        --tw-backdrop-brightness: ;
        --tw-backdrop-contrast: ;
        --tw-backdrop-grayscale: ;
        --tw-backdrop-hue-rotate: ;
        --tw-backdrop-invert: ;
        --tw-backdrop-opacity: ;
        --tw-backdrop-saturate: ;
        --tw-backdrop-sepia:
      }

      #app-parakeet ::-webkit-backdrop,
      .plugin-parakeet ::-webkit-backdrop {
        --tw-border-spacing-x: 0;
        --tw-border-spacing-y: 0;
        --tw-translate-x: 0;
        --tw-translate-y: 0;
        --tw-rotate: 0;
        --tw-skew-x: 0;
        --tw-skew-y: 0;
        --tw-scale-x: 1;
        --tw-scale-y: 1;
        --tw-pan-x: ;
        --tw-pan-y: ;
        --tw-pinch-zoom: ;
        --tw-scroll-snap-strictness: proximity;
        --tw-ordinal: ;
        --tw-slashed-zero: ;
        --tw-numeric-figure: ;
        --tw-numeric-spacing: ;
        --tw-numeric-fraction: ;
        --tw-ring-inset: ;
        --tw-ring-offset-width: 0px;
        --tw-ring-offset-color: #fff;
        --tw-ring-color: rgba(59, 130, 246, .5);
        --tw-ring-offset-shadow: 0 0 transparent;
        --tw-ring-shadow: 0 0 transparent;
        --tw-shadow: 0 0 transparent;
        --tw-shadow-colored: 0 0 transparent;
        --tw-blur: ;
        --tw-brightness: ;
        --tw-contrast: ;
        --tw-grayscale: ;
        --tw-hue-rotate: ;
        --tw-invert: ;
        --tw-saturate: ;
        --tw-sepia: ;
        --tw-drop-shadow: ;
        --tw-backdrop-blur: ;
        --tw-backdrop-brightness: ;
        --tw-backdrop-contrast: ;
        --tw-backdrop-grayscale: ;
        --tw-backdrop-hue-rotate: ;
        --tw-backdrop-invert: ;
        --tw-backdrop-opacity: ;
        --tw-backdrop-saturate: ;
        --tw-backdrop-sepia:
      }

      #app-parakeet ::backdrop,
      .plugin-parakeet ::backdrop {
        --tw-border-spacing-x: 0;
        --tw-border-spacing-y: 0;
        --tw-translate-x: 0;
        --tw-translate-y: 0;
        --tw-rotate: 0;
        --tw-skew-x: 0;
        --tw-skew-y: 0;
        --tw-scale-x: 1;
        --tw-scale-y: 1;
        --tw-pan-x: ;
        --tw-pan-y: ;
        --tw-pinch-zoom: ;
        --tw-scroll-snap-strictness: proximity;
        --tw-ordinal: ;
        --tw-slashed-zero: ;
        --tw-numeric-figure: ;
        --tw-numeric-spacing: ;
        --tw-numeric-fraction: ;
        --tw-ring-inset: ;
        --tw-ring-offset-width: 0px;
        --tw-ring-offset-color: #fff;
        --tw-ring-color: rgba(59, 130, 246, .5);
        --tw-ring-offset-shadow: 0 0 transparent;
        --tw-ring-shadow: 0 0 transparent;
        --tw-shadow: 0 0 transparent;
        --tw-shadow-colored: 0 0 transparent;
        --tw-blur: ;
        --tw-brightness: ;
        --tw-contrast: ;
        --tw-grayscale: ;
        --tw-hue-rotate: ;
        --tw-invert: ;
        --tw-saturate: ;
        --tw-sepia: ;
        --tw-drop-shadow: ;
        --tw-backdrop-blur: ;
        --tw-backdrop-brightness: ;
        --tw-backdrop-contrast: ;
        --tw-backdrop-grayscale: ;
        --tw-backdrop-hue-rotate: ;
        --tw-backdrop-invert: ;
        --tw-backdrop-opacity: ;
        --tw-backdrop-saturate: ;
        --tw-backdrop-sepia:
      }

      #app-parakeet .pk-pointer-events-none,
      .plugin-parakeet .pk-pointer-events-none {
        pointer-events: none
      }

      #app-parakeet .pk-absolute,
      .plugin-parakeet .pk-absolute {
        position: absolute
      }

      #app-parakeet .pk-relative,
      .plugin-parakeet .pk-relative {
        position: relative
      }

      #app-parakeet .pk-top-0,
      .plugin-parakeet .pk-top-0 {
        top: 0
      }

      #app-parakeet .pk-left-0,
      .plugin-parakeet .pk-left-0 {
        left: 0
      }

      #app-parakeet .pk--top-3,
      .plugin-parakeet .pk--top-3 {
        top: -.75rem
      }

      #app-parakeet .pk--right-3,
      .plugin-parakeet .pk--right-3 {
        right: -.75rem
      }

      #app-parakeet .pk-z-\[9999\],
      .plugin-parakeet .pk-z-\[9999\] {
        z-index: 9999
      }

      #app-parakeet .pk-my-6,
      .plugin-parakeet .pk-my-6 {
        margin-bottom: 1.5rem;
        margin-top: 1.5rem
      }

      #app-parakeet .pk-mx-1,
      .plugin-parakeet .pk-mx-1 {
        margin-left: .25rem;
        margin-right: .25rem
      }

      #app-parakeet .pk--mx-4,
      .plugin-parakeet .pk--mx-4 {
        margin-left: -1rem;
        margin-right: -1rem
      }

      #app-parakeet .pk-my-0,
      .plugin-parakeet .pk-my-0 {
        margin-bottom: 0;
        margin-top: 0
      }

      #app-parakeet .pk-mb-4,
      .plugin-parakeet .pk-mb-4 {
        margin-bottom: 1rem
      }

      #app-parakeet .pk-mr-2\.5,
      .plugin-parakeet .pk-mr-2\.5 {
        margin-right: .625rem
      }

      #app-parakeet .pk-mr-2,
      .plugin-parakeet .pk-mr-2 {
        margin-right: .5rem
      }

      #app-parakeet .pk-ml-1\.5,
      .plugin-parakeet .pk-ml-1\.5 {
        margin-left: .375rem
      }

      #app-parakeet .pk-ml-1,
      .plugin-parakeet .pk-ml-1 {
        margin-left: .25rem
      }

      #app-parakeet .pk-mb-3,
      .plugin-parakeet .pk-mb-3 {
        margin-bottom: .75rem
      }

      #app-parakeet .pk-mb-2\.5,
      .plugin-parakeet .pk-mb-2\.5 {
        margin-bottom: .625rem
      }

      #app-parakeet .pk-mb-2,
      .plugin-parakeet .pk-mb-2 {
        margin-bottom: .5rem
      }

      #app-parakeet .pk-mt-2,
      .plugin-parakeet .pk-mt-2 {
        margin-top: .5rem
      }

      #app-parakeet .\!pk-mt-7,
      .plugin-parakeet .\!pk-mt-7 {
        margin-top: 1.75rem !important
      }

      #app-parakeet .pk-ml-2,
      .plugin-parakeet .pk-ml-2 {
        margin-left: .5rem
      }

      #app-parakeet .pk--mt-0\.5,
      .plugin-parakeet .pk--mt-0\.5 {
        margin-top: -.125rem
      }

      #app-parakeet .pk--mb-1\.5,
      .plugin-parakeet .pk--mb-1\.5 {
        margin-bottom: -.375rem
      }

      #app-parakeet .pk--mt-0,
      .plugin-parakeet .pk--mt-0 {
        margin-top: 0
      }

      #app-parakeet .pk--mb-1,
      .plugin-parakeet .pk--mb-1 {
        margin-bottom: -.25rem
      }

      #app-parakeet .\!pk-mb-0,
      .plugin-parakeet .\!pk-mb-0 {
        margin-bottom: 0 !important
      }

      #app-parakeet .pk-ml-3,
      .plugin-parakeet .pk-ml-3 {
        margin-left: .75rem
      }

      #app-parakeet .pk-ml-auto,
      .plugin-parakeet .pk-ml-auto {
        margin-left: auto
      }

      #app-parakeet .pk-mr-4,
      .plugin-parakeet .pk-mr-4 {
        margin-right: 1rem
      }

      #app-parakeet .pk--mt-1\.5,
      .plugin-parakeet .pk--mt-1\.5 {
        margin-top: -.375rem
      }

      #app-parakeet .pk--ml-2,
      .plugin-parakeet .pk--ml-2 {
        margin-left: -.5rem
      }

      #app-parakeet .pk--mt-1,
      .plugin-parakeet .pk--mt-1 {
        margin-top: -.25rem
      }

      #app-parakeet .pk-mt-3,
      .plugin-parakeet .pk-mt-3 {
        margin-top: .75rem
      }

      #app-parakeet .pk-block,
      .plugin-parakeet .pk-block {
        display: block
      }

      #app-parakeet .pk-inline-block,
      .plugin-parakeet .pk-inline-block {
        display: inline-block
      }

      #app-parakeet .pk-flex,
      .plugin-parakeet .pk-flex {
        display: flex
      }

      #app-parakeet .pk-grid,
      .plugin-parakeet .pk-grid {
        display: grid
      }

      #app-parakeet .pk-h-4\.5,
      .plugin-parakeet .pk-h-4\.5 {
        height: 1.125rem
      }

      #app-parakeet .pk-h-4,
      .plugin-parakeet .pk-h-4 {
        height: 1rem
      }

      #app-parakeet .pk-h-11\.5,
      .plugin-parakeet .pk-h-11\.5 {
        height: 2.875rem
      }

      #app-parakeet .pk-h-11,
      .plugin-parakeet .pk-h-11 {
        height: 2.75rem
      }

      #app-parakeet .pk-h-full,
      .plugin-parakeet .pk-h-full {
        height: 100%
      }

      #app-parakeet .pk-h-18,
      .plugin-parakeet .pk-h-18 {
        height: 4.5rem
      }

      #app-parakeet .pk-h-23,
      .plugin-parakeet .pk-h-23 {
        height: 5.75rem
      }

      #app-parakeet .pk-h-20,
      .plugin-parakeet .pk-h-20 {
        height: 5rem
      }

      #app-parakeet .pk-w-4\.5,
      .plugin-parakeet .pk-w-4\.5 {
        width: 1.125rem
      }

      #app-parakeet .pk-w-4,
      .plugin-parakeet .pk-w-4 {
        width: 1rem
      }

      #app-parakeet .pk-w-full,
      .plugin-parakeet .pk-w-full {
        width: 100%
      }

      #app-parakeet .pk-w-11,
      .plugin-parakeet .pk-w-11 {
        width: 2.75rem
      }

      #app-parakeet .pk-w-18,
      .plugin-parakeet .pk-w-18 {
        width: 4.5rem
      }

      #app-parakeet .pk-w-23,
      .plugin-parakeet .pk-w-23 {
        width: 5.75rem
      }

      #app-parakeet .pk-w-20,
      .plugin-parakeet .pk-w-20 {
        width: 5rem
      }

      #app-parakeet .pk-w-fit,
      .plugin-parakeet .pk-w-fit {
        width: -webkit-fit-content;
        width: fit-content
      }

      #app-parakeet .pk-min-w-\[46px\],
      .plugin-parakeet .pk-min-w-\[46px\] {
        min-width: 46px
      }

      #app-parakeet .pk-min-w-0,
      .plugin-parakeet .pk-min-w-0 {
        min-width: 0
      }

      #app-parakeet .pk-max-w-\[50vw\],
      .plugin-parakeet .pk-max-w-\[50vw\] {
        max-width: 50vw
      }

      #app-parakeet .pk-flex-none,
      .plugin-parakeet .pk-flex-none {
        flex: none
      }

      #app-parakeet .pk-flex-1,
      .plugin-parakeet .pk-flex-1 {
        flex: 1 1 0%
      }

      #app-parakeet .pk-cursor-pointer,
      .plugin-parakeet .pk-cursor-pointer {
        cursor: pointer
      }

      #app-parakeet .pk-cursor-text,
      .plugin-parakeet .pk-cursor-text {
        cursor: text
      }

      #app-parakeet .pk-select-none,
      .plugin-parakeet .pk-select-none {
        -webkit-user-select: none;
        user-select: none
      }

      #app-parakeet .pk-appearance-none,
      .plugin-parakeet .pk-appearance-none {
        -webkit-appearance: none;
        appearance: none
      }

      #app-parakeet .pk-grid-flow-col,
      .plugin-parakeet .pk-grid-flow-col {
        grid-auto-flow: column
      }

      #app-parakeet .pk-grid-rows-\[auto\,auto\,auto\,auto\],
      .plugin-parakeet .pk-grid-rows-\[auto\,auto\,auto\,auto\] {
        grid-template-rows: auto auto auto auto
      }

      #app-parakeet .pk-flex-col,
      .plugin-parakeet .pk-flex-col {
        flex-direction: column
      }

      #app-parakeet .pk-flex-wrap,
      .plugin-parakeet .pk-flex-wrap {
        flex-wrap: wrap
      }

      #app-parakeet .pk-items-center,
      .plugin-parakeet .pk-items-center {
        align-items: center
      }

      #app-parakeet .pk-justify-center,
      .plugin-parakeet .pk-justify-center {
        justify-content: center
      }

      #app-parakeet .pk-gap-4,
      .plugin-parakeet .pk-gap-4 {
        gap: 1rem
      }

      #app-parakeet .pk-gap-x-3,
      .plugin-parakeet .pk-gap-x-3 {
        column-gap: .75rem
      }

      #app-parakeet .pk-gap-y-4,
      .plugin-parakeet .pk-gap-y-4 {
        row-gap: 1rem
      }

      #app-parakeet .pk-space-y-4>:not([hidden])~:not([hidden]),
      .plugin-parakeet .pk-space-y-4>:not([hidden])~:not([hidden]) {
        --tw-space-y-reverse: 0;
        margin-bottom: calc(1rem*var(--tw-space-y-reverse));
        margin-top: calc(1rem*(1 - var(--tw-space-y-reverse)))
      }

      #app-parakeet .pk-space-y-5>:not([hidden])~:not([hidden]),
      .plugin-parakeet .pk-space-y-5>:not([hidden])~:not([hidden]) {
        --tw-space-y-reverse: 0;
        margin-bottom: calc(1.25rem*var(--tw-space-y-reverse));
        margin-top: calc(1.25rem*(1 - var(--tw-space-y-reverse)))
      }

      #app-parakeet .pk-self-center,
      .plugin-parakeet .pk-self-center {
        align-self: center
      }

      #app-parakeet .pk-overflow-hidden,
      .plugin-parakeet .pk-overflow-hidden {
        overflow: hidden
      }

      #app-parakeet .pk-truncate,
      .plugin-parakeet .pk-truncate {
        overflow: hidden;
        text-overflow: ellipsis;
        white-space: nowrap
      }

      #app-parakeet .pk-break-words,
      .plugin-parakeet .pk-break-words {
        overflow-wrap: break-word
      }

      #app-parakeet .pk-break-all,
      .plugin-parakeet .pk-break-all {
        word-break: break-all
      }

      #app-parakeet .pk-rounded-full,
      .plugin-parakeet .pk-rounded-full {
        border-radius: 9999px
      }

      #app-parakeet .pk-rounded-md,
      .plugin-parakeet .pk-rounded-md {
        border-radius: .375rem
      }

      #app-parakeet .pk-rounded,
      .plugin-parakeet .pk-rounded {
        border-radius: .25rem
      }

      #app-parakeet .pk-rounded-\[3px\],
      .plugin-parakeet .pk-rounded-\[3px\] {
        border-radius: 3px
      }

      #app-parakeet .pk-border-\[5px\],
      .plugin-parakeet .pk-border-\[5px\] {
        border-width: 5px
      }

      #app-parakeet .pk-border-2,
      .plugin-parakeet .pk-border-2 {
        border-width: 2px
      }

      #app-parakeet .pk-border,
      .plugin-parakeet .pk-border {
        border-width: 1px
      }

      #app-parakeet .pk-border-0,
      .plugin-parakeet .pk-border-0 {
        border-width: 0
      }

      #app-parakeet .pk-border-solid,
      .plugin-parakeet .pk-border-solid {
        border-style: solid
      }

      #app-parakeet .pk-border-dashed,
      .plugin-parakeet .pk-border-dashed {
        border-style: dashed
      }

      #app-parakeet .pk-border-transparent,
      .plugin-parakeet .pk-border-transparent {
        border-color: transparent
      }

      #app-parakeet .pk-border-\[\#333\],
      .plugin-parakeet .pk-border-\[\#333\] {
        --tw-border-opacity: 1;
        border-color: rgba(51, 51, 51, var(--tw-border-opacity))
      }

      #app-parakeet .pk-border-\[\#D1D1D1\],
      .plugin-parakeet .pk-border-\[\#D1D1D1\] {
        --tw-border-opacity: 1;
        border-color: rgba(209, 209, 209, var(--tw-border-opacity))
      }

      #app-parakeet .pk-border-\[\#DB393A\],
      .plugin-parakeet .pk-border-\[\#DB393A\] {
        --tw-border-opacity: 1;
        border-color: rgba(219, 57, 58, var(--tw-border-opacity))
      }

      #app-parakeet .pk-border-\[\#d9d9d9\],
      .plugin-parakeet .pk-border-\[\#d9d9d9\] {
        --tw-border-opacity: 1;
        border-color: rgba(217, 217, 217, var(--tw-border-opacity))
      }

      #app-parakeet .pk-border-t-white,
      .plugin-parakeet .pk-border-t-white {
        --tw-border-opacity: 1;
        border-top-color: rgba(255, 255, 255, var(--tw-border-opacity))
      }

      #app-parakeet .pk-bg-\[\#E6E6E6\]\/40,
      .plugin-parakeet .pk-bg-\[\#E6E6E6\]\/40 {
        background-color: hsla(0, 0%, 90%, .4)
      }

      #app-parakeet .pk-bg-white,
      .plugin-parakeet .pk-bg-white {
        --tw-bg-opacity: 1;
        background-color: rgba(255, 255, 255, var(--tw-bg-opacity))
      }

      #app-parakeet .pk-bg-transparent,
      .plugin-parakeet .pk-bg-transparent {
        background-color: initial
      }

      #app-parakeet .pk-bg-\[\#fdfdfd\],
      .plugin-parakeet .pk-bg-\[\#fdfdfd\] {
        --tw-bg-opacity: 1;
        background-color: rgba(253, 253, 253, var(--tw-bg-opacity))
      }

      #app-parakeet .pk-bg-\[\#F6F6F7\],
      .plugin-parakeet .pk-bg-\[\#F6F6F7\] {
        --tw-bg-opacity: 1;
        background-color: rgba(246, 246, 247, var(--tw-bg-opacity))
      }

      #app-parakeet .pk-object-contain,
      .plugin-parakeet .pk-object-contain {
        object-fit: contain
      }

      #app-parakeet .pk-object-cover,
      .plugin-parakeet .pk-object-cover {
        object-fit: cover
      }

      #app-parakeet .pk-object-center,
      .plugin-parakeet .pk-object-center {
        object-position: center
      }

      #app-parakeet .pk-py-2,
      .plugin-parakeet .pk-py-2 {
        padding-bottom: .5rem;
        padding-top: .5rem
      }

      #app-parakeet .pk-px-3,
      .plugin-parakeet .pk-px-3 {
        padding-left: .75rem;
        padding-right: .75rem
      }

      #app-parakeet .pk-px-5,
      .plugin-parakeet .pk-px-5 {
        padding-left: 1.25rem;
        padding-right: 1.25rem
      }

      #app-parakeet .pk-px-4,
      .plugin-parakeet .pk-px-4 {
        padding-left: 1rem;
        padding-right: 1rem
      }

      #app-parakeet .pk-py-1\.5,
      .plugin-parakeet .pk-py-1\.5 {
        padding-bottom: .375rem;
        padding-top: .375rem
      }

      #app-parakeet .pk-py-1,
      .plugin-parakeet .pk-py-1 {
        padding-bottom: .25rem;
        padding-top: .25rem
      }

      #app-parakeet .pk-py-3\.5,
      .plugin-parakeet .pk-py-3\.5 {
        padding-bottom: .875rem;
        padding-top: .875rem
      }

      #app-parakeet .pk-py-3,
      .plugin-parakeet .pk-py-3 {
        padding-bottom: .75rem;
        padding-top: .75rem
      }

      #app-parakeet .pk-pt-2,
      .plugin-parakeet .pk-pt-2 {
        padding-top: .5rem
      }

      #app-parakeet .pk-pb-1,
      .plugin-parakeet .pk-pb-1 {
        padding-bottom: .25rem
      }

      #app-parakeet .pk-pl-4,
      .plugin-parakeet .pk-pl-4 {
        padding-left: 1rem
      }

      #app-parakeet .pk-pr-10\.5,
      .plugin-parakeet .pk-pr-10\.5 {
        padding-right: 2.625rem
      }

      #app-parakeet .pk-pr-10,
      .plugin-parakeet .pk-pr-10 {
        padding-right: 2.5rem
      }

      #app-parakeet .\!pk-text-\[13px\],
      .plugin-parakeet .\!pk-text-\[13px\] {
        font-size: 13px !important
      }

      #app-parakeet .\!pk-text-\[14px\],
      .plugin-parakeet .\!pk-text-\[14px\] {
        font-size: 14px !important
      }

      #app-parakeet .\!pk-text-\[15px\],
      .plugin-parakeet .\!pk-text-\[15px\] {
        font-size: 15px !important
      }

      #app-parakeet .pk-text-\[14px\],
      .plugin-parakeet .pk-text-\[14px\] {
        font-size: 14px
      }

      #app-parakeet .pk-text-sm,
      .plugin-parakeet .pk-text-sm {
        font-size: .875rem;
        line-height: 1.25rem
      }

      #app-parakeet .pk-text-xs,
      .plugin-parakeet .pk-text-xs {
        font-size: .75rem;
        line-height: 1rem
      }

      #app-parakeet .pk-text-\[15px\],
      .plugin-parakeet .pk-text-\[15px\] {
        font-size: 15px
      }

      #app-parakeet .\!pk-text-\[16px\],
      .plugin-parakeet .\!pk-text-\[16px\] {
        font-size: 16px !important
      }

      #app-parakeet .pk-font-semibold,
      .plugin-parakeet .pk-font-semibold {
        font-weight: 600
      }

      #app-parakeet .pk-font-medium,
      .plugin-parakeet .pk-font-medium {
        font-weight: 500
      }

      #app-parakeet .pk-leading-none,
      .plugin-parakeet .pk-leading-none {
        line-height: 1
      }

      #app-parakeet .pk-leading-5,
      .plugin-parakeet .pk-leading-5 {
        line-height: 1.25rem
      }

      #app-parakeet .pk-leading-\[0px\],
      .plugin-parakeet .pk-leading-\[0px\] {
        line-height: 0px
      }

      #app-parakeet .pk-text-\[\#DB393A\],
      .plugin-parakeet .pk-text-\[\#DB393A\] {
        --tw-text-opacity: 1;
        color: rgba(219, 57, 58, var(--tw-text-opacity))
      }

      #app-parakeet .pk-text-\[\#7A7A7A\],
      .plugin-parakeet .pk-text-\[\#7A7A7A\] {
        --tw-text-opacity: 1;
        color: rgba(122, 122, 122, var(--tw-text-opacity))
      }

      #app-parakeet .pk-text-\[\#d2d5d8\],
      .plugin-parakeet .pk-text-\[\#d2d5d8\] {
        --tw-text-opacity: 1;
        color: rgba(210, 213, 216, var(--tw-text-opacity))
      }

      #app-parakeet .pk-text-\[\#93989D\],
      .plugin-parakeet .pk-text-\[\#93989D\] {
        --tw-text-opacity: 1;
        color: rgba(147, 152, 157, var(--tw-text-opacity))
      }

      #app-parakeet .pk-text-\[\#292929\]\/75,
      .plugin-parakeet .pk-text-\[\#292929\]\/75 {
        color: rgba(41, 41, 41, .75)
      }

      #app-parakeet .pk-text-opacity-80,
      .plugin-parakeet .pk-text-opacity-80 {
        --tw-text-opacity: 0.8
      }

      #app-parakeet .pk-opacity-0,
      .plugin-parakeet .pk-opacity-0 {
        opacity: 0
      }

      #app-parakeet .pk-shadow-\[0px_4px_18px_rgb\(0_0_0_\/_10\%\)\],
      .plugin-parakeet .pk-shadow-\[0px_4px_18px_rgb\(0_0_0_\/_10\%\)\] {
        --tw-shadow: 0px 4px 18px rgba(0, 0, 0, .1);
        --tw-shadow-colored: 0px 4px 18px var(--tw-shadow-color);
        box-shadow: var(--tw-ring-offset-shadow, 0 0 transparent), var(--tw-ring-shadow, 0 0 transparent), var(--tw-shadow)
      }

      #app-parakeet .pk-outline-none,
      .plugin-parakeet .pk-outline-none {
        outline: 2px solid transparent;
        outline-offset: 2px
      }

      #app-parakeet .pk-ring-2,
      .plugin-parakeet .pk-ring-2 {
        --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);
        --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);
        box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 transparent)
      }

      #app-parakeet .pk-ring-\[\#333\],
      .plugin-parakeet .pk-ring-\[\#333\] {
        --tw-ring-opacity: 1;
        --tw-ring-color: rgba(51, 51, 51, var(--tw-ring-opacity))
      }

      #app-parakeet .pk-ring-offset-2,
      .plugin-parakeet .pk-ring-offset-2 {
        --tw-ring-offset-width: 2px
      }

      #app-parakeet .placeholder\:pk-text-\[color\:\#93989D\]::-webkit-input-placeholder,
      .plugin-parakeet .placeholder\:pk-text-\[color\:\#93989D\]::-webkit-input-placeholder {
        --tw-text-opacity: 1;
        color: rgba(147, 152, 157, var(--tw-text-opacity))
      }

      #app-parakeet .placeholder\:pk-text-\[color\:\#93989D\]::placeholder,
      .plugin-parakeet .placeholder\:pk-text-\[color\:\#93989D\]::placeholder {
        --tw-text-opacity: 1;
        color: rgba(147, 152, 157, var(--tw-text-opacity))
      }

      #app-parakeet .last\:pk-mb-0:last-child,
      .plugin-parakeet .last\:pk-mb-0:last-child {
        margin-bottom: 0
      }

      #app-parakeet .hover\:pk-bg-\[\#f6f6f7\]:hover,
      .plugin-parakeet .hover\:pk-bg-\[\#f6f6f7\]:hover {
        --tw-bg-opacity: 1;
        background-color: rgba(246, 246, 247, var(--tw-bg-opacity))
      }

      #app-parakeet .focus\:pk-border-\[\#333\]:focus,
      .plugin-parakeet .focus\:pk-border-\[\#333\]:focus {
        --tw-border-opacity: 1;
        border-color: rgba(51, 51, 51, var(--tw-border-opacity))
      }

      @media (min-width:768px) {

        #app-parakeet .md\:pk-max-w-\[33vw\],
        .plugin-parakeet .md\:pk-max-w-\[33vw\] {
          max-width: 33vw
        }

        #app-parakeet .md\:pk-text-base,
        .plugin-parakeet .md\:pk-text-base {
          font-size: 1rem;
          line-height: 1.5rem
        }

        #app-parakeet .md\:pk-text-sm,
        .plugin-parakeet .md\:pk-text-sm {
          font-size: .875rem;
          line-height: 1.25rem
        }
      }

      @media (min-width:1024px) {

        #app-parakeet .lg\:pk-px-8,
        .plugin-parakeet .lg\:pk-px-8 {
          padding-left: 2rem;
          padding-right: 2rem
        }
      }

      .TooltipIconLarge-module_large_tooltip__gzcyR {
        align-items: center;
        background: #fff;
        border-radius: 6px;
        box-shadow: 0 4px 36px 0 rgba(51, 51, 51, .08) !important;
        box-sizing: border-box;
        display: flex;
        flex-direction: column;
        flex-wrap: wrap;
        gap: 8px !important;
        padding: 8px !important;
        width: 136px
      }

      .TooltipIconLarge-module_large_tooltip_img__rpH1F {
        border-radius: 3px;
        height: 120px !important;
        width: 120px !important
      }

      @media (max-width:959px) {
        .TooltipIconLarge-module_large_tooltip__gzcyR {
          width: 104px !important
        }

        .TooltipIconLarge-module_large_tooltip_img__rpH1F {
          border-radius: 3px;
          height: 88px !important;
          width: 88px !important
        }
      }

      .Dropdown-module_dropdown-label__8sSmb[\:has\(select\:focus\)] {
        border: 1px solid #333 !important
      }

      .Dropdown-module_dropdown-label__8sSmb:has(select:focus) {
        border: 1px solid #333 !important
      }

      .Text-module_text-label__8sMmT[\:has\(input\:focus\)] {
        border: 1px solid #333
      }

      .Text-module_text-label__8sMmT:has(input:focus) {
        border: 1px solid #333
      }

      .Text-module_text_preview_contaniner__X8vAR {
        display: flex;
        flex-direction: column;
        flex-wrap: wrap;
        gap: 20px;
        margin-top: 20px
      }

      .Text-module_font_color_area__Zch0o,
      .Text-module_font_family_area__BUzEb,
      .Text-module_font_size_area__KmeEO {
        align-items: flex-start;
        display: flex;
        flex-direction: column;
        gap: 12px;
        width: 100%
      }

      .Text-module_preview_item_label__akFsR {
        color: rgba(51, 51, 51, .9);
        font-size: 15px;
        line-height: 130%
      }

      .Text-module_color_block_wrapper__0K3rY {
        align-items: flex-start;
        align-self: stretch;
        display: flex;
        flex-wrap: wrap;
        gap: 4px;
        width: 100%
      }

      .Text-module_color_block__8LhBv {
        align-items: center;
        border-radius: 6px;
        box-sizing: border-box;
        cursor: pointer;
        display: flex;
        height: 52px;
        justify-content: center;
        padding: 0;
        width: 52px
      }

      .Text-module_font_family_select_wrapper__N-f37 {
        border: 1px solid rgba(51, 51, 51, .12) !important;
        border-radius: 4px;
        overflow: hidden;
        position: relative;
        width: 100%
      }

      .Text-module_font_family_select__otjrz {
        -webkit-appearance: none;
        appearance: none;
        background: #fff;
        border: none !important;
        color: #333 !important;
        cursor: pointer;
        font-size: 14px !important;
        font-weight: 500 !important;
        height: 100%;
        line-height: 130% !important;
        overflow: hidden;
        padding: 14px 42px 14px 16px !important;
        text-overflow: ellipsis;
        white-space: nowrap;
        width: 100%
      }

      .Text-module_arrow_down_icon__GZiHO {
        cursor: pointer;
        position: absolute;
        right: 16px;
        top: 16px
      }

      .Text-module_font_size_wrapper__TRp3a {
        -webkit-tap-highlight-color: #fff;
        align-items: center;
        background: #fff;
        border: 1px solid rgba(51, 51, 51, .12) !important;
        border-radius: 4px;
        box-sizing: border-box;
        display: flex;
        gap: 10px;
        height: 44px;
        outline: none;
        padding: 5px 39px 5px 16px;
        position: relative;
        width: 120px
      }

      .Text-module_input_up__huYER {
        cursor: pointer;
        position: absolute;
        right: 5px;
        top: 3px
      }

      .Text-module_input_up__huYER:hover rect {
        fill: #dbdddf
      }

      .Text-module_input_up__huYER:active rect {
        fill: #c9ccd0
      }

      .Text-module_input_down__g1FF8 {
        cursor: pointer;
        position: absolute;
        right: 5px;
        top: 23px
      }

      .Text-module_input_down__g1FF8:active rect {
        fill: #c9ccd0
      }

      .Text-module_font_size_input__fMl0u {
        -webkit-appearance: none !important;
        appearance: none !important;
        font-size: 14px !important;
        font-weight: 500 !important;
        height: 100%;
        line-height: 130% !important;
        outline: none !important;
        width: 100%
      }

      .Checkbox-module_checkbox_img__wHiW3 {
        border-radius: 3px;
        height: 52px !important;
        margin-left: 8px;
        width: 52px
      }

      .Checkbox-module_checkbox_img_default__S0ISH {
        align-items: center;
        background-color: #f5f5f5;
        border-radius: 3px;
        display: flex;
        height: 52px !important;
        justify-content: center;
        margin-left: 8px;
        width: 52px
      }

      .Checkbox-module_checkbox_row__MJZge {
        align-items: stretch !important;
        display: flex !important;
        flex-wrap: wrap !important;
        gap: 12px !important;
        margin-left: 0 !important;
        width: 100% !important
      }

      .Checkbox-module_checkbox_row__MJZge>label {
        background: #fff !important;
        border: 1px solid #e6e6e6 !important;
        border-radius: 6px !important;
        box-sizing: border-box !important;
        display: flex !important;
        flex-direction: column !important;
        flex-wrap: wrap !important;
        margin-bottom: 0 !important;
        min-height: 125px !important;
        padding: 8px 8px 10px !important;
        width: 118px !important
      }

      .Checkbox-module_checkbox_row__MJZge>.Checkbox-module_label_checked__YpN49 {
        background: #fff !important;
        border: 1px solid #333 !important;
        border-radius: 6px !important
      }

      .Checkbox-module_checkbox_row__MJZge>label * {
        margin: 0 !important
      }

      .Checkbox-module_checkbox_row__MJZge>label>svg {
        margin-bottom: 8px !important
      }

      .Checkbox-module_checkbox_row__MJZge>label>span {
        margin-top: 5px !important
      }

      .Checkbox-module_checkbox_row__MJZge .Checkbox-module_checkbox_img__wHiW3,
      .Checkbox-module_checkbox_row__MJZge .Checkbox-module_checkbox_img_default__S0ISH {
        height: 66px !important;
        width: 66px !important
      }

      @media (max-width:959px) {
        .Checkbox-module_checkbox_row__MJZge>label {
          min-height: 111px !important;
          width: 106px !important
        }

        .Checkbox-module_checkbox_row__MJZge .Checkbox-module_checkbox_img__wHiW3,
        .Checkbox-module_checkbox_row__MJZge .Checkbox-module_checkbox_img_default__S0ISH {
          height: 52px !important;
          width: 52px !important
        }
      }

      .common-module_flex__7RXvG {
        display: flex
      }

      .common-module_flex_center_y__ZWb6u {
        align-items: center;
        display: flex
      }

      .common-module_toast__WjP9V {
        background: rgba(51, 51, 51, .9) !important;
        border-radius: 8px;
        display: inline-block !important;
        max-width: 263px;
        padding: 20px 24px !important;
        right: 50% !important;
        text-align: center;
        transform: translate(50%, 120px);
        width: -webkit-max-content !important;
        width: max-content !important;
        z-index: 10000 !important
      }

      .common-module_toast__WjP9V .rc-notification-notice {
        background: none !important;
        box-shadow: none;
        margin: 0;
        padding: 0
      }

      .common-module_toast__WjP9V .rc-notification-notice-content {
        background: none !important;
        color: #fff;
        font-size: 14px;
        font-weight: 500;
        line-height: 18px;
        padding: 0
      }

      .common-module_app-parakeet-dialog__UWDmu .rc-dialog-body {
        padding: 24px
      }

      .common-module_ap-dialog-title__-GIOw {
        color: #222;
        font-size: 24px;
        font-weight: 600;
        line-height: 130%
      }

      .common-module_ap-dialog-body__5yegi {
        color: #222;
        font-family: inherit;
        font-size: 15px;
        font-weight: 400;
        line-height: 130%;
        margin-top: 16px
      }

      .common-module_app-dialog-footer__qYGkd {
        display: flex;
        justify-content: flex-end;
        margin-top: 40px
      }

      .common-module_ap-button__RhZvx {
        border: 1px solid rgba(51, 51, 51, .12);
        border-radius: 6px;
        cursor: pointer;
        font-family: inherit;
        font-size: 15px;
        min-width: 84px;
        outline: none !important;
        padding: 8px 16px
      }

      .common-module_app-parakeet-dialog--wrapper__YIL3t {
        align-items: center;
        display: flex;
        justify-content: center
      }

      .common-module_ap-button-no__f3AQV {
        background: #fff;
        color: #333
      }

      .common-module_ap-button-ok__-Dglc {
        background: #333;
        color: #fff;
        margin-left: 12px
      }

      .common-module_app-parakeet-dialog__UWDmu .rc-dialog-close {
        opacity: 1 !important;
        padding: 0 !important;
        top: 24px
      }

      @media (min-width:768px) {
        .common-module_app-parakeet-dialog__UWDmu {
          width: 580px !important
        }

        .common-module_app-parakeet-dialog__UWDmu .rc-dialog-content {
          border-radius: 8px
        }
      }

      @media (max-width:767px) {
        .common-module_app-parakeet-dialog__UWDmu {
          margin: 0 16px !important;
          width: 100% !important
        }

        .common-module_app-parakeet-dialog__UWDmu .rc-dialog-body {
          padding: 16px
        }

        .common-module_ap-button__RhZvx {
          font-size: 15px
        }

        .common-module_app-parakeet-dialog__UWDmu .rc-dialog-close {
          right: 16px !important;
          top: 16px
        }

        .common-module_toast__WjP9V {
          left: 50% !important;
          top: 50% !important;
          transform: translateY(-50%) translateX(-50%) !important
        }
      }

      .advanced-cropper-line-wrapper--north,
      .advanced-cropper-line-wrapper--south {
        height: 12px;
        width: 100%
      }

      .advanced-cropper-line-wrapper--north {
        cursor: n-resize
      }

      .advanced-cropper-line-wrapper--south {
        cursor: s-resize
      }

      .advanced-cropper-line-wrapper--east,
      .advanced-cropper-line-wrapper--west {
        height: 100%;
        width: 12px
      }

      .advanced-cropper-line-wrapper--east {
        cursor: e-resize
      }

      .advanced-cropper-line-wrapper--west {
        cursor: w-resize
      }

      .advanced-cropper-line-wrapper--disabled {
        cursor: auto
      }

      .advanced-cropper-line-wrapper__content {
        position: absolute
      }

      .advanced-cropper-line-wrapper__content--east,
      .advanced-cropper-line-wrapper__content--west {
        height: 100%
      }

      .advanced-cropper-line-wrapper__content--north,
      .advanced-cropper-line-wrapper__content--south {
        width: 100%
      }

      .advanced-cropper-line-wrapper__content--east {
        left: 50%;
        transform: translateX(-100%)
      }

      .advanced-cropper-line-wrapper__content--west {
        right: 50%;
        transform: translateX(100%)
      }

      .advanced-cropper-line-wrapper__content--north {
        top: 50%
      }

      .advanced-cropper-line-wrapper__content--south {
        bottom: 50%
      }

      .advanced-cropper-handler-wrapper {
        height: 30px;
        position: absolute;
        transform: translate(-50%, -50%);
        width: 30px
      }

      .advanced-cropper-handler-wrapper__draggable {
        align-items: center;
        display: flex;
        height: 100%;
        justify-content: center;
        width: 100%
      }

      .advanced-cropper-handler-wrapper--west-north {
        cursor: nw-resize
      }

      .advanced-cropper-handler-wrapper--north {
        cursor: n-resize
      }

      .advanced-cropper-handler-wrapper--east-north {
        cursor: ne-resize
      }

      .advanced-cropper-handler-wrapper--east {
        cursor: e-resize
      }

      .advanced-cropper-handler-wrapper--east-south {
        cursor: se-resize
      }

      .advanced-cropper-handler-wrapper--south {
        cursor: s-resize
      }

      .advanced-cropper-handler-wrapper--west-south {
        cursor: sw-resize
      }

      .advanced-cropper-handler-wrapper--west {
        cursor: w-resize
      }

      .advanced-cropper-handler-wrapper--disabled {
        cursor: auto
      }

      .advanced-cropper-bounding-box {
        height: 100%;
        position: relative;
        width: 100%
      }

      .advanced-cropper-bounding-box__handler-wrapper {
        position: absolute
      }

      .advanced-cropper-bounding-box__handler-wrapper--east,
      .advanced-cropper-bounding-box__handler-wrapper--west {
        height: 100%;
        top: 50%;
        transform: translateY(-50%)
      }

      .advanced-cropper-bounding-box__handler-wrapper--north,
      .advanced-cropper-bounding-box__handler-wrapper--south {
        left: 50%;
        transform: translateX(-50%);
        width: 100%
      }

      .advanced-cropper-bounding-box__handler-wrapper--west,
      .advanced-cropper-bounding-box__handler-wrapper--west-north,
      .advanced-cropper-bounding-box__handler-wrapper--west-south {
        left: 0
      }

      .advanced-cropper-bounding-box__handler-wrapper--east,
      .advanced-cropper-bounding-box__handler-wrapper--east-north,
      .advanced-cropper-bounding-box__handler-wrapper--east-south {
        left: 100%
      }

      .advanced-cropper-bounding-box__handler-wrapper--east-north,
      .advanced-cropper-bounding-box__handler-wrapper--north,
      .advanced-cropper-bounding-box__handler-wrapper--west-north {
        top: 0
      }

      .advanced-cropper-bounding-box__handler-wrapper--east-south,
      .advanced-cropper-bounding-box__handler-wrapper--south,
      .advanced-cropper-bounding-box__handler-wrapper--west-south {
        top: 100%
      }

      .advanced-cropper-bounding-box__handler {
        position: absolute
      }

      .advanced-cropper-bounding-box__handler--west-north {
        left: 0;
        top: 0
      }

      .advanced-cropper-bounding-box__handler--north {
        left: 50%;
        top: 0
      }

      .advanced-cropper-bounding-box__handler--east-north {
        left: 100%;
        top: 0
      }

      .advanced-cropper-bounding-box__handler--east {
        left: 100%;
        top: 50%
      }

      .advanced-cropper-bounding-box__handler--east-south {
        left: 100%;
        top: 100%
      }

      .advanced-cropper-bounding-box__handler--south {
        left: 50%;
        top: 100%
      }

      .advanced-cropper-bounding-box__handler--west-south {
        left: 0;
        top: 100%
      }

      .advanced-cropper-bounding-box__handler--west {
        left: 0;
        top: 50%
      }

      .advanced-cropper-bounding-box__line {
        position: absolute
      }

      .advanced-cropper-bounding-box__line--north,
      .advanced-cropper-bounding-box__line--south {
        left: 0;
        transform: translateY(-50%)
      }

      .advanced-cropper-bounding-box__line--north {
        top: 0
      }

      .advanced-cropper-bounding-box__line--south {
        top: 100%
      }

      .advanced-cropper-bounding-box__line--east,
      .advanced-cropper-bounding-box__line--west {
        top: 0;
        transform: translateX(-50%)
      }

      .advanced-cropper-bounding-box__line--west {
        left: 0
      }

      .advanced-cropper-bounding-box__line--east {
        left: 100%
      }

      .advanced-cropper-artificial-transition {
        will-change: transform
      }

      .advanced-cropper-background-image {
        max-width: none !important;
        pointer-events: none;
        position: absolute;
        transform-origin: center;
        -webkit-user-select: none;
        user-select: none
      }

      .advanced-cropper-canvas {
        display: none
      }

      .advanced-cropper-source {
        height: 1px;
        opacity: 0;
        position: absolute;
        visibility: hidden;
        width: 1px
      }

      .advanced-cropper-fade {
        display: flex;
        flex-direction: column;
        opacity: 0;
        transition: .5s;
        visibility: hidden
      }

      .advanced-cropper-fade--visible {
        opacity: 1;
        visibility: visible
      }

      .advanced-cropper-wrapper__fade {
        flex-grow: 1;
        min-height: 0
      }

      .advanced-cropper-stencil-grid {
        border-collapse: collapse;
        display: table;
        opacity: 0;
        table-layout: fixed;
        transition: opacity .3s
      }

      .advanced-cropper-stencil-grid--visible {
        opacity: 1
      }

      .advanced-cropper-stencil-grid__row {
        display: table-row
      }

      .advanced-cropper-stencil-grid__cell {
        border: 1px solid;
        display: table-cell;
        height: 1%;
        width: 1%
      }

      .advanced-cropper-stencil-grid__cell--top {
        border-top-color: transparent
      }

      .advanced-cropper-stencil-grid__cell--left {
        border-left-color: transparent
      }

      .advanced-cropper-stencil-grid__cell--right {
        border-right-color: transparent
      }

      .advanced-cropper-stencil-grid__cell--bottom {
        border-bottom-color: transparent
      }

      .advanced-cropper-stencil-overlay {
        -webkit-backface-visibility: hidden;
        box-shadow: 0 0 0 1000px currentColor;
        box-sizing: initial;
        height: 100%;
        pointer-events: none;
        position: absolute;
        width: 100%
      }

      .advanced-cropper-stencil-wrapper {
        will-change: transform
      }

      .advanced-cropper-boundary {
        direction: ltr;
        position: relative;
        -webkit-user-select: none;
        user-select: none
      }

      .advanced-cropper-boundary__content {
        height: 100%;
        left: 0;
        position: absolute;
        top: 0;
        width: 100%
      }

      .advanced-cropper-boundary__stretcher {
        max-height: 100%;
        max-width: 100%;
        pointer-events: none;
        position: relative
      }

      .advanced-cropper-circle-stencil {
        -webkit-backface-visibility: hidden;
        box-sizing: initial;
        height: 100%;
        position: absolute;
        -webkit-transform-style: preserve-3d;
        width: 100%
      }

      .advanced-cropper-circle-stencil__overlay {
        border-radius: 50%;
        overflow: hidden
      }

      .advanced-cropper-circle-stencil__preview {
        border-radius: 50%
      }

      .advanced-cropper-circle-stencil__draggable-area,
      .advanced-cropper-circle-stencil__grid,
      .advanced-cropper-circle-stencil__overlay,
      .advanced-cropper-circle-stencil__preview {
        height: 100%;
        position: absolute;
        width: 100%
      }

      .advanced-cropper-circle-stencil--movable {
        cursor: move
      }

      .advanced-cropper-rectangle-stencil {
        -webkit-backface-visibility: hidden;
        box-sizing: border-box;
        -webkit-transform-style: preserve-3d
      }

      .advanced-cropper-rectangle-stencil,
      .advanced-cropper-rectangle-stencil__draggable-area,
      .advanced-cropper-rectangle-stencil__grid,
      .advanced-cropper-rectangle-stencil__overlay,
      .advanced-cropper-rectangle-stencil__preview {
        height: 100%;
        position: absolute;
        width: 100%
      }

      .advanced-cropper-rectangle-stencil--movable {
        cursor: move
      }

      .advanced-cropper-simple-line {
        background: none;
        border-width: 0
      }

      .advanced-cropper-simple-line--north,
      .advanced-cropper-simple-line--south {
        height: 0;
        width: 100%
      }

      .advanced-cropper-simple-line--east,
      .advanced-cropper-simple-line--west {
        height: 100%;
        width: 0
      }

      .advanced-cropper-simple-line--east {
        border-right-width: 1px
      }

      .advanced-cropper-simple-line--west {
        border-left-width: 1px
      }

      .advanced-cropper-simple-line--south {
        border-bottom-width: 1px
      }

      .advanced-cropper-simple-line--north {
        border-top-width: 1px
      }

      .advanced-cropper-simple-handler {
        display: block
      }

      .advanced-cropper-preview {
        box-sizing: border-box;
        display: flex;
        flex-direction: column;
        overflow: hidden;
        position: relative
      }

      .advanced-cropper-preview__content {
        left: 50%;
        overflow: hidden;
        position: absolute;
        top: 50%;
        transform: translate(-50%, -50%)
      }

      .advanced-cropper-preview__image {
        display: none;
        max-width: none !important;
        pointer-events: none;
        position: absolute;
        transform-origin: center;
        -webkit-user-select: none;
        user-select: none
      }

      .advanced-cropper-preview__image--visible {
        display: block
      }

      .advanced-cropper-preview__boundary {
        flex-grow: 1;
        min-height: 0;
        min-width: 0
      }

      .cropper-preview-wrapper__fade {
        flex-grow: 1;
        min-height: 0;
        width: 100%
      }

      .advanced-cropper {
        background: #000;
        color: #fff;
        display: flex;
        flex-direction: column;
        max-height: 100%;
        overflow: hidden;
        position: relative
      }

      .advanced-cropper__boundary {
        flex-grow: 1;
        min-height: 0;
        min-width: 0
      }

      .advanced-cropper__background-wrapper,
      .advanced-cropper__wrapper {
        bottom: 0;
        left: 0;
        position: absolute;
        right: 0;
        top: 0
      }

      .advanced-cropper__stencil-wrapper {
        position: absolute
      }

      .advanced-cropper * {
        box-sizing: border-box
      }

      .advanced-cropper-simple-handler {
        background: currentColor;
        height: 10px;
        width: 10px
      }

      .advanced-cropper-simple-line {
        border-color: hsla(0, 0%, 100%, .3);
        border-style: solid;
        transition: border .5s
      }

      .advanced-cropper-simple-line--hover {
        border-color: #fff
      }

      .advanced-cropper-circle-stencil__preview {
        border: 2px solid hsla(0, 0%, 100%, .2)
      }

      .advanced-cropper-stencil-overlay {
        color: rgba(0, 0, 0, .5)
      }

      .advanced-cropper-stencil-grid {
        color: hsla(0, 0%, 100%, .4)
      }

      .ImageCropper-module_cropper_container__uvTtt {
        border-radius: 6px 6px 0 0;
        max-height: 544px;
        max-width: 800px;
        min-width: 600px
      }

      .ImageCropper-module_cropper_container__uvTtt * {
        box-sizing: border-box
      }

      .ImageCropper-module_cropper_container__uvTtt .advanced-cropper-simple-line {
        border-color: #599bff
      }

      .ImageCropper-module_cropper_container__uvTtt .advanced-cropper-simple-handler {
        border: 1px solid #599bff
      }

      .ImageCropper-module_cropper_container__uvTtt .advanced-cropper__background-wrapper {
        overflow: hidden
      }

      .ImageCropper-module_cropper_container__uvTtt .advanced-cropper-stencil-overlay {
        box-shadow: 0 0 0 1000px rgba(34, 34, 34, .7)
      }

      .ImageCropper-module_copper_wrapper__Wpn9E {
        border-radius: 6px 6px 0 0;
        max-height: 602px
      }

      .ImageCropper-module_cropper_footer__Rk-w5 {
        align-items: center;
        display: flex;
        height: 56px;
        justify-content: space-between;
        padding: 0 12px
      }

      .ImageCropper-module_footer_button__BdQgl {
        background: #fff;
        border: 1px solid rgba(51, 51, 51, .12);
        border-radius: 6px;
        color: #333;
        cursor: pointer;
        font-family: inherit;
        font-size: 16px;
        font-weight: 500;
        line-height: 130%;
        outline: none !important;
        padding: 8px 16px;
        text-align: center
      }

      .ImageCropper-module_footer_button__BdQgl+.ImageCropper-module_footer_button__BdQgl {
        margin-left: 12px
      }

      .ImageCropper-module_operate_box__QJJAG {
        align-items: center;
        display: flex;
        margin-left: 22px
      }

      .ImageCropper-module_icon__0Sh-o {
        cursor: pointer
      }

      .ImageCropper-module_icon__0Sh-o+.ImageCropper-module_icon__0Sh-o {
        margin-left: 32px;
        margin-right: 28px
      }

      .ImageCropper-module_mock_line__-0jep {
        background: rgba(51, 51, 51, .12);
        border-radius: 3px;
        flex-shrink: 0;
        height: 19px;
        margin-right: 18px;
        width: 2px
      }

      .ImageCropper-module_cropper_type_wrapper__7wTON {
        align-items: center;
        border-radius: 4px;
        box-sizing: border-box;
        cursor: pointer;
        display: flex;
        font-size: 0;
        gap: 10px;
        height: 28px;
        padding: 6px 10px;
        position: relative
      }

      .ImageCropper-module_cropper_type_wrapper__7wTON.ImageCropper-module_active__c3F6n,
      .ImageCropper-module_cropper_type_wrapper__7wTON:hover {
        background: #eee
      }

      .ImageCropper-module_cropper_type_wrapper__7wTON.ImageCropper-module_active__c3F6n .ImageCropper-module_cropper_type_arrow__6-sTm {
        transform: rotate(180deg);
        transition: .2s ease-in
      }

      .ImageCropper-module_cropper_select_list__Q9Msa {
        align-items: flex-start;
        background: #fff;
        border-radius: 6px;
        box-shadow: 0 4px 20px 0 rgba(0, 0, 0, .08);
        box-sizing: border-box;
        display: flex;
        flex-wrap: wrap;
        height: 112px;
        justify-content: space-between;
        left: 50%;
        padding: 6px;
        position: relative;
        position: absolute;
        top: -120px;
        transform: translateX(-50%);
        width: 74px
      }

      .ImageCropper-module_cropper_select_list_arrow__GPSms {
        bottom: -4px;
        left: 50%;
        position: absolute;
        transform: translateX(-50%)
      }

      .ImageCropper-module_shape_icon__d0xAo {
        align-items: center;
        cursor: pointer;
        display: flex;
        height: 28px;
        justify-content: center;
        margin-bottom: 8px;
        width: 28px
      }

      .ImageCropper-module_shape_icon__d0xAo.ImageCropper-module_active__c3F6n {
        background: #e8f1ff;
        border-radius: 4px;
        color: #3e85ee
      }

      @media screen and (max-width:959px) {
        .ImageCropper-module_cropper_container__uvTtt {
          height: auto;
          max-height: 610px;
          min-width: auto
        }

        .ImageCropper-module_cropper_footer__Rk-w5 {
          height: 50px;
          padding: 0 10px
        }

        .ImageCropper-module_operate_box__QJJAG {
          align-items: center;
          margin-left: 0
        }

        .ImageCropper-module_icon__0Sh-o+.ImageCropper-module_icon__0Sh-o {
          margin-left: 36px
        }

        .ImageCropper-module_cropper_footer__Rk-w5 {
          font-size: 15px
        }

        .ImageCropper-module_footer_button__BdQgl {
          line-height: 17px
        }
      }

      .ImageCropper-module_preview_circle__M21xU {
        border: none
      }

      .ImageCropper-module_preview_heart__ePRoZ {
        background: transparent;
        background: url(https://static.staticdj.com/oss/operation/79fbbd3c59b5e444f74d54581b9a0411.svg);
        background-repeat: no-repeat;
        background-size: 100% 100%;
        position: relative
      }

      .ImageCropper-module_preview_star__f2pmG {
        background: transparent;
        background: url(https://static.staticdj.com/oss/operation/76f72c9c2894f11f9efcec04cf8f90e0.svg);
        background-repeat: no-repeat;
        background-size: 100% 100%;
        position: relative
      }

      .ImageCropper-module_overlay_rect_radius__q1iPj {
        border-radius: 28px
      }

      .ImageCropper-module_overlay_ellipse__F-yu5 {
        border-radius: 50%;
        height: 100%;
        left: 50%;
        position: absolute;
        transform: translateX(-50%);
        width: 50%
      }

      .ImageCropper-module_hidden_canvas__l7EU7 {
        display: none
      }

      .ImageCropper-module_ml0__wrtDc {
        margin-left: 0
      }

      .Upload-module_upload_dialog__jV-WW {
        border-radius: 8px;
        left: 50%;
        margin: 0 !important;
        padding: 0 !important;
        position: absolute !important;
        top: 50%;
        transform: translateX(-50%) translateY(-50%);
        width: auto !important
      }

      .Upload-module_upload_dialog__jV-WW .rc-dialog-body {
        display: block;
        padding: 0
      }

      .Upload-module_upload_large__9rjsH {
        border-radius: 8px;
        height: 228px;
        margin-bottom: 6px;
        width: 100%
      }

      .Upload-module_large_content__PoxTi {
        align-items: flex-start;
        display: inline-flex;
        flex-direction: column;
        gap: 8px
      }

      .Upload-module_large_img__Xguu1 {
        align-items: center;
        display: flex;
        flex-direction: column;
        gap: 4px;
        width: 100%
      }

      .Upload-module_large_img__Xguu1 p {
        color: #333;
        font-style: normal;
        font-weight: 600;
        width: 100%
      }

      .Upload-module_large_img__Xguu1 p span {
        color: #477bff;
        font-weight: 600;
        position: relative
      }

      .Upload-module_large_img__Xguu1 p span:after {
        background-color: #477bff;
        bottom: 3px;
        content: "";
        height: 1px;
        left: 0;
        position: absolute;
        width: 100%
      }

      .Upload-module_large_tips__TOH6I {
        align-items: flex-start;
        display: flex;
        flex-direction: column;
        gap: 4px
      }

      .Upload-module_upload_tips__8XVTP {
        align-items: center;
        color: rgba(51, 51, 51, .8);
        display: flex;
        font-size: 13px !important;
        font-style: normal;
        font-weight: 400;
        gap: 6px
      }

      .Upload-module_upload_tips_dot__GLSmQ {
        background-color: #5c5c5c;
        border-radius: 50%;
        display: inline-block;
        height: 3px;
        width: 3px
      }

      .Tab-module_parakeet_comp_tab__Zx-vZ {
        display: flex;
        font-weight: 600;
        margin-bottom: 16px
      }

      .Tab-module_tab_item__tBdan {
        border: none;
        color: rgba(51, 51, 51, .7);
        cursor: pointer;
        flex: 1;
        font-size: 18px;
        height: 35px;
        line-height: 130%;
        position: relative;
        text-align: center
      }

      .Tab-module_tab_item__tBdan:after {
        background-color: hsla(0, 0%, 90%, .6);
        bottom: -2px;
        content: "";
        height: 2px;
        left: 0;
        position: absolute;
        width: 100%
      }

      .Tab-module_tab_item__tBdan:first-child:after {
        border-radius: 2px 0 0 2px
      }

      .Tab-module_tab_item__tBdan:last-child:after {
        border-radius: 0 2px 2px 0
      }

      .Tab-module_tab_item_active__6rfwe {
        color: #333;
        height: 34px
      }

      .Tab-module_tab_item_active__6rfwe:after {
        background-color: #333;
        border-radius: 1px !important;
        bottom: -3px !important;
        content: "";
        height: 3px !important;
        left: 0;
        position: absolute;
        width: 100%
      }

      @media screen and (max-width:959px) {
        .Tab-module_parakeet_comp_tab__Zx-vZ {
          padding: 0 16px
        }

        .eva .parakeet_comp_tab {
          padding: 0
        }

        .hero .parakeet_comp_tab,
        .nova .parakeet_comp_tab,
        .wind .parakeet_comp_tab {
          margin-top: 26px
        }

        .flash .parakeet_comp_tab {
          margin-top: 26px;
          padding: 0 8px
        }

        .flash #app-parakeet {
          padding: 0 10px
        }

        .dj_skin_body .parakeet_comp_tab {
          margin-top: 26px
        }
      }

      .DesignOperator-module_parakeet_comp_tab__Ekj1e {
        display: flex;
        font-weight: 600;
        margin-bottom: 16px
      }

      .DesignOperator-module_tabs__kDJ51 {
        border: none !important;
        border-radius: 0 0 8px 8px
      }

      .DesignOperator-module_app_parakeet_operator__lL4U1 {
        box-sizing: border-box
      }

      .DesignOperator-module_app_parakeet_operator__lL4U1 .rc-tabs-nav-list {
        background-color: hsla(0, 0%, 90%, .4);
        display: flex;
        padding: 5px;
        width: 100%
      }

      .DesignOperator-module_app_parakeet_operator__lL4U1 .rc-tabs-tab {
        background: none;
        border-radius: 4px;
        display: flex;
        flex: 1;
        height: 30px;
        justify-content: center
      }

      .DesignOperator-module_app_parakeet_operator__lL4U1 .rc-tabs-tab-active {
        background-color: #fff;
        color: #333
      }

      .DesignOperator-module_app_parakeet_operator__lL4U1 .rc-tabs-tab-active .rc-tabs-tab-btn {
        color: #333
      }

      .DesignOperator-module_app_parakeet_operator__lL4U1 .rc-tabs-tab-btn {
        align-items: center;
        color: rgba(51, 51, 51, .6);
        display: flex;
        font-size: 16px;
        font-weight: 500 !important
      }

      .DesignOperator-module_app_parakeet_operator__lL4U1 .rc-tabs-ink-bar {
        display: none
      }

      .DesignOperator-module_tab_item_active__8Mzpg {
        border: none;
        color: #333;
        height: 34px;
        position: relative
      }

      .DesignOperator-module_tab_panel__cumuu {
        background-color: #fdfdfd
      }

      .DesignOperator-module_app_parakeet_operator__lL4U1 .rc-tabs-tab-disabled {
        flex: unset;
        margin: 0 18px
      }

      .DesignOperator-module_app_parakeet_operator__lL4U1 .rc-tabs-tab:first-child {
        margin-right: 22px
      }

      .DesignOperator-module_app_parakeet_operator__lL4U1 .rc-tabs-tab:nth-child(5) {
        margin-left: 22px
      }

      .DesignOperator-module_app_parakeet_operator__lL4U1 .rc-tabs-tab-disabled:hover {
        background-color: #fff
      }

      @media screen and (max-width:959px) {
        .DesignOperator-module_tab_panel__cumuu {
          align-items: center;
          display: flex;
          height: auto;
          min-height: 108px
        }

        .DesignOperator-module_tab_panel__cumuu>div {
          width: 100%
        }

        .DesignOperator-module_app_parakeet_operator__lL4U1 .icon-custom {
          scale: .8
        }

        .DesignOperator-module_app_parakeet_operator__lL4U1 .rc-tabs-tab:first-of-type {
          flex: unset;
          margin: 0 8px 0 3px
        }

        .DesignOperator-module_app_parakeet_operator__lL4U1 .rc-tabs-nav-list div:nth-last-child(2) {
          flex: unset;
          margin: 0 3px 0 8px
        }
      }

      .SizeOperator-module_input__lSSD5 {
        background: #fff;
        border: 1px solid rgba(51, 51, 51, .12);
        border-radius: 4px;
        display: flex;
        font-size: 14px;
        height: 33px;
        margin-left: 12px;
        outline: none !important;
        padding: 6px 24px 6px 12px
      }

      .SizeOperator-module_suffix__kFdZc {
        position: relative
      }

      .SizeOperator-module_suffix__kFdZc:after {
        color: rgba(51, 51, 51, .4);
        content: "px";
        display: block;
        font-size: 16px;
        font-weight: 400;
        line-height: 16px;
        position: absolute;
        right: 6px;
        top: 6px
      }

      .SizeOperator-module_input_controller__pl-h0 {
        width: 88px
      }

      .SizeOperator-module_label__4U5QN {
        color: #333;
        font-size: 15px;
        font-weight: 400;
        line-height: 130%;
        width: 50px
      }

      .SizeOperator-module_tab_content__SYACz {
        padding: 20px 24px
      }

      .SizeOperator-module_tip__-z7-F {
        color: rgba(51, 51, 51, .5);
        font-size: 15px;
        font-weight: 400;
        line-height: 130%;
        margin-left: 16px;
        text-align: center
      }

      .SizeOperator-module_tab_content_item__yRWHu {
        margin-top: 12px
      }

      @media screen and (max-width:959px) {
        .SizeOperator-module_tip__-z7-F {
          font-size: 14px
        }

        .SizeOperator-module_tab_content__SYACz {
          padding: 0 16px
        }

        .SizeOperator-module_input__lSSD5 {
          margin-left: 8px
        }

        .SizeOperator-module_tip__-z7-F {
          margin-left: 12px
        }

        .SizeOperator-module_label__4U5QN {
          font-size: 14px
        }

        .SizeOperator-module_suffix__kFdZc:after {
          top: 7px
        }
      }

      .RotateOperator-module_operate_rotate__DbNrD {
        display: flex;
        height: 118px;
        padding: 32px 16px 28px
      }

      .RotateOperator-module_slider__RyqmW {
        margin: 32px 33px 0 22px
      }

      .RotateOperator-module_slider__RyqmW .rc-slider-handle {
        box-shadow: 0 0 0 5px #fff !important;
        height: 20px;
        margin-top: -8px;
        opacity: 1;
        position: relative;
        width: 20px;
        z-index: 10
      }

      .RotateOperator-module_slider__RyqmW .rc-slider-handle:after {
        background: #fff;
        border-radius: 4px;
        box-shadow: 0 2px 10px rgba(34, 34, 34, .06);
        color: #292929;
        content: attr(aria-valuenow);
        display: none;
        font-size: 16px;
        font-weight: 400;
        left: 50%;
        line-height: 120%;
        padding: 4px 10px;
        position: absolute;
        top: -37px;
        transform: translateX(-50%)
      }

      .RotateOperator-module_slider__RyqmW .rc-slider-handle-dragging,
      .RotateOperator-module_slider__RyqmW .rc-slider-handle:active {
        box-shadow: 0 0 0 5px #fff !important
      }

      .RotateOperator-module_slider__RyqmW .rc-slider-handle:active:after {
        display: block !important
      }

      .RotateOperator-module_slider__RyqmW .rc-slider-mark {
        top: -34px;
        z-index: 5
      }

      .RotateOperator-module_slider__RyqmW .rc-slider-mark-text {
        color: #333;
        font-size: 15px;
        font-weight: 500;
        line-height: 120%
      }

      .RotateOperator-module_slider__RyqmW .rc-slider-step {
        background: hsla(0, 0%, 90%, .8)
      }

      .RotateOperator-module_slider__RyqmW .rc-slider-dot:nth-child(3) {
        background-color: #333 !important;
        z-index: 3
      }

      @media screen and (max-width:959px) {
        .RotateOperator-module_slider__RyqmW .rc-slider-mark-text {
          font-size: 14px
        }

        .RotateOperator-module_operate_rotate__DbNrD {
          height: 108px;
          padding: 32px 2px 20px
        }

        .RotateOperator-module_slider__RyqmW .rc-slider-mark {
          top: -38px;
          z-index: 5
        }

        .RotateOperator-module_slider__RyqmW {
          margin: 32px 22px 0
        }
      }

      .rc-slider {
        border-radius: 6px;
        height: 14px;
        padding: 5px 0;
        position: relative;
        touch-action: none;
        width: 100%
      }

      .rc-slider,
      .rc-slider * {
        -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
        box-sizing: border-box
      }

      .rc-slider-rail {
        background-color: #e9e9e9;
        width: 100%
      }

      .rc-slider-rail,
      .rc-slider-track {
        border-radius: 6px;
        height: 4px;
        position: absolute
      }

      .rc-slider-track {
        background-color: #abe2fb
      }

      .rc-slider-handle {
        background-color: #fff;
        border: 2px solid #96dbfa;
        border-radius: 50%;
        cursor: pointer;
        cursor: -webkit-grab;
        cursor: grab;
        height: 14px;
        margin-top: -5px;
        opacity: .8;
        position: absolute;
        touch-action: pan-x;
        width: 14px
      }

      .rc-slider-handle-dragging.rc-slider-handle-dragging.rc-slider-handle-dragging {
        border-color: #57c5f7;
        box-shadow: 0 0 0 5px #96dbfa
      }

      .rc-slider-handle:focus {
        box-shadow: none;
        outline: none
      }

      .rc-slider-handle.focus-visible {
        border-color: #2db7f5;
        box-shadow: 0 0 0 3px #96dbfa
      }

      .rc-slider-handle:focus-visible {
        border-color: #2db7f5;
        box-shadow: 0 0 0 3px #96dbfa
      }

      .rc-slider-handle-click-focused:focus {
        border-color: #96dbfa;
        box-shadow: unset
      }

      .rc-slider-handle:hover {
        border-color: #57c5f7
      }

      .rc-slider-handle:active {
        border-color: #57c5f7;
        box-shadow: 0 0 5px #57c5f7;
        cursor: -webkit-grabbing;
        cursor: grabbing
      }

      .rc-slider-mark {
        font-size: 12px;
        left: 0;
        position: absolute;
        top: 18px;
        width: 100%
      }

      .rc-slider-mark-text {
        color: #999;
        cursor: pointer;
        display: inline-block;
        position: absolute;
        text-align: center;
        vertical-align: middle
      }

      .rc-slider-mark-text-active {
        color: #666
      }

      .rc-slider-step {
        background: transparent;
        height: 4px;
        pointer-events: none;
        position: absolute;
        width: 100%
      }

      .rc-slider-dot {
        background-color: #fff;
        border: 2px solid #e9e9e9;
        border-radius: 50%;
        bottom: -2px;
        cursor: pointer;
        height: 8px;
        position: absolute;
        vertical-align: middle;
        width: 8px
      }

      .rc-slider-dot-active {
        border-color: #96dbfa
      }

      .rc-slider-dot-reverse {
        margin-right: -4px
      }

      .rc-slider-disabled {
        background-color: #e9e9e9
      }

      .rc-slider-disabled .rc-slider-track {
        background-color: #ccc
      }

      .rc-slider-disabled .rc-slider-dot,
      .rc-slider-disabled .rc-slider-handle {
        background-color: #fff;
        border-color: #ccc;
        box-shadow: none;
        cursor: not-allowed
      }

      .rc-slider-disabled .rc-slider-dot,
      .rc-slider-disabled .rc-slider-mark-text {
        cursor: not-allowed !important
      }

      .rc-slider-vertical {
        height: 100%;
        padding: 0 5px;
        width: 14px
      }

      .rc-slider-vertical .rc-slider-rail {
        height: 100%;
        width: 4px
      }

      .rc-slider-vertical .rc-slider-track {
        bottom: 0;
        left: 5px;
        width: 4px
      }

      .rc-slider-vertical .rc-slider-handle {
        margin-left: -5px;
        margin-top: 0;
        touch-action: pan-y
      }

      .rc-slider-vertical .rc-slider-mark {
        height: 100%;
        left: 18px;
        top: 0
      }

      .rc-slider-vertical .rc-slider-step {
        height: 100%;
        width: 4px
      }

      .rc-slider-vertical .rc-slider-dot {
        margin-left: -2px
      }

      .rc-slider-tooltip-zoom-down-appear,
      .rc-slider-tooltip-zoom-down-enter {
        animation-duration: .3s;
        animation-fill-mode: both;
        animation-play-state: paused;
        display: block !important
      }

      .rc-slider-tooltip-zoom-down-leave {
        animation-duration: .3s;
        animation-fill-mode: both;
        animation-play-state: paused;
        display: block !important
      }

      .rc-slider-tooltip-zoom-down-appear.rc-slider-tooltip-zoom-down-appear-active,
      .rc-slider-tooltip-zoom-down-enter.rc-slider-tooltip-zoom-down-enter-active {
        animation-name: rcSliderTooltipZoomDownIn;
        animation-play-state: running
      }

      .rc-slider-tooltip-zoom-down-leave.rc-slider-tooltip-zoom-down-leave-active {
        animation-name: rcSliderTooltipZoomDownOut;
        animation-play-state: running
      }

      .rc-slider-tooltip-zoom-down-appear,
      .rc-slider-tooltip-zoom-down-enter {
        animation-timing-function: cubic-bezier(.23, 1, .32, 1);
        transform: scale(0)
      }

      .rc-slider-tooltip-zoom-down-leave {
        animation-timing-function: cubic-bezier(.755, .05, .855, .06)
      }

      @keyframes rcSliderTooltipZoomDownIn {
        0% {
          opacity: 0;
          transform: scale(0);
          transform-origin: 50% 100%
        }

        to {
          transform: scale(1);
          transform-origin: 50% 100%
        }
      }

      @keyframes rcSliderTooltipZoomDownOut {
        0% {
          transform: scale(1);
          transform-origin: 50% 100%
        }

        to {
          opacity: 0;
          transform: scale(0);
          transform-origin: 50% 100%
        }
      }

      .rc-slider-tooltip {
        left: -9999px;
        position: absolute;
        top: -9999px;
        visibility: visible
      }

      .rc-slider-tooltip,
      .rc-slider-tooltip * {
        -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
        box-sizing: border-box
      }

      .rc-slider-tooltip-hidden {
        display: none
      }

      .rc-slider-tooltip-placement-top {
        padding: 4px 0 8px
      }

      .rc-slider-tooltip-inner {
        background-color: #6c6c6c;
        border-radius: 6px;
        box-shadow: 0 0 4px #d9d9d9;
        color: #fff;
        font-size: 12px;
        height: 24px;
        line-height: 1;
        min-width: 24px;
        padding: 6px 2px;
        text-align: center;
        text-decoration: none
      }

      .rc-slider-tooltip-arrow {
        border-color: transparent;
        border-style: solid;
        height: 0;
        position: absolute;
        width: 0
      }

      .rc-slider-tooltip-placement-top .rc-slider-tooltip-arrow {
        border-top-color: #6c6c6c;
        border-width: 4px 4px 0;
        bottom: 4px;
        left: 50%;
        margin-left: -4px
      }

      .OrderOperator-module_operate_order__Dy31o {
        display: flex;
        height: 118px;
        margin: 6px 0
      }

      .OrderOperator-module_img_item__M6EFs {
        align-items: center;
        display: flex;
        flex-direction: column
      }

      .OrderOperator-module_img_item__M6EFs+.OrderOperator-module_img_item__M6EFs {
        margin-left: 20px
      }

      .OrderOperator-module_img__dEUmr {
        border-radius: 4px;
        height: 60px;
        object-fit: cover;
        width: 60px
      }

      .OrderOperator-module_img_item__M6EFs:last-child {
        margin-right: 28px
      }

      .OrderOperator-module_img_item__M6EFs:first-child {
        margin-left: 28px
      }

      .OrderOperator-module_sortable__AqKYO {
        align-items: center;
        display: flex;
        overflow-x: auto
      }

      .OrderOperator-module_icon__P5csN {
        cursor: pointer;
        margin-top: 8px
      }

      .OrderOperator-module_item_drag__6ZxO- {
        background: #fdfdfd;
        border: 1px solid #e6e6e6;
        border-radius: 6px;
        box-shadow: 0 2px 10px rgba(34, 34, 34, .08);
        padding: 0 4px
      }

      .OrderOperator-module_item_drag__6ZxO- .OrderOperator-module_img_item__M6EFs {
        height: 64px;
        width: 64px
      }

      .OrderOperator-module_item_drag__6ZxO- .OrderOperator-module_index__-E8wZ {
        visibility: visible !important
      }

      .OrderOperator-module_index__-E8wZ {
        color: rgba(51, 51, 51, .6);
        font-size: 12px;
        font-weight: 500;
        line-height: 12px;
        margin: 3px 0;
        visibility: hidden
      }

      .OrderOperator-module_index_show__-H0q8 {
        visibility: visible !important
      }

      @media (max-width:959px) {
        .OrderOperator-module_img_item__M6EFs:last-child {
          margin-right: 0
        }

        .OrderOperator-module_sortable__AqKYO {
          padding-right: 20px
        }

        .OrderOperator-module_img_item__M6EFs:first-child {
          margin-left: 20px
        }

        .OrderOperator-module_operate_order__Dy31o {
          height: 108px
        }
      }

      .rc-tabs-dropdown {
        background: #fefefe;
        border: 1px solid #000;
        max-height: 200px;
        overflow: auto;
        position: absolute
      }

      .rc-tabs-dropdown-hidden {
        display: none
      }

      .rc-tabs-dropdown-menu {
        list-style: none;
        margin: 0;
        padding: 0
      }

      .rc-tabs-dropdown-menu-item {
        padding: 4px 8px
      }

      .rc-tabs-dropdown-menu-item-selected {
        background: red
      }

      .rc-tabs-dropdown-menu-item-disabled {
        cursor: not-allowed;
        opacity: .3
      }

      .rc-tabs-content {
        display: flex;
        width: 100%
      }

      .rc-tabs-content-holder {
        flex: auto
      }

      .rc-tabs-content-animated {
        transition: margin .3s
      }

      .rc-tabs-tabpane {
        flex: none;
        width: 100%
      }

      .rc-tabs {
        display: flex
      }

      .rc-tabs-bottom,
      .rc-tabs-top {
        flex-direction: column
      }

      .rc-tabs-bottom .rc-tabs-ink-bar,
      .rc-tabs-top .rc-tabs-ink-bar {
        height: 3px
      }

      .rc-tabs-top .rc-tabs-ink-bar {
        bottom: 0
      }

      .rc-tabs-bottom .rc-tabs-nav {
        order: 1
      }

      .rc-tabs-bottom .rc-tabs-content {
        order: 0
      }

      .rc-tabs-bottom .rc-tabs-ink-bar {
        top: 0
      }

      .rc-tabs-left.rc-tabs-editable .rc-tabs-tab,
      .rc-tabs-right.rc-tabs-editable .rc-tabs-tab {
        padding-right: 32px
      }

      .rc-tabs-left .rc-tabs-nav-wrap,
      .rc-tabs-right .rc-tabs-nav-wrap {
        flex-direction: column
      }

      .rc-tabs-left .rc-tabs-ink-bar,
      .rc-tabs-right .rc-tabs-ink-bar {
        width: 3px
      }

      .rc-tabs-left .rc-tabs-nav,
      .rc-tabs-right .rc-tabs-nav {
        flex-direction: column;
        min-width: 50px
      }

      .rc-tabs-left .rc-tabs-nav-list,
      .rc-tabs-left .rc-tabs-nav-operations,
      .rc-tabs-right .rc-tabs-nav-list,
      .rc-tabs-right .rc-tabs-nav-operations {
        flex: 1 0 auto;
        flex-direction: column
      }

      .rc-tabs-left .rc-tabs-ink-bar {
        right: 0
      }

      .rc-tabs-right .rc-tabs-nav {
        order: 1
      }

      .rc-tabs-right .rc-tabs-content {
        order: 0
      }

      .rc-tabs-right .rc-tabs-ink-bar {
        left: 0
      }

      .rc-tabs-dropdown-rtl,
      .rc-tabs-rtl {
        direction: rtl
      }

      .rc-tabs {
        border: 1px solid gray;
        font-size: 14px;
        overflow: hidden
      }

      .rc-tabs-nav {
        display: flex;
        flex: none;
        position: relative
      }

      .rc-tabs-nav-measure,
      .rc-tabs-nav-wrap {
        display: inline-block;
        display: flex;
        flex: auto;
        overflow: hidden;
        position: relative;
        transform: translate(0);
        white-space: nowrap
      }

      .rc-tabs-nav-measure-ping-left:before,
      .rc-tabs-nav-measure-ping-right:after,
      .rc-tabs-nav-wrap-ping-left:before,
      .rc-tabs-nav-wrap-ping-right:after {
        bottom: 0;
        content: "";
        position: absolute;
        top: 0
      }

      .rc-tabs-nav-measure-ping-left:before,
      .rc-tabs-nav-wrap-ping-left:before {
        border-left: 1px solid red;
        left: 0
      }

      .rc-tabs-nav-measure-ping-right:after,
      .rc-tabs-nav-wrap-ping-right:after {
        border-right: 1px solid red;
        right: 0
      }

      .rc-tabs-nav-measure-ping-bottom:after,
      .rc-tabs-nav-measure-ping-top:before,
      .rc-tabs-nav-wrap-ping-bottom:after,
      .rc-tabs-nav-wrap-ping-top:before {
        content: "";
        left: 0;
        position: absolute;
        right: 0
      }

      .rc-tabs-nav-measure-ping-top:before,
      .rc-tabs-nav-wrap-ping-top:before {
        border-top: 1px solid red;
        top: 0
      }

      .rc-tabs-nav-measure-ping-bottom:after,
      .rc-tabs-nav-wrap-ping-bottom:after {
        border-top: 1px solid red;
        bottom: 0
      }

      .rc-tabs-nav-list {
        display: flex;
        position: relative;
        transition: transform .3s
      }

      .rc-tabs-nav-operations {
        display: flex
      }

      .rc-tabs-nav-operations-hidden {
        pointer-events: none;
        position: absolute;
        visibility: hidden
      }

      .rc-tabs-nav-more {
        background: rgba(255, 0, 0, .1);
        border: 1px solid blue
      }

      .rc-tabs-nav-add {
        background: rgba(0, 255, 0, .1);
        border: 1px solid green
      }

      .rc-tabs-tab {
        align-items: center;
        background: hsla(0, 0%, 100%, .5);
        border: 0;
        cursor: pointer;
        display: flex;
        font-size: 20px;
        font-weight: lighter;
        margin: 0;
        outline: none;
        position: relative
      }

      .rc-tabs-tab-btn,
      .rc-tabs-tab-remove {
        background: transparent;
        border: 0
      }

      .rc-tabs-tab-btn {
        font-weight: inherit;
        line-height: 32px
      }

      .rc-tabs-tab-remove:hover {
        color: red
      }

      .rc-tabs-tab-active {
        font-weight: bolder
      }

      .rc-tabs-ink-bar {
        background: red;
        pointer-events: none;
        position: absolute
      }

      .rc-tabs-ink-bar-animated {
        transition: all .3s
      }

      .rc-tabs-extra-content {
        flex: none
      }

      .DesignUpload-module_design_upload__rei3k {
        display: flex;
        height: 584px
      }

      .DesignUpload-module_pointer__Aud8c {
        cursor: pointer
      }

      .DesignUpload-module_loading__4cg3s {
        transform: scale(.6)
      }

      .Design-module_app_parakeet_design__container__FrvSK * {
        box-sizing: border-box
      }

      .Design-module_app_parakeet_design__container__FrvSK {
        border: 2px solid hsla(0, 0%, 90%, .6);
        border-radius: 8px;
        display: none
      }

      .Design-module_app_parakeet_design__container__FrvSK .canvas-container canvas {
        border-radius: 8px
      }

      .Design-module_show__WZcJY {
        display: block !important
      }

      .Design-module_border_dash__-6wEJ {
        border-style: dashed !important
      }

      .Design-module_hidden__35G87 {
        display: none !important
      }

      .Design-module_upload__d0XVy {
        align-items: center;
        background-color: #fdfdfd;
        border-radius: 8px;
        display: flex;
        justify-content: center
      }

      .Design-module_upload_dialog__fCkjQ {
        border-radius: 8px;
        left: 50%;
        margin: 0 !important;
        padding: 0 !important;
        position: absolute !important;
        top: 50%;
        transform: translateX(-50%) translateY(-50%);
        width: auto !important
      }

      .Design-module_preview_img__B65MY {
        max-height: 100%;
        max-height: 544px;
        max-width: 100%
      }

      .Design-module_footer__YubKC {
        height: 56px
      }

      .Design-module_app_parakeet_design__container__FrvSK .Design-module_upload_dialog__fCkjQ {
        margin: 0 !important
      }

      .Design-module_upload_dialog__fCkjQ .rc-dialog-body {
        padding: 0
      }

      @media screen and (max-width:959px) {
        .Design-module_wrapper__WGJzH {
          padding: 0 16px
        }

        .eva .parakeet-design--wrapper {
          padding: 0
        }

        .flash .parakeet-design--wrapper {
          padding: 0 8px
        }
      }

      .rc-dialog {
        margin: 10px;
        position: relative;
        width: auto
      }

      .rc-dialog-wrap {
        -webkit-overflow-scrolling: touch;
        bottom: 0;
        left: 0;
        outline: 0;
        overflow: auto;
        position: fixed;
        right: 0;
        top: 0;
        z-index: 1050
      }

      .rc-dialog-title {
        font-size: 14px;
        font-weight: 700;
        line-height: 21px;
        margin: 0
      }

      .rc-dialog-content {
        background-clip: padding-box;
        background-color: #fff;
        border: none;
        border-radius: 6px 6px;
        position: relative
      }

      .rc-dialog-close {
        background: transparent;
        border: 0;
        color: #000;
        cursor: pointer;
        filter: alpha(opacity=20);
        font-size: 21px;
        font-weight: 700;
        line-height: 1;
        opacity: .2;
        position: absolute;
        right: 20px;
        text-decoration: none;
        text-shadow: 0 1px 0 #fff;
        top: 12px
      }

      .rc-dialog-close-x:after {
        content: "×"
      }

      .rc-dialog-close:hover {
        filter: alpha(opacity=100);
        opacity: 1;
        text-decoration: none
      }

      .rc-dialog-header {
        background: #fff;
        border-bottom: 1px solid #e9e9e9;
        border-radius: 5px 5px 0 0;
        color: #666;
        padding: 13px 20px 14px
      }

      .rc-dialog-body {
        padding: 20px
      }

      .rc-dialog-footer {
        border-radius: 0 0 5px 5px;
        border-top: 1px solid #e9e9e9;
        padding: 10px 20px;
        text-align: right
      }

      .rc-dialog-zoom-appear,
      .rc-dialog-zoom-enter {
        animation-duration: .3s;
        animation-fill-mode: both;
        animation-play-state: paused;
        animation-timing-function: cubic-bezier(.08, .82, .17, 1);
        opacity: 0
      }

      .rc-dialog-zoom-leave {
        animation-duration: .3s;
        animation-fill-mode: both;
        animation-play-state: paused;
        animation-timing-function: cubic-bezier(.6, .04, .98, .34)
      }

      .rc-dialog-zoom-appear.rc-dialog-zoom-appear-active,
      .rc-dialog-zoom-enter.rc-dialog-zoom-enter-active {
        animation-name: rcDialogZoomIn;
        animation-play-state: running
      }

      .rc-dialog-zoom-leave.rc-dialog-zoom-leave-active {
        animation-name: rcDialogZoomOut;
        animation-play-state: running
      }

      @keyframes rcDialogZoomIn {
        0% {
          opacity: 0;
          transform: scale(0)
        }

        to {
          opacity: 1;
          transform: scale(1)
        }
      }

      @keyframes rcDialogZoomOut {
        0% {
          transform: scale(1)
        }

        to {
          opacity: 0;
          transform: scale(0)
        }
      }

      @media (min-width:768px) {
        .rc-dialog {
          margin: 30px auto;
          width: 600px
        }
      }

      .rc-dialog-mask {
        background-color: #373737;
        background-color: rgba(55, 55, 55, .6);
        bottom: 0;
        filter: alpha(opacity=50);
        height: 100%;
        left: 0;
        position: fixed;
        right: 0;
        top: 0;
        z-index: 1050
      }

      .rc-dialog-mask-hidden {
        display: none
      }

      .rc-dialog-fade-appear,
      .rc-dialog-fade-enter {
        opacity: 0
      }

      .rc-dialog-fade-appear,
      .rc-dialog-fade-enter,
      .rc-dialog-fade-leave {
        animation-duration: .3s;
        animation-fill-mode: both;
        animation-play-state: paused;
        animation-timing-function: cubic-bezier(.55, 0, .55, .2)
      }

      .rc-dialog-fade-appear.rc-dialog-fade-appear-active,
      .rc-dialog-fade-enter.rc-dialog-fade-enter-active {
        animation-name: rcDialogFadeIn;
        animation-play-state: running
      }

      .rc-dialog-fade-leave.rc-dialog-fade-leave-active {
        animation-name: rcDialogFadeOut;
        animation-play-state: running
      }

      @keyframes rcDialogFadeIn {
        0% {
          opacity: 0
        }

        to {
          opacity: 1
        }
      }

      @keyframes rcDialogFadeOut {
        0% {
          opacity: 1
        }

        to {
          opacity: 0
        }
      }

      .rc-notification {
        align-items: flex-end;
        display: flex;
        max-height: 100vh;
        overflow-y: auto;
        padding: 10px;
        position: fixed;
        z-index: 1000
      }

      .rc-notification-top,
      .rc-notification-topLeft,
      .rc-notification-topRight {
        flex-direction: column;
        top: 0
      }

      .rc-notification-topRight {
        right: 0
      }

      .rc-notification-notice {
        background: #fff;
        border: 0 solid transparent;
        border-radius: 3px 3px;
        box-shadow: 0 0 10px rgba(0, 0, 0, .2);
        box-sizing: border-box;
        display: block;
        line-height: 1.5;
        margin: 12px 0;
        position: relative;
        width: auto
      }

      .rc-notification-notice-content {
        padding: 7px 20px 7px 10px
      }

      .rc-notification-notice-closable .rc-notification-notice-content {
        padding-right: 20px
      }

      .rc-notification-notice-close {
        color: #000;
        cursor: pointer;
        filter: alpha(opacity=20);
        font-size: 16px;
        font-weight: 700;
        line-height: 1;
        opacity: .2;
        outline: none;
        position: absolute;
        right: 5px;
        text-decoration: none;
        text-shadow: 0 1px 0 #fff;
        top: 3px
      }

      .rc-notification-notice-close-x:after {
        content: "×"
      }

      .rc-notification-notice-close:hover {
        filter: alpha(opacity=100);
        opacity: 1;
        text-decoration: none
      }

      .rc-notification-fade {
        overflow: hidden;
        transition: all .3s
      }

      .rc-notification-fade-appear-start {
        opacity: 0;
        transform: translateX(100%)
      }

      .rc-notification-fade-appear-active {
        opacity: 1;
        transform: translateX(0)
      }

      .index-module_preview_wrap__wyD3z {
        background-color: #fff;
        height: 100%;
        left: 0;
        pointer-events: auto;
        position: absolute;
        top: 0;
        width: 100%
      }

      .index-module_upload_dialog__zsPoE {
        border-radius: 8px;
        left: 50%;
        margin: 0 !important;
        padding: 0 !important;
        position: absolute !important;
        top: 50%;
        transform: translateX(-50%) translateY(-50%);
        width: auto !important
      }

      .index-module_upload_dialog__zsPoE .rc-dialog-body {
        padding: 0
      }
    </style>
    <style>
      @font-face {
        font-family: 'Bakbak One';
        font-style: normal;
        font-weight: 400;
        font-display: swap;
        src: url('https://fonts.gstatic.com/s/bakbakone/v6/zOL54pXAl6RI-p_ardnu-cNkvg.woff2') format('woff2');
      }
    </style>
    <div id="app-parakeet" data-product-id="78e576c1-249c-4b89-bffb-c02375747c5c"></div>
    <script id="app-parakeet-1539149753700">
      window.appparakeet_data = ""
      window.appparakeet_variants = [{
        "id": "4e316841-574e-494d-b142-695f6182d6c8",
        "product_id": "78e576c1-249c-4b89-bffb-c02375747c5c",
        "title": "Blue",
        "weight_unit": "kg",
        "inventory_quantity": -570,
        "sku": "sku2097625714777",
        "barcode": "",
        "position": 1,
        "option1": "Blue",
        "option2": "",
        "option3": "",
        "note": "",
        "image": {
          "src": "\/\/img.fantaskycdn.com\/8dacb98ea213d8adf5631151c6e3f33d.jpeg",
          "path": "8dacb98ea213d8adf5631151c6e3f33d.jpeg",
          "width": 1200,
          "height": 1200,
          "alt": "",
          "aspect_ratio": 1
        },
        "wholesale_price": [{
          "price": 39.99,
          "min_quantity": 1
        }],
        "weight": "0",
        "compare_at_price": "0",
        "price": "39.99",
        "retail_price": "0",
        "available": true,
        "url": "\/products\/3-ton?variant=4e316841-574e-494d-b142-695f6182d6c8",
        "available_quantity": 999999999,
        "options": [{
          "name": "COLOR",
          "value": "Blue"
        }],
        "off_ratio": 0,
        "flashsale_info": [],
        "sales": 293
      }, {
        "id": "cb97167f-d115-4259-ba64-88bbf268bf14",
        "product_id": "78e576c1-249c-4b89-bffb-c02375747c5c",
        "title": "Black",
        "weight_unit": "kg",
        "inventory_quantity": 734,
        "sku": "sku2097625714778",
        "barcode": "",
        "position": 2,
        "option1": "Black",
        "option2": "",
        "option3": "",
        "note": "",
        "image": {
          "src": "\/\/img.fantaskycdn.com\/ae238034cee4a84fbde5d22233c5c9dc.jpeg",
          "path": "ae238034cee4a84fbde5d22233c5c9dc.jpeg",
          "width": 1200,
          "height": 1200,
          "alt": "",
          "aspect_ratio": 1
        },
        "wholesale_price": [{
          "price": 39.99,
          "min_quantity": 1
        }],
        "weight": "0",
        "compare_at_price": "0",
        "price": "39.99",
        "retail_price": "0",
        "available": true,
        "url": "\/products\/3-ton?variant=cb97167f-d115-4259-ba64-88bbf268bf14",
        "available_quantity": 999999999,
        "options": [{
          "name": "COLOR",
          "value": "Black"
        }],
        "off_ratio": 0,
        "flashsale_info": [],
        "sales": 293
      }, {
        "id": "ee585b98-0d3e-40ae-acbd-4055e5d3b0d2",
        "product_id": "78e576c1-249c-4b89-bffb-c02375747c5c",
        "title": "Green",
        "weight_unit": "kg",
        "inventory_quantity": 813,
        "sku": "sku2097625714779",
        "barcode": "",
        "position": 3,
        "option1": "Green",
        "option2": "",
        "option3": "",
        "note": "",
        "image": {
          "src": "\/\/img.fantaskycdn.com\/3cf1f0b40059b65b7b62bf39d02365c3.jpeg",
          "path": "3cf1f0b40059b65b7b62bf39d02365c3.jpeg",
          "width": 1200,
          "height": 1200,
          "alt": "",
          "aspect_ratio": 1
        },
        "wholesale_price": [{
          "price": 39.99,
          "min_quantity": 1
        }],
        "weight": "0",
        "compare_at_price": "0",
        "price": "39.99",
        "retail_price": "0",
        "available": true,
        "url": "\/products\/3-ton?variant=ee585b98-0d3e-40ae-acbd-4055e5d3b0d2",
        "available_quantity": 999999999,
        "options": [{
          "name": "COLOR",
          "value": "Green"
        }],
        "off_ratio": 0,
        "flashsale_info": [],
        "sales": 293
      }, {
        "id": "adaabd15-e6be-4bb3-a561-6b897e6d0c98",
        "product_id": "78e576c1-249c-4b89-bffb-c02375747c5c",
        "title": "Orange",
        "weight_unit": "kg",
        "inventory_quantity": 763,
        "sku": "sku2097625714780",
        "barcode": "",
        "position": 4,
        "option1": "Orange",
        "option2": "",
        "option3": "",
        "note": "",
        "image": {
          "src": "\/\/img.fantaskycdn.com\/515f441e1f1a3d65cb7910cfc1f9c599.jpeg",
          "path": "515f441e1f1a3d65cb7910cfc1f9c599.jpeg",
          "width": 1200,
          "height": 1200,
          "alt": "",
          "aspect_ratio": 1
        },
        "wholesale_price": [{
          "price": 39.99,
          "min_quantity": 1
        }],
        "weight": "0",
        "compare_at_price": "0",
        "price": "39.99",
        "retail_price": "0",
        "available": true,
        "url": "\/products\/3-ton?variant=adaabd15-e6be-4bb3-a561-6b897e6d0c98",
        "available_quantity": 999999999,
        "options": [{
          "name": "COLOR",
          "value": "Orange"
        }],
        "off_ratio": 0,
        "flashsale_info": [],
        "sales": 293
      }]
      window.appparakeet_images = [{
        "src": "\/\/img.fantaskycdn.com\/515f441e1f1a3d65cb7910cfc1f9c599.jpeg",
        "path": "515f441e1f1a3d65cb7910cfc1f9c599.jpeg",
        "width": 1200,
        "height": 1200,
        "alt": "",
        "aspect_ratio": 1
      }, {
        "src": "\/\/img.fantaskycdn.com\/3cf1f0b40059b65b7b62bf39d02365c3.jpeg",
        "path": "3cf1f0b40059b65b7b62bf39d02365c3.jpeg",
        "width": 1200,
        "height": 1200,
        "alt": "",
        "aspect_ratio": 1
      }, {
        "src": "\/\/img.fantaskycdn.com\/ae238034cee4a84fbde5d22233c5c9dc.jpeg",
        "path": "ae238034cee4a84fbde5d22233c5c9dc.jpeg",
        "width": 1200,
        "height": 1200,
        "alt": "",
        "aspect_ratio": 1
      }, {
        "src": "\/\/img.fantaskycdn.com\/8dacb98ea213d8adf5631151c6e3f33d.jpeg",
        "path": "8dacb98ea213d8adf5631151c6e3f33d.jpeg",
        "width": 1200,
        "height": 1200,
        "alt": "",
        "aspect_ratio": 1
      }, {
        "src": "\/\/img.fantaskycdn.com\/ddcc037f0620bb4172c0a52deffdb541.jpeg",
        "path": "ddcc037f0620bb4172c0a52deffdb541.jpeg",
        "width": 1200,
        "height": 1200,
        "alt": "",
        "aspect_ratio": 1
      }, {
        "src": "\/\/img.fantaskycdn.com\/02557cc336f040f8221f079f5416a8d2.jpeg",
        "path": "02557cc336f040f8221f079f5416a8d2.jpeg",
        "width": 1200,
        "height": 1200,
        "alt": "",
        "aspect_ratio": 1
      }, {
        "src": "\/\/img.fantaskycdn.com\/c7cd7d3dbbf192ebe1c4404e8249fa52.jpeg",
        "path": "c7cd7d3dbbf192ebe1c4404e8249fa52.jpeg",
        "width": 1200,
        "height": 1200,
        "alt": "",
        "aspect_ratio": 1
      }, {
        "src": "\/\/img.fantaskycdn.com\/d4e8c8af821e8a9ecce4687111ea9ef5.jpeg",
        "path": "d4e8c8af821e8a9ecce4687111ea9ef5.jpeg",
        "width": 1200,
        "height": 1200,
        "alt": "",
        "aspect_ratio": 1
      }, {
        "src": "\/\/img.fantaskycdn.com\/db9c09f05b16b32b225d9fb3971087e2.jpeg",
        "path": "db9c09f05b16b32b225d9fb3971087e2.jpeg",
        "width": 1200,
        "height": 1200,
        "alt": "",
        "aspect_ratio": 1
      }]
      try {
        setTimeout(() => {
          console.log('..customer btn loggy..start... 123');
          if (window.appparakeet_data && window.appparakeet_data.length) {
            let addBtn = document.querySelector('[data-track-source=add_to_cart]');
            let buyBtn = document.querySelector('[data-track-source=buy_now]');
            let paypalBtn = document.querySelector('#paypal-express-button-container');
            if (addBtn && !addBtn.getAttribute('disabled')) {
              addBtn.setAttribute('disabled', 'disabled');
            }
            if (buyBtn && !buyBtn.getAttribute('disabled')) {
              buyBtn.setAttribute('disabled', 'disabled');
            }
            if (paypalBtn && !paypalBtn.getAttribute('disabled')) {
              paypalBtn.setAttribute('disabled', 'disabled');
            }
            setTimeout(() => {
              if (addBtn) {
                addBtn.disabled = null;
              }
              if (buyBtn) {
                buyBtn.disabled = null;
              }
              if (paypalBtn) {
                paypalBtn.disabled = null;
              }
              console.log('..customer btn loggy..end...');
            }, 1500);
          }
        }, 50)
      } catch (error) {
        console.log(error);
      }
      //**app-parakeet.js-start**//
      ! function(e, t) {
        "object" == typeof exports && "undefined" != typeof module ? t(require("jsdom"), require("jsdom/lib/jsdom/living/generated/utils"), require("jsdom/lib/jsdom/utils"), require("sortablejs")) : "function" == typeof define && define.amd ? define(
          ["jsdom", "jsdom/lib/jsdom/living/generated/utils", "jsdom/lib/jsdom/utils", "sortablejs"], t) : t((e = "undefined" != typeof globalThis ? globalThis : e || self).require$$0, e.require$$1, e.require$$2, e.require$$0$1)
      }(this, (function(e, t, n, r) {
        "use strict";

        function i(e) {
          return e && "object" == typeof e && "default" in e ? e : {
            default: e
          }
        }
        var o = i(e),
          a = i(t),
          s = i(n),
          l = i(r),
          c = e => {
            var t = document.querySelector("#app-parakeet-style");
            t && (t.innerHTML = "".concat(t.innerHTML, "\n    ").concat(e))
          };

        function u(e, t) {
          var n = Object.keys(e);
          if (Object.getOwnPropertySymbols) {
            var r = Object.getOwnPropertySymbols(e);
            t && (r = r.filter((function(t) {
              return Object.getOwnPropertyDescriptor(e, t).enumerable
            }))), n.push.apply(n, r)
          }
          return n
        }

        function h(e) {
          for (var t = 1; t < arguments.length; t++) {
            var n = null != arguments[t] ? arguments[t] : {};
            t % 2 ? u(Object(n), !0).forEach((function(t) {
              f(e, t, n[t])
            })) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(n)) : u(Object(n)).forEach((function(t) {
              Object.defineProperty(e, t, Object.getOwnPropertyDescriptor(n, t))
            }))
          }
          return e
        }

        function p(e, t, n, r, i, o, a) {
          try {
            var s = e[o](a),
              l = s.value
          } catch (e) {
            return void n(e)
          }
          s.done ? t(l) : Promise.resolve(l).then(r, i)
        }

        function d(e) {
          return function() {
            var t = this,
              n = arguments;
            return new Promise((function(r, i) {
              var o = e.apply(t, n);

              function a(e) {
                p(o, r, i, a, s, "next", e)
              }

              function s(e) {
                p(o, r, i, a, s, "throw", e)
              }
              a(void 0)
            }))
          }
        }

        function f(e, t, n) {
          return t in e ? Object.defineProperty(e, t, {
            value: n,
            enumerable: !0,
            configurable: !0,
            writable: !0
          }) : e[t] = n, e
        }

        function g(e, t) {
          if (null == e) return {};
          var n, r, i = function(e, t) {
            if (null == e) return {};
            var n, r, i = {},
              o = Object.keys(e);
            for (r = 0; r < o.length; r++) n = o[r], t.indexOf(n) >= 0 || (i[n] = e[n]);
            return i
          }(e, t);
          if (Object.getOwnPropertySymbols) {
            var o = Object.getOwnPropertySymbols(e);
            for (r = 0; r < o.length; r++) n = o[r], t.indexOf(n) >= 0 || Object.prototype.propertyIsEnumerable.call(e, n) && (i[n] = e[n])
          }
          return i
        }
        c(
        '#app-parakeet *,#app-parakeet :after,#app-parakeet :before,.plugin-parakeet *,.plugin-parakeet :after,.plugin-parakeet :before{border:0 solid #e5e7eb;box-sizing:border-box}#app-parakeet :after,#app-parakeet :before,.plugin-parakeet :after,.plugin-parakeet :before{--tw-content:""}#app-parakeet html,.plugin-parakeet html{-webkit-text-size-adjust:100%;font-family:ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,Cantarell,Noto Sans,sans-serif,BlinkMacSystemFont,Helvetica Neue,Arial,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;line-height:1.5;tab-size:4}#app-parakeet body,.plugin-parakeet body{line-height:inherit;margin:0}#app-parakeet hr,.plugin-parakeet hr{border-top-width:1px;color:inherit;height:0}#app-parakeet abbr:where([title]),.plugin-parakeet abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}#app-parakeet h1,#app-parakeet h2,#app-parakeet h3,#app-parakeet h4,#app-parakeet h5,#app-parakeet h6,.plugin-parakeet h1,.plugin-parakeet h2,.plugin-parakeet h3,.plugin-parakeet h4,.plugin-parakeet h5,.plugin-parakeet h6{font-size:inherit;font-weight:inherit}#app-parakeet a,.plugin-parakeet a{color:inherit;text-decoration:inherit}#app-parakeet b,#app-parakeet strong,.plugin-parakeet b,.plugin-parakeet strong{font-weight:bolder}#app-parakeet code,#app-parakeet kbd,#app-parakeet pre,#app-parakeet samp,.plugin-parakeet code,.plugin-parakeet kbd,.plugin-parakeet pre,.plugin-parakeet samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em}#app-parakeet small,.plugin-parakeet small{font-size:80%}#app-parakeet sub,#app-parakeet sup,.plugin-parakeet sub,.plugin-parakeet sup{font-size:75%;line-height:0;position:relative;vertical-align:initial}#app-parakeet sub,.plugin-parakeet sub{bottom:-.25em}#app-parakeet sup,.plugin-parakeet sup{top:-.5em}#app-parakeet table,.plugin-parakeet table{border-collapse:collapse;border-color:inherit;text-indent:0}#app-parakeet button,#app-parakeet input,#app-parakeet optgroup,#app-parakeet select,#app-parakeet textarea,.plugin-parakeet button,.plugin-parakeet input,.plugin-parakeet optgroup,.plugin-parakeet select,.plugin-parakeet textarea{color:inherit;font-family:inherit;font-size:100%;font-weight:inherit;line-height:inherit;margin:0;padding:0}#app-parakeet button,#app-parakeet select,.plugin-parakeet button,.plugin-parakeet select{text-transform:none}#app-parakeet [type=button],#app-parakeet [type=reset],#app-parakeet [type=submit],#app-parakeet button,.plugin-parakeet [type=button],.plugin-parakeet [type=reset],.plugin-parakeet [type=submit],.plugin-parakeet button{-webkit-appearance:button;background-color:initial;background-image:none}#app-parakeet :-moz-focusring,.plugin-parakeet :-moz-focusring{outline:auto}#app-parakeet :-moz-ui-invalid,.plugin-parakeet :-moz-ui-invalid{box-shadow:none}#app-parakeet progress,.plugin-parakeet progress{vertical-align:initial}#app-parakeet ::-webkit-inner-spin-button,#app-parakeet ::-webkit-outer-spin-button,.plugin-parakeet ::-webkit-inner-spin-button,.plugin-parakeet ::-webkit-outer-spin-button{height:auto}#app-parakeet [type=search],.plugin-parakeet [type=search]{-webkit-appearance:textfield;outline-offset:-2px}#app-parakeet ::-webkit-search-decoration,.plugin-parakeet ::-webkit-search-decoration{-webkit-appearance:none}#app-parakeet ::-webkit-file-upload-button,.plugin-parakeet ::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}#app-parakeet summary,.plugin-parakeet summary{display:list-item}#app-parakeet blockquote,#app-parakeet dd,#app-parakeet dl,#app-parakeet figure,#app-parakeet h1,#app-parakeet h2,#app-parakeet h3,#app-parakeet h4,#app-parakeet h5,#app-parakeet h6,#app-parakeet hr,#app-parakeet p,#app-parakeet pre,.plugin-parakeet blockquote,.plugin-parakeet dd,.plugin-parakeet dl,.plugin-parakeet figure,.plugin-parakeet h1,.plugin-parakeet h2,.plugin-parakeet h3,.plugin-parakeet h4,.plugin-parakeet h5,.plugin-parakeet h6,.plugin-parakeet hr,.plugin-parakeet p,.plugin-parakeet pre{margin:0}#app-parakeet fieldset,.plugin-parakeet fieldset{margin:0;padding:0}#app-parakeet legend,.plugin-parakeet legend{padding:0}#app-parakeet menu,#app-parakeet ol,#app-parakeet ul,.plugin-parakeet menu,.plugin-parakeet ol,.plugin-parakeet ul{list-style:none;margin:0;padding:0}#app-parakeet textarea,.plugin-parakeet textarea{resize:vertical}#app-parakeet input::-webkit-input-placeholder,#app-parakeet textarea::-webkit-input-placeholder,.plugin-parakeet input::-webkit-input-placeholder,.plugin-parakeet textarea::-webkit-input-placeholder{color:#9ca3af;opacity:1}#app-parakeet input::placeholder,#app-parakeet textarea::placeholder,.plugin-parakeet input::placeholder,.plugin-parakeet textarea::placeholder{color:#9ca3af;opacity:1}#app-parakeet [role=button],#app-parakeet button,.plugin-parakeet [role=button],.plugin-parakeet button{cursor:pointer}#app-parakeet :disabled,.plugin-parakeet :disabled{cursor:default}#app-parakeet audio,#app-parakeet canvas,#app-parakeet embed,#app-parakeet iframe,#app-parakeet img,#app-parakeet object,#app-parakeet svg,#app-parakeet video,.plugin-parakeet audio,.plugin-parakeet canvas,.plugin-parakeet embed,.plugin-parakeet iframe,.plugin-parakeet img,.plugin-parakeet object,.plugin-parakeet svg,.plugin-parakeet video{display:block;vertical-align:middle}#app-parakeet img,#app-parakeet video,.plugin-parakeet img,.plugin-parakeet video{height:auto;max-width:100%}#app-parakeet *,#app-parakeet :after,#app-parakeet :before,.plugin-parakeet *,.plugin-parakeet :after,.plugin-parakeet :before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 transparent;--tw-ring-shadow:0 0 transparent;--tw-shadow:0 0 transparent;--tw-shadow-colored:0 0 transparent;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }#app-parakeet ::-webkit-backdrop,.plugin-parakeet ::-webkit-backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 transparent;--tw-ring-shadow:0 0 transparent;--tw-shadow:0 0 transparent;--tw-shadow-colored:0 0 transparent;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }#app-parakeet ::backdrop,.plugin-parakeet ::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 transparent;--tw-ring-shadow:0 0 transparent;--tw-shadow:0 0 transparent;--tw-shadow-colored:0 0 transparent;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }#app-parakeet .pk-pointer-events-none,.plugin-parakeet .pk-pointer-events-none{pointer-events:none}#app-parakeet .pk-absolute,.plugin-parakeet .pk-absolute{position:absolute}#app-parakeet .pk-relative,.plugin-parakeet .pk-relative{position:relative}#app-parakeet .pk-top-0,.plugin-parakeet .pk-top-0{top:0}#app-parakeet .pk-left-0,.plugin-parakeet .pk-left-0{left:0}#app-parakeet .pk--top-3,.plugin-parakeet .pk--top-3{top:-.75rem}#app-parakeet .pk--right-3,.plugin-parakeet .pk--right-3{right:-.75rem}#app-parakeet .pk-z-\\[9999\\],.plugin-parakeet .pk-z-\\[9999\\]{z-index:9999}#app-parakeet .pk-my-6,.plugin-parakeet .pk-my-6{margin-bottom:1.5rem;margin-top:1.5rem}#app-parakeet .pk-mx-1,.plugin-parakeet .pk-mx-1{margin-left:.25rem;margin-right:.25rem}#app-parakeet .pk--mx-4,.plugin-parakeet .pk--mx-4{margin-left:-1rem;margin-right:-1rem}#app-parakeet .pk-my-0,.plugin-parakeet .pk-my-0{margin-bottom:0;margin-top:0}#app-parakeet .pk-mb-4,.plugin-parakeet .pk-mb-4{margin-bottom:1rem}#app-parakeet .pk-mr-2\\.5,.plugin-parakeet .pk-mr-2\\.5{margin-right:.625rem}#app-parakeet .pk-mr-2,.plugin-parakeet .pk-mr-2{margin-right:.5rem}#app-parakeet .pk-ml-1\\.5,.plugin-parakeet .pk-ml-1\\.5{margin-left:.375rem}#app-parakeet .pk-ml-1,.plugin-parakeet .pk-ml-1{margin-left:.25rem}#app-parakeet .pk-mb-3,.plugin-parakeet .pk-mb-3{margin-bottom:.75rem}#app-parakeet .pk-mb-2\\.5,.plugin-parakeet .pk-mb-2\\.5{margin-bottom:.625rem}#app-parakeet .pk-mb-2,.plugin-parakeet .pk-mb-2{margin-bottom:.5rem}#app-parakeet .pk-mt-2,.plugin-parakeet .pk-mt-2{margin-top:.5rem}#app-parakeet .\\!pk-mt-7,.plugin-parakeet .\\!pk-mt-7{margin-top:1.75rem!important}#app-parakeet .pk-ml-2,.plugin-parakeet .pk-ml-2{margin-left:.5rem}#app-parakeet .pk--mt-0\\.5,.plugin-parakeet .pk--mt-0\\.5{margin-top:-.125rem}#app-parakeet .pk--mb-1\\.5,.plugin-parakeet .pk--mb-1\\.5{margin-bottom:-.375rem}#app-parakeet .pk--mt-0,.plugin-parakeet .pk--mt-0{margin-top:0}#app-parakeet .pk--mb-1,.plugin-parakeet .pk--mb-1{margin-bottom:-.25rem}#app-parakeet .\\!pk-mb-0,.plugin-parakeet .\\!pk-mb-0{margin-bottom:0!important}#app-parakeet .pk-ml-3,.plugin-parakeet .pk-ml-3{margin-left:.75rem}#app-parakeet .pk-ml-auto,.plugin-parakeet .pk-ml-auto{margin-left:auto}#app-parakeet .pk-mr-4,.plugin-parakeet .pk-mr-4{margin-right:1rem}#app-parakeet .pk--mt-1\\.5,.plugin-parakeet .pk--mt-1\\.5{margin-top:-.375rem}#app-parakeet .pk--ml-2,.plugin-parakeet .pk--ml-2{margin-left:-.5rem}#app-parakeet .pk--mt-1,.plugin-parakeet .pk--mt-1{margin-top:-.25rem}#app-parakeet .pk-mt-3,.plugin-parakeet .pk-mt-3{margin-top:.75rem}#app-parakeet .pk-block,.plugin-parakeet .pk-block{display:block}#app-parakeet .pk-inline-block,.plugin-parakeet .pk-inline-block{display:inline-block}#app-parakeet .pk-flex,.plugin-parakeet .pk-flex{display:flex}#app-parakeet .pk-grid,.plugin-parakeet .pk-grid{display:grid}#app-parakeet .pk-h-4\\.5,.plugin-parakeet .pk-h-4\\.5{height:1.125rem}#app-parakeet .pk-h-4,.plugin-parakeet .pk-h-4{height:1rem}#app-parakeet .pk-h-11\\.5,.plugin-parakeet .pk-h-11\\.5{height:2.875rem}#app-parakeet .pk-h-11,.plugin-parakeet .pk-h-11{height:2.75rem}#app-parakeet .pk-h-full,.plugin-parakeet .pk-h-full{height:100%}#app-parakeet .pk-h-18,.plugin-parakeet .pk-h-18{height:4.5rem}#app-parakeet .pk-h-23,.plugin-parakeet .pk-h-23{height:5.75rem}#app-parakeet .pk-h-20,.plugin-parakeet .pk-h-20{height:5rem}#app-parakeet .pk-w-4\\.5,.plugin-parakeet .pk-w-4\\.5{width:1.125rem}#app-parakeet .pk-w-4,.plugin-parakeet .pk-w-4{width:1rem}#app-parakeet .pk-w-full,.plugin-parakeet .pk-w-full{width:100%}#app-parakeet .pk-w-11,.plugin-parakeet .pk-w-11{width:2.75rem}#app-parakeet .pk-w-18,.plugin-parakeet .pk-w-18{width:4.5rem}#app-parakeet .pk-w-23,.plugin-parakeet .pk-w-23{width:5.75rem}#app-parakeet .pk-w-20,.plugin-parakeet .pk-w-20{width:5rem}#app-parakeet .pk-w-fit,.plugin-parakeet .pk-w-fit{width:-webkit-fit-content;width:fit-content}#app-parakeet .pk-min-w-\\[46px\\],.plugin-parakeet .pk-min-w-\\[46px\\]{min-width:46px}#app-parakeet .pk-min-w-0,.plugin-parakeet .pk-min-w-0{min-width:0}#app-parakeet .pk-max-w-\\[50vw\\],.plugin-parakeet .pk-max-w-\\[50vw\\]{max-width:50vw}#app-parakeet .pk-flex-none,.plugin-parakeet .pk-flex-none{flex:none}#app-parakeet .pk-flex-1,.plugin-parakeet .pk-flex-1{flex:1 1 0%}#app-parakeet .pk-cursor-pointer,.plugin-parakeet .pk-cursor-pointer{cursor:pointer}#app-parakeet .pk-cursor-text,.plugin-parakeet .pk-cursor-text{cursor:text}#app-parakeet .pk-select-none,.plugin-parakeet .pk-select-none{-webkit-user-select:none;user-select:none}#app-parakeet .pk-appearance-none,.plugin-parakeet .pk-appearance-none{-webkit-appearance:none;appearance:none}#app-parakeet .pk-grid-flow-col,.plugin-parakeet .pk-grid-flow-col{grid-auto-flow:column}#app-parakeet .pk-grid-rows-\\[auto\\,auto\\,auto\\,auto\\],.plugin-parakeet .pk-grid-rows-\\[auto\\,auto\\,auto\\,auto\\]{grid-template-rows:auto auto auto auto}#app-parakeet .pk-flex-col,.plugin-parakeet .pk-flex-col{flex-direction:column}#app-parakeet .pk-flex-wrap,.plugin-parakeet .pk-flex-wrap{flex-wrap:wrap}#app-parakeet .pk-items-center,.plugin-parakeet .pk-items-center{align-items:center}#app-parakeet .pk-justify-center,.plugin-parakeet .pk-justify-center{justify-content:center}#app-parakeet .pk-gap-4,.plugin-parakeet .pk-gap-4{gap:1rem}#app-parakeet .pk-gap-x-3,.plugin-parakeet .pk-gap-x-3{column-gap:.75rem}#app-parakeet .pk-gap-y-4,.plugin-parakeet .pk-gap-y-4{row-gap:1rem}#app-parakeet .pk-space-y-4>:not([hidden])~:not([hidden]),.plugin-parakeet .pk-space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(1rem*var(--tw-space-y-reverse));margin-top:calc(1rem*(1 - var(--tw-space-y-reverse)))}#app-parakeet .pk-space-y-5>:not([hidden])~:not([hidden]),.plugin-parakeet .pk-space-y-5>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(1.25rem*var(--tw-space-y-reverse));margin-top:calc(1.25rem*(1 - var(--tw-space-y-reverse)))}#app-parakeet .pk-self-center,.plugin-parakeet .pk-self-center{align-self:center}#app-parakeet .pk-overflow-hidden,.plugin-parakeet .pk-overflow-hidden{overflow:hidden}#app-parakeet .pk-truncate,.plugin-parakeet .pk-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}#app-parakeet .pk-break-words,.plugin-parakeet .pk-break-words{overflow-wrap:break-word}#app-parakeet .pk-break-all,.plugin-parakeet .pk-break-all{word-break:break-all}#app-parakeet .pk-rounded-full,.plugin-parakeet .pk-rounded-full{border-radius:9999px}#app-parakeet .pk-rounded-md,.plugin-parakeet .pk-rounded-md{border-radius:.375rem}#app-parakeet .pk-rounded,.plugin-parakeet .pk-rounded{border-radius:.25rem}#app-parakeet .pk-rounded-\\[3px\\],.plugin-parakeet .pk-rounded-\\[3px\\]{border-radius:3px}#app-parakeet .pk-border-\\[5px\\],.plugin-parakeet .pk-border-\\[5px\\]{border-width:5px}#app-parakeet .pk-border-2,.plugin-parakeet .pk-border-2{border-width:2px}#app-parakeet .pk-border,.plugin-parakeet .pk-border{border-width:1px}#app-parakeet .pk-border-0,.plugin-parakeet .pk-border-0{border-width:0}#app-parakeet .pk-border-solid,.plugin-parakeet .pk-border-solid{border-style:solid}#app-parakeet .pk-border-dashed,.plugin-parakeet .pk-border-dashed{border-style:dashed}#app-parakeet .pk-border-transparent,.plugin-parakeet .pk-border-transparent{border-color:transparent}#app-parakeet .pk-border-\\[\\#333\\],.plugin-parakeet .pk-border-\\[\\#333\\]{--tw-border-opacity:1;border-color:rgba(51,51,51,var(--tw-border-opacity))}#app-parakeet .pk-border-\\[\\#D1D1D1\\],.plugin-parakeet .pk-border-\\[\\#D1D1D1\\]{--tw-border-opacity:1;border-color:rgba(209,209,209,var(--tw-border-opacity))}#app-parakeet .pk-border-\\[\\#DB393A\\],.plugin-parakeet .pk-border-\\[\\#DB393A\\]{--tw-border-opacity:1;border-color:rgba(219,57,58,var(--tw-border-opacity))}#app-parakeet .pk-border-\\[\\#d9d9d9\\],.plugin-parakeet .pk-border-\\[\\#d9d9d9\\]{--tw-border-opacity:1;border-color:rgba(217,217,217,var(--tw-border-opacity))}#app-parakeet .pk-border-t-white,.plugin-parakeet .pk-border-t-white{--tw-border-opacity:1;border-top-color:rgba(255,255,255,var(--tw-border-opacity))}#app-parakeet .pk-bg-\\[\\#E6E6E6\\]\\/40,.plugin-parakeet .pk-bg-\\[\\#E6E6E6\\]\\/40{background-color:hsla(0,0%,90%,.4)}#app-parakeet .pk-bg-white,.plugin-parakeet .pk-bg-white{--tw-bg-opacity:1;background-color:rgba(255,255,255,var(--tw-bg-opacity))}#app-parakeet .pk-bg-transparent,.plugin-parakeet .pk-bg-transparent{background-color:initial}#app-parakeet .pk-bg-\\[\\#fdfdfd\\],.plugin-parakeet .pk-bg-\\[\\#fdfdfd\\]{--tw-bg-opacity:1;background-color:rgba(253,253,253,var(--tw-bg-opacity))}#app-parakeet .pk-bg-\\[\\#F6F6F7\\],.plugin-parakeet .pk-bg-\\[\\#F6F6F7\\]{--tw-bg-opacity:1;background-color:rgba(246,246,247,var(--tw-bg-opacity))}#app-parakeet .pk-object-contain,.plugin-parakeet .pk-object-contain{object-fit:contain}#app-parakeet .pk-object-cover,.plugin-parakeet .pk-object-cover{object-fit:cover}#app-parakeet .pk-object-center,.plugin-parakeet .pk-object-center{object-position:center}#app-parakeet .pk-py-2,.plugin-parakeet .pk-py-2{padding-bottom:.5rem;padding-top:.5rem}#app-parakeet .pk-px-3,.plugin-parakeet .pk-px-3{padding-left:.75rem;padding-right:.75rem}#app-parakeet .pk-px-5,.plugin-parakeet .pk-px-5{padding-left:1.25rem;padding-right:1.25rem}#app-parakeet .pk-px-4,.plugin-parakeet .pk-px-4{padding-left:1rem;padding-right:1rem}#app-parakeet .pk-py-1\\.5,.plugin-parakeet .pk-py-1\\.5{padding-bottom:.375rem;padding-top:.375rem}#app-parakeet .pk-py-1,.plugin-parakeet .pk-py-1{padding-bottom:.25rem;padding-top:.25rem}#app-parakeet .pk-py-3\\.5,.plugin-parakeet .pk-py-3\\.5{padding-bottom:.875rem;padding-top:.875rem}#app-parakeet .pk-py-3,.plugin-parakeet .pk-py-3{padding-bottom:.75rem;padding-top:.75rem}#app-parakeet .pk-pt-2,.plugin-parakeet .pk-pt-2{padding-top:.5rem}#app-parakeet .pk-pb-1,.plugin-parakeet .pk-pb-1{padding-bottom:.25rem}#app-parakeet .pk-pl-4,.plugin-parakeet .pk-pl-4{padding-left:1rem}#app-parakeet .pk-pr-10\\.5,.plugin-parakeet .pk-pr-10\\.5{padding-right:2.625rem}#app-parakeet .pk-pr-10,.plugin-parakeet .pk-pr-10{padding-right:2.5rem}#app-parakeet .\\!pk-text-\\[13px\\],.plugin-parakeet .\\!pk-text-\\[13px\\]{font-size:13px!important}#app-parakeet .\\!pk-text-\\[14px\\],.plugin-parakeet .\\!pk-text-\\[14px\\]{font-size:14px!important}#app-parakeet .\\!pk-text-\\[15px\\],.plugin-parakeet .\\!pk-text-\\[15px\\]{font-size:15px!important}#app-parakeet .pk-text-\\[14px\\],.plugin-parakeet .pk-text-\\[14px\\]{font-size:14px}#app-parakeet .pk-text-sm,.plugin-parakeet .pk-text-sm{font-size:.875rem;line-height:1.25rem}#app-parakeet .pk-text-xs,.plugin-parakeet .pk-text-xs{font-size:.75rem;line-height:1rem}#app-parakeet .pk-text-\\[15px\\],.plugin-parakeet .pk-text-\\[15px\\]{font-size:15px}#app-parakeet .\\!pk-text-\\[16px\\],.plugin-parakeet .\\!pk-text-\\[16px\\]{font-size:16px!important}#app-parakeet .pk-font-semibold,.plugin-parakeet .pk-font-semibold{font-weight:600}#app-parakeet .pk-font-medium,.plugin-parakeet .pk-font-medium{font-weight:500}#app-parakeet .pk-leading-none,.plugin-parakeet .pk-leading-none{line-height:1}#app-parakeet .pk-leading-5,.plugin-parakeet .pk-leading-5{line-height:1.25rem}#app-parakeet .pk-leading-\\[0px\\],.plugin-parakeet .pk-leading-\\[0px\\]{line-height:0px}#app-parakeet .pk-text-\\[\\#DB393A\\],.plugin-parakeet .pk-text-\\[\\#DB393A\\]{--tw-text-opacity:1;color:rgba(219,57,58,var(--tw-text-opacity))}#app-parakeet .pk-text-\\[\\#7A7A7A\\],.plugin-parakeet .pk-text-\\[\\#7A7A7A\\]{--tw-text-opacity:1;color:rgba(122,122,122,var(--tw-text-opacity))}#app-parakeet .pk-text-\\[\\#d2d5d8\\],.plugin-parakeet .pk-text-\\[\\#d2d5d8\\]{--tw-text-opacity:1;color:rgba(210,213,216,var(--tw-text-opacity))}#app-parakeet .pk-text-\\[\\#93989D\\],.plugin-parakeet .pk-text-\\[\\#93989D\\]{--tw-text-opacity:1;color:rgba(147,152,157,var(--tw-text-opacity))}#app-parakeet .pk-text-\\[\\#292929\\]\\/75,.plugin-parakeet .pk-text-\\[\\#292929\\]\\/75{color:rgba(41,41,41,.75)}#app-parakeet .pk-text-opacity-80,.plugin-parakeet .pk-text-opacity-80{--tw-text-opacity:0.8}#app-parakeet .pk-opacity-0,.plugin-parakeet .pk-opacity-0{opacity:0}#app-parakeet .pk-shadow-\\[0px_4px_18px_rgb\\(0_0_0_\\/_10\\%\\)\\],.plugin-parakeet .pk-shadow-\\[0px_4px_18px_rgb\\(0_0_0_\\/_10\\%\\)\\]{--tw-shadow:0px 4px 18px rgba(0,0,0,.1);--tw-shadow-colored:0px 4px 18px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 transparent),var(--tw-ring-shadow,0 0 transparent),var(--tw-shadow)}#app-parakeet .pk-outline-none,.plugin-parakeet .pk-outline-none{outline:2px solid transparent;outline-offset:2px}#app-parakeet .pk-ring-2,.plugin-parakeet .pk-ring-2{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 transparent)}#app-parakeet .pk-ring-\\[\\#333\\],.plugin-parakeet .pk-ring-\\[\\#333\\]{--tw-ring-opacity:1;--tw-ring-color:rgba(51,51,51,var(--tw-ring-opacity))}#app-parakeet .pk-ring-offset-2,.plugin-parakeet .pk-ring-offset-2{--tw-ring-offset-width:2px}#app-parakeet .placeholder\\:pk-text-\\[color\\:\\#93989D\\]::-webkit-input-placeholder,.plugin-parakeet .placeholder\\:pk-text-\\[color\\:\\#93989D\\]::-webkit-input-placeholder{--tw-text-opacity:1;color:rgba(147,152,157,var(--tw-text-opacity))}#app-parakeet .placeholder\\:pk-text-\\[color\\:\\#93989D\\]::placeholder,.plugin-parakeet .placeholder\\:pk-text-\\[color\\:\\#93989D\\]::placeholder{--tw-text-opacity:1;color:rgba(147,152,157,var(--tw-text-opacity))}#app-parakeet .last\\:pk-mb-0:last-child,.plugin-parakeet .last\\:pk-mb-0:last-child{margin-bottom:0}#app-parakeet .hover\\:pk-bg-\\[\\#f6f6f7\\]:hover,.plugin-parakeet .hover\\:pk-bg-\\[\\#f6f6f7\\]:hover{--tw-bg-opacity:1;background-color:rgba(246,246,247,var(--tw-bg-opacity))}#app-parakeet .focus\\:pk-border-\\[\\#333\\]:focus,.plugin-parakeet .focus\\:pk-border-\\[\\#333\\]:focus{--tw-border-opacity:1;border-color:rgba(51,51,51,var(--tw-border-opacity))}@media (min-width:768px){#app-parakeet .md\\:pk-max-w-\\[33vw\\],.plugin-parakeet .md\\:pk-max-w-\\[33vw\\]{max-width:33vw}#app-parakeet .md\\:pk-text-base,.plugin-parakeet .md\\:pk-text-base{font-size:1rem;line-height:1.5rem}#app-parakeet .md\\:pk-text-sm,.plugin-parakeet .md\\:pk-text-sm{font-size:.875rem;line-height:1.25rem}}@media (min-width:1024px){#app-parakeet .lg\\:pk-px-8,.plugin-parakeet .lg\\:pk-px-8{padding-left:2rem;padding-right:2rem}}');
        var m = function() {
            return fetch(...arguments).then((e => e.ok ? e : Promise.reject(e)))
          },
          v = () => m("/api/file/signv2").then((e => e.json())),
          _ = (e, t) => m("/api/file/signv2").then((e => e.json())).then((n => {
            var r = n.data,
              i = null == r ? void 0 : r.write_host,
              {
                policy: o,
                access_id: a,
                sign: s,
                read_host: l
              } = r,
              c = new FormData;
            return c.append("policy", o), c.append("OSSAccessKeyId", a), c.append("success_action_status", 200), c.append("signature", s), c.append("x-oss-forbid-overwrite", !0), c.append("key", t), c.append("file", e), ((e, t, n) => m(e, {
              method: "POST",
              body: t
            }).then((() => n)).catch((e => {
              if (String(e).includes("409")) return n;
              throw new Error
            })))(i, c, l + t)
          })),
          b = e => 0 === e.indexOf("image/"),
          y = e => e.split("/")[1] || "",
          w = function() {
            var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : "",
              t = e.split("/"),
              n = t[t.length - 1],
              r = n.split(/#|\?/)[0];
            return (/\.[^./\\]*$/.exec(r) || [""])[0]
          },
          x = e => {
            if (e.type && !e.thumbUrl) return b(e.type);
            var t = e.thumbUrl || e.url || "",
              n = w(t);
            return !(!/^data:image\//.test(t) && !/(webp|svg|png|gif|jpg|jpeg|jfif|bmp|dpg|ico)$/i.test(n)) || !/^data:/.test(t) && !n
          },
          k = 200;

        function C(e) {
          return new Promise((t => {
            e.type && b(e.type) ? "gif" !== y(e.type) ? (t => {
              var n = document.createElement("canvas");
              n.width = k, n.height = k, n.style.cssText = "position: fixed; left: 0; top: 0; width: ".concat(k, "px; height: ").concat(k, "px; z-index: 9999; display: none;"), document.body.appendChild(n);
              var r = n.getContext("2d"),
                i = new Image;
              i.onload = () => {
                var {
                  width: e,
                  height: o
                } = i, a = k, s = k, l = 0, c = 0;
                e > o ? c = -((s = o * (k / e)) - a) / 2 : l = -((a = e * (k / o)) - s) / 2, r.drawImage(i, l, c, a, s);
                var u = n.toDataURL();
                document.body.removeChild(n), window.URL.revokeObjectURL(i.src), i.src = null, t(u)
              }, i.src = window.URL.createObjectURL(e)
            })(t) : (t => {
              var n = new FileReader;
              n.onload = () => t(n.result), n.readAsDataURL(e)
            })(t) : t("")
          }))
        }
        var S = e => "".concat(window.SHOP_PARAMS.shop_id, "/").concat((new Date).getTime(), ".").concat(e),
          E = (e, t, n) => {
            for (var r = e.split(","), i = window.atob(r[1]), o = i.length, a = new Uint8Array(o); o--;) a[o] = i.charCodeAt(o);
            return new File([a.buffer], t, {
              type: n || "image/png"
            })
          },
          T = 100,
          O = 1890,
          A = "png",
          P = "uploadSuccessEvent",
          M = "removeSuccessEvent",
          D = "addDesignImageEvent",
          I = "deleteDesignEvent",
          R = "loading",
          j = "success",
          N = "en-us",
          L = 10485760,
          F = "swatch_preview_click",
          B = "upload_preview",
          z = "text_preview",
          H = "upload_img_click",
          U = "clear_active";
        var W = new class {
            constructor() {
              f(this, "instances", []), f(this, "imgOrders", [])
            }
            addInstance(e, t) {
              e && (this.instances[t] = e)
            }
            addImgOrders(e, t) {
              !this.imgOrders[t] && e && (this.imgOrders[t] = e)
            }
            createImgs() {
              var e = this;
              return d((function*() {
                for (var t = [], n = 0; n < (null === (r = e.instances) || void 0 === r ? void 0 : r.length); n++) {
                  var r, i = yield e._createImg(e.instances[n], n);
                  i && t.push(i)
                }
                return t
              }))()
            }
            _createImg(e, t) {
              var n = this;
              return d((function*() {
                var r, i, o;
                if (null === (r = e.getObjects()) || void 0 === r || !r.length) return null;
                e.discardActiveObject(), null === (i = e.getObjects("rect")) || void 0 === i || i.forEach((function(e) {
                  e.set({
                    fill: "transparent"
                  })
                })), null === (o = e.getObjects()) || void 0 === o || o.forEach((function(e) {
                  "text" == e.configTye && e.previewOrder && e.moveTo(e.previewOrder)
                }));
                var a = e.toDataURL({
                    multiplier: 2,
                    format: A
                  }),
                  s = S(A),
                  l = "";
                try {
                  l = yield _(E(a), s)
                } catch (e) {
                  return null
                }
                return {
                  type: "preview",
                  key: ["composite", "image"].concat(n.imgOrders[t]).join("_"),
                  value: l
                }
              }))()
            }
          },
          V = function(e, t) {
            return V = Object.setPrototypeOf || {
              __proto__: []
            }
            instanceof Array && function(e, t) {
              e.__proto__ = t
            } || function(e, t) {
              for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n])
            }, V(e, t)
          };

        function X(e, t) {
          if ("function" != typeof t && null !== t) throw new TypeError("Class extends value " + String(t) + " is not a constructor or null");

          function n() {
            this.constructor = e
          }
          V(e, t), e.prototype = null === t ? Object.create(t) : (n.prototype = t.prototype, new n)
        }
        var G = function() {
          return G = Object.assign || function(e) {
            for (var t, n = 1, r = arguments.length; n < r; n++)
              for (var i in t = arguments[n]) Object.prototype.hasOwnProperty.call(t, i) && (e[i] = t[i]);
            return e
          }, G.apply(this, arguments)
        };

        function Y(e, t) {
          var n = {};
          for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && t.indexOf(r) < 0 && (n[r] = e[r]);
          if (null != e && "function" == typeof Object.getOwnPropertySymbols) {
            var i = 0;
            for (r = Object.getOwnPropertySymbols(e); i < r.length; i++) t.indexOf(r[i]) < 0 && Object.prototype.propertyIsEnumerable.call(e, r[i]) && (n[r[i]] = e[r[i]])
          }
          return n
        }

        function q(e, t, n, r) {
          return new(n || (n = Promise))((function(i, o) {
            function a(e) {
              try {
                l(r.next(e))
              } catch (e) {
                o(e)
              }
            }

            function s(e) {
              try {
                l(r.throw(e))
              } catch (e) {
                o(e)
              }
            }

            function l(e) {
              var t;
              e.done ? i(e.value) : (t = e.value, t instanceof n ? t : new n((function(e) {
                e(t)
              }))).then(a, s)
            }
            l((r = r.apply(e, t || [])).next())
          }))
        }

        function K(e, t) {
          var n, r, i, o, a = {
            label: 0,
            sent: function() {
              if (1 & i[0]) throw i[1];
              return i[1]
            },
            trys: [],
            ops: []
          };
          return o = {
            next: s(0),
            throw: s(1),
            return: s(2)
          }, "function" == typeof Symbol && (o[Symbol.iterator] = function() {
            return this
          }), o;

          function s(s) {
            return function(l) {
              return function(s) {
                if (n) throw new TypeError("Generator is already executing.");
                for (; o && (o = 0, s[0] && (a = 0)), a;) try {
                  if (n = 1, r && (i = 2 & s[0] ? r.return : s[0] ? r.throw || ((i = r.return) && i.call(r), 0) : r.next) && !(i = i.call(r, s[1])).done) return i;
                  switch (r = 0, i && (s = [2 & s[0], i.value]), s[0]) {
                    case 0:
                    case 1:
                      i = s;
                      break;
                    case 4:
                      return a.label++, {
                        value: s[1],
                        done: !1
                      };
                    case 5:
                      a.label++, r = s[1], s = [0];
                      continue;
                    case 7:
                      s = a.ops.pop(), a.trys.pop();
                      continue;
                    default:
                      if (!(i = a.trys, (i = i.length > 0 && i[i.length - 1]) || 6 !== s[0] && 2 !== s[0])) {
                        a = 0;
                        continue
                      }
                      if (3 === s[0] && (!i || s[1] > i[0] && s[1] < i[3])) {
                        a.label = s[1];
                        break
                      }
                      if (6 === s[0] && a.label < i[1]) {
                        a.label = i[1], i = s;
                        break
                      }
                      if (i && a.label < i[2]) {
                        a.label = i[2], a.ops.push(s);
                        break
                      }
                      i[2] && a.ops.pop(), a.trys.pop();
                      continue
                  }
                  s = t.call(e, a)
                } catch (e) {
                  s = [6, e], r = 0
                } finally {
                  n = i = 0
                }
                if (5 & s[0]) throw s[1];
                return {
                  value: s[0] ? s[1] : void 0,
                  done: !0
                }
              }([s, l])
            }
          }
        }

        function Z(e, t) {
          var n = "function" == typeof Symbol && e[Symbol.iterator];
          if (!n) return e;
          var r, i, o = n.call(e),
            a = [];
          try {
            for (;
              (void 0 === t || t-- > 0) && !(r = o.next()).done;) a.push(r.value)
          } catch (e) {
            i = {
              error: e
            }
          } finally {
            try {
              r && !r.done && (n = o.return) && n.call(o)
            } finally {
              if (i) throw i.error
            }
          }
          return a
        }

        function $(e, t, n) {
          if (n || 2 === arguments.length)
            for (var r, i = 0, o = t.length; i < o; i++) !r && i in t || (r || (r = Array.prototype.slice.call(t, 0, i)), r[i] = t[i]);
          return e.concat(r || Array.prototype.slice.call(t))
        }
        var J, Q, ee, te, ne, re, ie, oe = {},
          ae = [],
          se = /acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i;

        function le(e, t) {
          for (var n in t) e[n] = t[n];
          return e
        }

        function ce(e) {
          var t = e.parentNode;
          t && t.removeChild(e)
        }

        function ue(e, t, n) {
          var r, i, o, a = {};
          for (o in t) "key" == o ? r = t[o] : "ref" == o ? i = t[o] : a[o] = t[o];
          if (arguments.length > 2 && (a.children = arguments.length > 3 ? J.call(arguments, 2) : n), "function" == typeof e && null != e.defaultProps)
            for (o in e.defaultProps) void 0 === a[o] && (a[o] = e.defaultProps[o]);
          return he(e, a, r, i, null)
        }

        function he(e, t, n, r, i) {
          var o = {
            type: e,
            props: t,
            key: n,
            ref: r,
            __k: null,
            __: null,
            __b: 0,
            __e: null,
            __d: void 0,
            __c: null,
            __h: null,
            constructor: void 0,
            __v: null == i ? ++ee : i
          };
          return null == i && null != Q.vnode && Q.vnode(o), o
        }

        function pe() {
          return {
            current: null
          }
        }

        function de(e) {
          return e.children
        }

        function fe(e, t) {
          this.props = e, this.context = t
        }

        function ge(e, t) {
          if (null == t) return e.__ ? ge(e.__, e.__.__k.indexOf(e) + 1) : null;
          for (var n; t < e.__k.length; t++)
            if (null != (n = e.__k[t]) && null != n.__e) return n.__e;
          return "function" == typeof e.type ? ge(e) : null
        }

        function me(e) {
          var t, n;
          if (null != (e = e.__) && null != e.__c) {
            for (e.__e = e.__c.base = null, t = 0; t < e.__k.length; t++)
              if (null != (n = e.__k[t]) && null != n.__e) {
                e.__e = e.__c.base = n.__e;
                break
              } return me(e)
          }
        }

        function ve(e) {
          (!e.__d && (e.__d = !0) && te.push(e) && !_e.__r++ || re !== Q.debounceRendering) && ((re = Q.debounceRendering) || ne)(_e)
        }

        function _e() {
          for (var e; _e.__r = te.length;) e = te.sort((function(e, t) {
            return e.__v.__b - t.__v.__b
          })), te = [], e.some((function(e) {
            var t, n, r, i, o, a;
            e.__d && (o = (i = (t = e).__v).__e, (a = t.__P) && (n = [], (r = le({}, i)).__v = i.__v + 1, Te(a, i, r, t.__n, void 0 !== a.ownerSVGElement, null != i.__h ? [o] : null, n, null == o ? ge(i) : o, i.__h), Oe(n, i), i.__e != o &&
              me(i)))
          }))
        }

        function be(e, t, n, r, i, o, a, s, l, c) {
          var u, h, p, d, f, g, m, v = r && r.__k || ae,
            _ = v.length;
          for (n.__k = [], u = 0; u < t.length; u++)
            if (null != (d = n.__k[u] = null == (d = t[u]) || "boolean" == typeof d ? null : "string" == typeof d || "number" == typeof d || "bigint" == typeof d ? he(null, d, null, null, d) : Array.isArray(d) ? he(de, {
                children: d
              }, null, null, null) : d.__b > 0 ? he(d.type, d.props, d.key, null, d.__v) : d)) {
              if (d.__ = n, d.__b = n.__b + 1, null === (p = v[u]) || p && d.key == p.key && d.type === p.type) v[u] = void 0;
              else
                for (h = 0; h < _; h++) {
                  if ((p = v[h]) && d.key == p.key && d.type === p.type) {
                    v[h] = void 0;
                    break
                  }
                  p = null
                }
              Te(e, d, p = p || oe, i, o, a, s, l, c), f = d.__e, (h = d.ref) && p.ref != h && (m || (m = []), p.ref && m.push(p.ref, null, d), m.push(h, d.__c || f, d)), null != f ? (null == g && (g = f), "function" == typeof d.type && d.__k ===
                p.__k ? d.__d = l = ye(d, l, e) : l = xe(e, d, p, v, f, l), "function" == typeof n.type && (n.__d = l)) : l && p.__e == l && l.parentNode != e && (l = ge(p))
            } for (n.__e = g, u = _; u--;) null != v[u] && ("function" == typeof n.type && null != v[u].__e && v[u].__e == n.__d && (n.__d = ge(r, u + 1)), Pe(v[u], v[u]));
          if (m)
            for (u = 0; u < m.length; u++) Ae(m[u], m[++u], m[++u])
        }

        function ye(e, t, n) {
          for (var r, i = e.__k, o = 0; i && o < i.length; o++)(r = i[o]) && (r.__ = e, t = "function" == typeof r.type ? ye(r, t, n) : xe(n, r, r, i, r.__e, t));
          return t
        }

        function we(e, t) {
          return t = t || [], null == e || "boolean" == typeof e || (Array.isArray(e) ? e.some((function(e) {
            we(e, t)
          })) : t.push(e)), t
        }

        function xe(e, t, n, r, i, o) {
          var a, s, l;
          if (void 0 !== t.__d) a = t.__d, t.__d = void 0;
          else if (null == n || i != o || null == i.parentNode) e: if (null == o || o.parentNode !== e) e.appendChild(i), a = null;
            else {
              for (s = o, l = 0;
                (s = s.nextSibling) && l < r.length; l += 2)
                if (s == i) break e;
              e.insertBefore(i, o), a = o
            } return void 0 !== a ? a : i.nextSibling
        }

        function ke(e, t, n) {
          "-" === t[0] ? e.setProperty(t, n) : e[t] = null == n ? "" : "number" != typeof n || se.test(t) ? n : n + "px"
        }

        function Ce(e, t, n, r, i) {
          var o;
          e: if ("style" === t)
            if ("string" == typeof n) e.style.cssText = n;
            else {
              if ("string" == typeof r && (e.style.cssText = r = ""), r)
                for (t in r) n && t in n || ke(e.style, t, "");
              if (n)
                for (t in n) r && n[t] === r[t] || ke(e.style, t, n[t])
            }
          else if ("o" === t[0] && "n" === t[1]) o = t !== (t = t.replace(/Capture$/, "")), t = t.toLowerCase() in e ? t.toLowerCase().slice(2) : t.slice(2), e.l || (e.l = {}), e.l[t + o] = n, n ? r || e.addEventListener(t, o ? Ee : Se, o) : e
            .removeEventListener(t, o ? Ee : Se, o);
          else if ("dangerouslySetInnerHTML" !== t) {
            if (i) t = t.replace(/xlink(H|:h)/, "h").replace(/sName$/, "s");
            else if ("href" !== t && "list" !== t && "form" !== t && "tabIndex" !== t && "download" !== t && t in e) try {
              e[t] = null == n ? "" : n;
              break e
            } catch (e) {}
            "function" == typeof n || (null != n && (!1 !== n || "a" === t[0] && "r" === t[1]) ? e.setAttribute(t, n) : e.removeAttribute(t))
          }
        }

        function Se(e) {
          this.l[e.type + !1](Q.event ? Q.event(e) : e)
        }

        function Ee(e) {
          this.l[e.type + !0](Q.event ? Q.event(e) : e)
        }

        function Te(e, t, n, r, i, o, a, s, l) {
          var c, u, h, p, d, f, g, m, v, _, b, y, w, x = t.type;
          if (void 0 !== t.constructor) return null;
          null != n.__h && (l = n.__h, s = t.__e = n.__e, t.__h = null, o = [s]), (c = Q.__b) && c(t);
          try {
            e: if ("function" == typeof x) {
              if (m = t.props, v = (c = x.contextType) && r[c.__c], _ = c ? v ? v.props.value : c.__ : r, n.__c ? g = (u = t.__c = n.__c).__ = u.__E : ("prototype" in x && x.prototype.render ? t.__c = u = new x(m, _) : (t.__c = u = new fe(m,
                  _), u.constructor = x, u.render = Me), v && v.sub(u), u.props = m, u.state || (u.state = {}), u.context = _, u.__n = r, h = u.__d = !0, u.__h = []), null == u.__s && (u.__s = u.state), null != x.getDerivedStateFromProps && (u
                  .__s == u.state && (u.__s = le({}, u.__s)), le(u.__s, x.getDerivedStateFromProps(m, u.__s))), p = u.props, d = u.state, h) null == x.getDerivedStateFromProps && null != u.componentWillMount && u.componentWillMount(), null != u
                .componentDidMount && u.__h.push(u.componentDidMount);
              else {
                if (null == x.getDerivedStateFromProps && m !== p && null != u.componentWillReceiveProps && u.componentWillReceiveProps(m, _), !u.__e && null != u.shouldComponentUpdate && !1 === u.shouldComponentUpdate(m, u.__s, _) || t.__v ===
                  n.__v) {
                  u.props = m, u.state = u.__s, t.__v !== n.__v && (u.__d = !1), u.__v = t, t.__e = n.__e, t.__k = n.__k, t.__k.forEach((function(e) {
                    e && (e.__ = t)
                  })), u.__h.length && a.push(u);
                  break e
                }
                null != u.componentWillUpdate && u.componentWillUpdate(m, u.__s, _), null != u.componentDidUpdate && u.__h.push((function() {
                  u.componentDidUpdate(p, d, f)
                }))
              }
              if (u.context = _, u.props = m, u.__v = t, u.__P = e, b = Q.__r, y = 0, "prototype" in x && x.prototype.render) u.state = u.__s, u.__d = !1, b && b(t), c = u.render(u.props, u.state, u.context);
              else
                do {
                  u.__d = !1, b && b(t), c = u.render(u.props, u.state, u.context), u.state = u.__s
                } while (u.__d && ++y < 25);
              u.state = u.__s, null != u.getChildContext && (r = le(le({}, r), u.getChildContext())), h || null == u.getSnapshotBeforeUpdate || (f = u.getSnapshotBeforeUpdate(p, d)), w = null != c && c.type === de && null == c.key ? c.props
                .children : c, be(e, Array.isArray(w) ? w : [w], t, n, r, i, o, a, s, l), u.base = t.__e, t.__h = null, u.__h.length && a.push(u), g && (u.__E = u.__ = null), u.__e = !1
            } else null == o && t.__v === n.__v ? (t.__k = n.__k, t.__e = n.__e) : t.__e = function(e, t, n, r, i, o, a, s) {
              var l, c, u, h = n.props,
                p = t.props,
                d = t.type,
                f = 0;
              if ("svg" === d && (i = !0), null != o)
                for (; f < o.length; f++)
                  if ((l = o[f]) && "setAttribute" in l == !!d && (d ? l.localName === d : 3 === l.nodeType)) {
                    e = l, o[f] = null;
                    break
                  } if (null == e) {
                if (null === d) return document.createTextNode(p);
                e = i ? document.createElementNS("http://www.w3.org/2000/svg", d) : document.createElement(d, p.is && p), o = null, s = !1
              }
              if (null === d) h === p || s && e.data === p || (e.data = p);
              else {
                if (o = o && J.call(e.childNodes), c = (h = n.props || oe).dangerouslySetInnerHTML, u = p.dangerouslySetInnerHTML, !s) {
                  if (null != o)
                    for (h = {}, f = 0; f < e.attributes.length; f++) h[e.attributes[f].name] = e.attributes[f].value;
                  (u || c) && (u && (c && u.__html == c.__html || u.__html === e.innerHTML) || (e.innerHTML = u && u.__html || ""))
                }
                if (function(e, t, n, r, i) {
                    var o;
                    for (o in n) "children" === o || "key" === o || o in t || Ce(e, o, null, n[o], r);
                    for (o in t) i && "function" != typeof t[o] || "children" === o || "key" === o || "value" === o || "checked" === o || n[o] === t[o] || Ce(e, o, t[o], n[o], r)
                  }(e, p, h, i, s), u) t.__k = [];
                else if (f = t.props.children, be(e, Array.isArray(f) ? f : [f], t, n, r, i && "foreignObject" !== d, o, a, o ? o[0] : n.__k && ge(n, 0), s), null != o)
                  for (f = o.length; f--;) null != o[f] && ce(o[f]);
                s || ("value" in p && void 0 !== (f = p.value) && (f !== e.value || "progress" === d && !f || "option" === d && f !== h.value) && Ce(e, "value", f, h.value, !1), "checked" in p && void 0 !== (f = p.checked) && f !== e
                  .checked && Ce(e, "checked", f, h.checked, !1))
              }
              return e
            }(n.__e, t, n, r, i, o, a, l);
            (c = Q.diffed) && c(t)
          }
          catch (e) {
            t.__v = null, (l || null != o) && (t.__e = s, t.__h = !!l, o[o.indexOf(s)] = null), Q.__e(e, t, n)
          }
        }

        function Oe(e, t) {
          Q.__c && Q.__c(t, e), e.some((function(t) {
            try {
              e = t.__h, t.__h = [], e.some((function(e) {
                e.call(t)
              }))
            } catch (e) {
              Q.__e(e, t.__v)
            }
          }))
        }

        function Ae(e, t, n) {
          try {
            "function" == typeof e ? e(t) : e.current = t
          } catch (e) {
            Q.__e(e, n)
          }
        }

        function Pe(e, t, n) {
          var r, i;
          if (Q.unmount && Q.unmount(e), (r = e.ref) && (r.current && r.current !== e.__e || Ae(r, null, t)), null != (r = e.__c)) {
            if (r.componentWillUnmount) try {
              r.componentWillUnmount()
            } catch (e) {
              Q.__e(e, t)
            }
            r.base = r.__P = null
          }
          if (r = e.__k)
            for (i = 0; i < r.length; i++) r[i] && Pe(r[i], t, "function" != typeof e.type);
          n || null == e.__e || ce(e.__e), e.__e = e.__d = void 0
        }

        function Me(e, t, n) {
          return this.constructor(e, n)
        }

        function De(e, t, n) {
          var r, i, o;
          Q.__ && Q.__(e, t), i = (r = "function" == typeof n) ? null : n && n.__k || t.__k, o = [], Te(t, e = (!r && n || t).__k = ue(de, null, [e]), i || oe, oe, void 0 !== t.ownerSVGElement, !r && n ? [n] : i ? null : t.firstChild ? J.call(t
            .childNodes) : null, o, !r && n ? n : i ? i.__e : t.firstChild, r), Oe(o, e)
        }

        function Ie(e, t) {
          De(e, t, Ie)
        }

        function Re(e, t, n) {
          var r, i, o, a = le({}, e.props);
          for (o in t) "key" == o ? r = t[o] : "ref" == o ? i = t[o] : a[o] = t[o];
          return arguments.length > 2 && (a.children = arguments.length > 3 ? J.call(arguments, 2) : n), he(e.type, a, r || e.key, i || e.ref, null)
        }

        function je(e, t) {
          var n = {
            __c: t = "__cC" + ie++,
            __: e,
            Consumer: function(e, t) {
              return e.children(t)
            },
            Provider: function(e) {
              var n, r;
              return this.getChildContext || (n = [], (r = {})[t] = this, this.getChildContext = function() {
                return r
              }, this.shouldComponentUpdate = function(e) {
                this.props.value !== e.value && n.some(ve)
              }, this.sub = function(e) {
                n.push(e);
                var t = e.componentWillUnmount;
                e.componentWillUnmount = function() {
                  n.splice(n.indexOf(e), 1), t && t.call(e)
                }
              }), e.children
            }
          };
          return n.Provider.__ = n.Consumer.contextType = n
        }
        J = ae.slice, Q = {
          __e: function(e, t, n, r) {
            for (var i, o, a; t = t.__;)
              if ((i = t.__c) && !i.__) try {
                if ((o = i.constructor) && null != o.getDerivedStateFromError && (i.setState(o.getDerivedStateFromError(e)), a = i.__d), null != i.componentDidCatch && (i.componentDidCatch(e, r || {}), a = i.__d), a) return i.__E = i
              } catch (t) {
                e = t
              }
            throw e
          }
        }, ee = 0, fe.prototype.setState = function(e, t) {
          var n;
          n = null != this.__s && this.__s !== this.state ? this.__s : this.__s = le({}, this.state), "function" == typeof e && (e = e(le({}, n), this.props)), e && le(n, e), null != e && this.__v && (t && this.__h.push(t), ve(this))
        }, fe.prototype.forceUpdate = function(e) {
          this.__v && (this.__e = !0, e && this.__h.push(e), ve(this))
        }, fe.prototype.render = de, te = [], ne = "function" == typeof Promise ? Promise.prototype.then.bind(Promise.resolve()) : setTimeout, _e.__r = 0, ie = 0;
        var Ne, Le, Fe, Be, ze = 0,
          He = [],
          Ue = Q.__b,
          We = Q.__r,
          Ve = Q.diffed,
          Xe = Q.__c,
          Ge = Q.unmount;

        function Ye(e, t) {
          Q.__h && Q.__h(Le, e, ze || t), ze = 0;
          var n = Le.__H || (Le.__H = {
            __: [],
            __h: []
          });
          return e >= n.__.length && n.__.push({}), n.__[e]
        }

        function qe(e) {
          return ze = 1, Ke(ct, e)
        }

        function Ke(e, t, n) {
          var r = Ye(Ne++, 2);
          return r.t = e, r.__c || (r.__ = [n ? n(t) : ct(void 0, t), function(e) {
            var t = r.t(r.__[0], e);
            r.__[0] !== t && (r.__ = [t, r.__[1]], r.__c.setState({}))
          }], r.__c = Le), r.__
        }

        function Ze(e, t) {
          var n = Ye(Ne++, 3);
          !Q.__s && lt(n.__H, t) && (n.__ = e, n.u = t, Le.__H.__h.push(n))
        }

        function $e(e, t) {
          var n = Ye(Ne++, 4);
          !Q.__s && lt(n.__H, t) && (n.__ = e, n.u = t, Le.__h.push(n))
        }

        function Je(e) {
          return ze = 5, et((function() {
            return {
              current: e
            }
          }), [])
        }

        function Qe(e, t, n) {
          ze = 6, $e((function() {
            return "function" == typeof e ? (e(t()), function() {
              return e(null)
            }) : e ? (e.current = t(), function() {
              return e.current = null
            }) : void 0
          }), null == n ? n : n.concat(e))
        }

        function et(e, t) {
          var n = Ye(Ne++, 7);
          return lt(n.__H, t) ? (n.o = e(), n.u = t, n.__h = e, n.o) : n.__
        }

        function tt(e, t) {
          return ze = 8, et((function() {
            return e
          }), t)
        }

        function nt(e) {
          var t = Le.context[e.__c],
            n = Ye(Ne++, 9);
          return n.c = e, t ? (null == n.__ && (n.__ = !0, t.sub(Le)), t.props.value) : e.__
        }

        function rt(e, t) {
          Q.useDebugValue && Q.useDebugValue(t ? t(e) : e)
        }

        function it() {
          for (var e; e = He.shift();)
            if (e.__P) try {
              e.__H.__h.forEach(at), e.__H.__h.forEach(st), e.__H.__h = []
            } catch (t) {
              e.__H.__h = [], Q.__e(t, e.__v)
            }
        }
        Q.__b = function(e) {
          Le = null, Ue && Ue(e)
        }, Q.__r = function(e) {
          We && We(e), Ne = 0;
          var t = (Le = e.__c).__H;
          t && (Fe === Le ? (t.__h = [], Le.__h = [], t.__.forEach((function(e) {
            e.o = e.u = void 0
          }))) : (t.__.forEach((function(e) {
            e.u && (e.__H = e.u), e.o && (e.__ = e.o), e.o = e.u = void 0
          })), t.__h.forEach(at), t.__h.forEach(st), t.__h = [])), Fe = Le
        }, Q.diffed = function(e) {
          Ve && Ve(e);
          var t = e.__c;
          t && t.__H && t.__H.__h.length && (1 !== He.push(t) && Be === Q.requestAnimationFrame || ((Be = Q.requestAnimationFrame) || function(e) {
            var t, n = function() {
                clearTimeout(r), ot && cancelAnimationFrame(t), setTimeout(e)
              },
              r = setTimeout(n, 100);
            ot && (t = requestAnimationFrame(n))
          })(it)), Le = null, Fe = null
        }, Q.__c = function(e, t) {
          t.some((function(e) {
            try {
              e.__H && e.__H.__.forEach((function(e) {
                e.u && (e.__H = e.u), e.o && (e.__ = e.o), e.o = e.u = void 0
              })), e.__h.forEach(at), e.__h = e.__h.filter((function(e) {
                return !e.__ || st(e)
              }))
            } catch (n) {
              t.some((function(e) {
                e.__h && (e.__h = [])
              })), t = [], Q.__e(n, e.__v)
            }
          })), Xe && Xe(e, t)
        }, Q.unmount = function(e) {
          Ge && Ge(e);
          var t, n = e.__c;
          n && n.__H && (n.__H.__.forEach((function(e) {
            try {
              at(e)
            } catch (e) {
              t = e
            }
          })), t && Q.__e(t, n.__v))
        };
        var ot = "function" == typeof requestAnimationFrame;

        function at(e) {
          var t = Le,
            n = e.__c;
          "function" == typeof n && (e.__c = void 0, n()), Le = t
        }

        function st(e) {
          var t = Le;
          e.__c = e.__(), Le = t
        }

        function lt(e, t) {
          return !e || e.length !== t.length || t.some((function(t, n) {
            return t !== e[n]
          }))
        }

        function ct(e, t) {
          return "function" == typeof t ? t(e) : t
        }

        function ut(e, t) {
          for (var n in t) e[n] = t[n];
          return e
        }

        function ht(e, t) {
          for (var n in e)
            if ("__source" !== n && !(n in t)) return !0;
          for (var r in t)
            if ("__source" !== r && e[r] !== t[r]) return !0;
          return !1
        }

        function pt(e) {
          this.props = e
        }

        function dt(e, t) {
          function n(e) {
            var n = this.props.ref,
              r = n == e.ref;
            return !r && n && (n.call ? n(null) : n.current = null), t ? !t(this.props, e) || !r : ht(this.props, e)
          }

          function r(t) {
            return this.shouldComponentUpdate = n, ue(e, t)
          }
          return r.displayName = "Memo(" + (e.displayName || e.name) + ")", r.prototype.isReactComponent = !0, r.__f = !0, r
        }(pt.prototype = new fe).isPureReactComponent = !0, pt.prototype.shouldComponentUpdate = function(e, t) {
          return ht(this.props, e) || ht(this.state, t)
        };
        var ft = Q.__b;
        Q.__b = function(e) {
          e.type && e.type.__f && e.ref && (e.props.ref = e.ref, e.ref = null), ft && ft(e)
        };
        var gt = "undefined" != typeof Symbol && Symbol.for && Symbol.for("react.forward_ref") || 3911;

        function mt(e) {
          function t(t) {
            var n = ut({}, t);
            return delete n.ref, e(n, t.ref || null)
          }
          return t.$$typeof = gt, t.render = t, t.prototype.isReactComponent = t.__f = !0, t.displayName = "ForwardRef(" + (e.displayName || e.name) + ")", t
        }
        var vt = function(e, t) {
            return null == e ? null : we(we(e).map(t))
          },
          _t = {
            map: vt,
            forEach: vt,
            count: function(e) {
              return e ? we(e).length : 0
            },
            only: function(e) {
              var t = we(e);
              if (1 !== t.length) throw "Children.only";
              return t[0]
            },
            toArray: we
          },
          bt = Q.__e;
        Q.__e = function(e, t, n, r) {
          if (e.then)
            for (var i, o = t; o = o.__;)
              if ((i = o.__c) && i.__c) return null == t.__e && (t.__e = n.__e, t.__k = n.__k), i.__c(e, t);
          bt(e, t, n, r)
        };
        var yt = Q.unmount;

        function wt() {
          this.__u = 0, this.t = null, this.__b = null
        }

        function xt(e) {
          var t = e.__.__c;
          return t && t.__e && t.__e(e)
        }

        function kt(e) {
          var t, n, r;

          function i(i) {
            if (t || (t = e()).then((function(e) {
                n = e.default || e
              }), (function(e) {
                r = e
              })), r) throw r;
            if (!n) throw t;
            return ue(n, i)
          }
          return i.displayName = "Lazy", i.__f = !0, i
        }

        function Ct() {
          this.u = null, this.o = null
        }
        Q.unmount = function(e) {
          var t = e.__c;
          t && t.__R && t.__R(), t && !0 === e.__h && (e.type = null), yt && yt(e)
        }, (wt.prototype = new fe).__c = function(e, t) {
          var n = t.__c,
            r = this;
          null == r.t && (r.t = []), r.t.push(n);
          var i = xt(r.__v),
            o = !1,
            a = function() {
              o || (o = !0, n.__R = null, i ? i(s) : s())
            };
          n.__R = a;
          var s = function() {
              if (!--r.__u) {
                if (r.state.__e) {
                  var e = r.state.__e;
                  r.__v.__k[0] = function e(t, n, r) {
                    return t && (t.__v = null, t.__k = t.__k && t.__k.map((function(t) {
                      return e(t, n, r)
                    })), t.__c && t.__c.__P === n && (t.__e && r.insertBefore(t.__e, t.__d), t.__c.__e = !0, t.__c.__P = r)), t
                  }(e, e.__c.__P, e.__c.__O)
                }
                var t;
                for (r.setState({
                    __e: r.__b = null
                  }); t = r.t.pop();) t.forceUpdate()
              }
            },
            l = !0 === t.__h;
          r.__u++ || l || r.setState({
            __e: r.__b = r.__v.__k[0]
          }), e.then(a, a)
        }, wt.prototype.componentWillUnmount = function() {
          this.t = []
        }, wt.prototype.render = function(e, t) {
          if (this.__b) {
            if (this.__v.__k) {
              var n = document.createElement("div"),
                r = this.__v.__k[0].__c;
              this.__v.__k[0] = function e(t, n, r) {
                return t && (t.__c && t.__c.__H && (t.__c.__H.__.forEach((function(e) {
                  "function" == typeof e.__c && e.__c()
                })), t.__c.__H = null), null != (t = ut({}, t)).__c && (t.__c.__P === r && (t.__c.__P = n), t.__c = null), t.__k = t.__k && t.__k.map((function(t) {
                  return e(t, n, r)
                }))), t
              }(this.__b, n, r.__O = r.__P)
            }
            this.__b = null
          }
          var i = t.__e && ue(de, null, e.fallback);
          return i && (i.__h = null), [ue(de, null, t.__e ? null : e.children), i]
        };
        var St = function(e, t, n) {
          if (++n[1] === n[0] && e.o.delete(t), e.props.revealOrder && ("t" !== e.props.revealOrder[0] || !e.o.size))
            for (n = e.u; n;) {
              for (; n.length > 3;) n.pop()();
              if (n[1] < n[0]) break;
              e.u = n = n[2]
            }
        };

        function Et(e) {
          return this.getChildContext = function() {
            return e.context
          }, e.children
        }

        function Tt(e) {
          var t = this,
            n = e.i;
          t.componentWillUnmount = function() {
            De(null, t.l), t.l = null, t.i = null
          }, t.i && t.i !== n && t.componentWillUnmount(), e.__v ? (t.l || (t.i = n, t.l = {
            nodeType: 1,
            parentNode: n,
            childNodes: [],
            appendChild: function(e) {
              this.childNodes.push(e), t.i.appendChild(e)
            },
            insertBefore: function(e, n) {
              this.childNodes.push(e), t.i.appendChild(e)
            },
            removeChild: function(e) {
              this.childNodes.splice(this.childNodes.indexOf(e) >>> 1, 1), t.i.removeChild(e)
            }
          }), De(ue(Et, {
            context: t.context
          }, e.__v), t.l)) : t.l && t.componentWillUnmount()
        }

        function Ot(e, t) {
          var n = ue(Tt, {
            __v: e,
            i: t
          });
          return n.containerInfo = t, n
        }(Ct.prototype = new fe).__e = function(e) {
          var t = this,
            n = xt(t.__v),
            r = t.o.get(e);
          return r[0]++,
            function(i) {
              var o = function() {
                t.props.revealOrder ? (r.push(i), St(t, e, r)) : i()
              };
              n ? n(o) : o()
            }
        }, Ct.prototype.render = function(e) {
          this.u = null, this.o = new Map;
          var t = we(e.children);
          e.revealOrder && "b" === e.revealOrder[0] && t.reverse();
          for (var n = t.length; n--;) this.o.set(t[n], this.u = [1, 0, this.u]);
          return e.children
        }, Ct.prototype.componentDidUpdate = Ct.prototype.componentDidMount = function() {
          var e = this;
          this.o.forEach((function(t, n) {
            St(e, n, t)
          }))
        };
        var At = "undefined" != typeof Symbol && Symbol.for && Symbol.for("react.element") || 60103,
          Pt =
          /^(?:accent|alignment|arabic|baseline|cap|clip(?!PathU)|color|dominant|fill|flood|font|glyph(?!R)|horiz|marker(?!H|W|U)|overline|paint|stop|strikethrough|stroke|text(?!L)|underline|unicode|units|v|vector|vert|word|writing|x(?!C))[A-Z]/,
          Mt = "undefined" != typeof document,
          Dt = function(e) {
            return ("undefined" != typeof Symbol && "symbol" == typeof Symbol() ? /fil|che|rad/i : /fil|che|ra/i).test(e)
          };

        function It(e, t, n) {
          return null == t.__k && (t.textContent = ""), De(e, t), "function" == typeof n && n(), e ? e.__c : null
        }

        function Rt(e, t, n) {
          return Ie(e, t), "function" == typeof n && n(), e ? e.__c : null
        }
        fe.prototype.isReactComponent = {}, ["componentWillMount", "componentWillReceiveProps", "componentWillUpdate"].forEach((function(e) {
          Object.defineProperty(fe.prototype, e, {
            configurable: !0,
            get: function() {
              return this["UNSAFE_" + e]
            },
            set: function(t) {
              Object.defineProperty(this, e, {
                configurable: !0,
                writable: !0,
                value: t
              })
            }
          })
        }));
        var jt = Q.event;

        function Nt() {}

        function Lt() {
          return this.cancelBubble
        }

        function Ft() {
          return this.defaultPrevented
        }
        Q.event = function(e) {
          return jt && (e = jt(e)), e.persist = Nt, e.isPropagationStopped = Lt, e.isDefaultPrevented = Ft, e.nativeEvent = e
        };
        var Bt, zt = {
            configurable: !0,
            get: function() {
              return this.class
            }
          },
          Ht = Q.vnode;
        Q.vnode = function(e) {
          var t = e.type,
            n = e.props,
            r = n;
          if ("string" == typeof t) {
            var i = -1 === t.indexOf("-");
            for (var o in r = {}, n) {
              var a = n[o];
              Mt && "children" === o && "noscript" === t || "value" === o && "defaultValue" in n && null == a || ("defaultValue" === o && "value" in n && null == n.value ? o = "value" : "download" === o && !0 === a ? a = "" : /ondoubleclick/i
                .test(o) ? o = "ondblclick" : /^onchange(textarea|input)/i.test(o + t) && !Dt(n.type) ? o = "oninput" : /^onfocus$/i.test(o) ? o = "onfocusin" : /^onblur$/i.test(o) ? o = "onfocusout" : /^on(Ani|Tra|Tou|BeforeInp|Compo)/.test(
                  o) ? o = o.toLowerCase() : i && Pt.test(o) ? o = o.replace(/[A-Z0-9]/, "-$&").toLowerCase() : null === a && (a = void 0), /^oninput/i.test(o) && (o = o.toLowerCase(), r[o] && (o = "oninputCapture")), r[o] = a)
            }
            "select" == t && r.multiple && Array.isArray(r.value) && (r.value = we(n.children).forEach((function(e) {
              e.props.selected = -1 != r.value.indexOf(e.props.value)
            }))), "select" == t && null != r.defaultValue && (r.value = we(n.children).forEach((function(e) {
              e.props.selected = r.multiple ? -1 != r.defaultValue.indexOf(e.props.value) : r.defaultValue == e.props.value
            }))), e.props = r, n.class != n.className && (zt.enumerable = "className" in n, null != n.className && (r.class = n.className), Object.defineProperty(r, "className", zt))
          }
          e.$$typeof = At, Ht && Ht(e)
        };
        var Ut = Q.__r;
        Q.__r = function(e) {
          Ut && Ut(e), Bt = e.__c
        };
        var Wt = {
          ReactCurrentDispatcher: {
            current: {
              readContext: function(e) {
                return Bt.__n[e.__c].props.value
              }
            }
          }
        };

        function Vt(e) {
          return ue.bind(null, e)
        }

        function Xt(e) {
          return !!e && e.$$typeof === At
        }

        function Gt(e) {
          return Xt(e) ? Re.apply(null, arguments) : e
        }

        function Yt(e) {
          return !!e.__k && (De(null, e), !0)
        }

        function qt(e) {
          return e && (e.base || 1 === e.nodeType && e) || null
        }
        var Kt = function(e, t) {
            return e(t)
          },
          Zt = function(e, t) {
            return e(t)
          },
          $t = de,
          Jt = {
            useState: qe,
            useReducer: Ke,
            useEffect: Ze,
            useLayoutEffect: $e,
            useRef: Je,
            useImperativeHandle: Qe,
            useMemo: et,
            useCallback: tt,
            useContext: nt,
            useDebugValue: rt,
            version: "17.0.2",
            Children: _t,
            render: It,
            hydrate: Rt,
            unmountComponentAtNode: Yt,
            createPortal: Ot,
            createElement: ue,
            createContext: je,
            createFactory: Vt,
            cloneElement: Gt,
            createRef: pe,
            Fragment: de,
            isValidElement: Xt,
            findDOMNode: qt,
            Component: fe,
            PureComponent: pt,
            memo: dt,
            forwardRef: mt,
            flushSync: Zt,
            unstable_batchedUpdates: Kt,
            StrictMode: de,
            Suspense: wt,
            SuspenseList: Ct,
            lazy: kt,
            __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED: Wt
          },
          Qt = Object.freeze({
            __proto__: null,
            default: Jt,
            version: "17.0.2",
            Children: _t,
            render: It,
            hydrate: Rt,
            unmountComponentAtNode: Yt,
            createPortal: Ot,
            createFactory: Vt,
            cloneElement: Gt,
            isValidElement: Xt,
            findDOMNode: qt,
            PureComponent: pt,
            memo: dt,
            forwardRef: mt,
            flushSync: Zt,
            unstable_batchedUpdates: Kt,
            StrictMode: $t,
            Suspense: wt,
            SuspenseList: Ct,
            lazy: kt,
            __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED: Wt,
            createElement: ue,
            createContext: je,
            createRef: pe,
            Fragment: de,
            Component: fe,
            useState: qe,
            useReducer: Ke,
            useEffect: Ze,
            useLayoutEffect: $e,
            useRef: Je,
            useImperativeHandle: Qe,
            useMemo: et,
            useCallback: tt,
            useContext: nt,
            useDebugValue: rt,
            useErrorBoundary: function(e) {
              var t = Ye(Ne++, 10),
                n = qe();
              return t.__ = e, Le.componentDidCatch || (Le.componentDidCatch = function(e) {
                t.__ && t.__(e), n[1](e)
              }), [n[0], function() {
                n[1](void 0)
              }]
            }
          }),
          en = "undefined" != typeof globalThis ? globalThis : "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof self ? self : {};

        function tn(e) {
          var t = e.default;
          if ("function" == typeof t) {
            var n = function() {
              return t.apply(this, arguments)
            };
            n.prototype = t.prototype
          } else n = {};
          return Object.defineProperty(n, "__esModule", {
            value: !0
          }), Object.keys(e).forEach((function(t) {
            var r = Object.getOwnPropertyDescriptor(e, t);
            Object.defineProperty(n, t, r.get ? r : {
              enumerable: !0,
              get: function() {
                return e[t]
              }
            })
          })), n
        }
        var nn, rn, on, an = {
            exports: {}
          },
          sn = {},
          ln = "function" == typeof Symbol && Symbol.for,
          cn = ln ? Symbol.for("react.element") : 60103,
          un = ln ? Symbol.for("react.portal") : 60106,
          hn = ln ? Symbol.for("react.fragment") : 60107,
          pn = ln ? Symbol.for("react.strict_mode") : 60108,
          dn = ln ? Symbol.for("react.profiler") : 60114,
          fn = ln ? Symbol.for("react.provider") : 60109,
          gn = ln ? Symbol.for("react.context") : 60110,
          mn = ln ? Symbol.for("react.async_mode") : 60111,
          vn = ln ? Symbol.for("react.concurrent_mode") : 60111,
          _n = ln ? Symbol.for("react.forward_ref") : 60112,
          bn = ln ? Symbol.for("react.suspense") : 60113,
          yn = ln ? Symbol.for("react.suspense_list") : 60120,
          wn = ln ? Symbol.for("react.memo") : 60115,
          xn = ln ? Symbol.for("react.lazy") : 60116,
          kn = ln ? Symbol.for("react.block") : 60121,
          Cn = ln ? Symbol.for("react.fundamental") : 60117,
          Sn = ln ? Symbol.for("react.responder") : 60118,
          En = ln ? Symbol.for("react.scope") : 60119;

        function Tn(e) {
          if ("object" == typeof e && null !== e) {
            var t = e.$$typeof;
            switch (t) {
              case cn:
                switch (e = e.type) {
                  case mn:
                  case vn:
                  case hn:
                  case dn:
                  case pn:
                  case bn:
                    return e;
                  default:
                    switch (e = e && e.$$typeof) {
                      case gn:
                      case _n:
                      case xn:
                      case wn:
                      case fn:
                        return e;
                      default:
                        return t
                    }
                }
              case un:
                return t
            }
          }
        }

        function On(e) {
          return Tn(e) === vn
        }

        function An(e, t, n) {
          if (void 0 === n && (n = Error), !e) throw new n(t)
        }

        function Pn(e) {
          return e.type === rn.literal
        }

        function Mn(e) {
          return e.type === rn.argument
        }

        function Dn(e) {
          return e.type === rn.number
        }

        function In(e) {
          return e.type === rn.date
        }

        function Rn(e) {
          return e.type === rn.time
        }

        function jn(e) {
          return e.type === rn.select
        }

        function Nn(e) {
          return e.type === rn.plural
        }

        function Ln(e) {
          return e.type === rn.pound
        }

        function Fn(e) {
          return e.type === rn.tag
        }

        function Bn(e) {
          return !(!e || "object" != typeof e || e.type !== on.number)
        }

        function zn(e) {
          return !(!e || "object" != typeof e || e.type !== on.dateTime)
        }
        sn.AsyncMode = mn, sn.ConcurrentMode = vn, sn.ContextConsumer = gn, sn.ContextProvider = fn, sn.Element = cn, sn.ForwardRef = _n, sn.Fragment = hn, sn.Lazy = xn, sn.Memo = wn, sn.Portal = un, sn.Profiler = dn, sn.StrictMode = pn, sn
          .Suspense = bn, sn.isAsyncMode = function(e) {
            return On(e) || Tn(e) === mn
          }, sn.isConcurrentMode = On, sn.isContextConsumer = function(e) {
            return Tn(e) === gn
          }, sn.isContextProvider = function(e) {
            return Tn(e) === fn
          }, sn.isElement = function(e) {
            return "object" == typeof e && null !== e && e.$$typeof === cn
          }, sn.isForwardRef = function(e) {
            return Tn(e) === _n
          }, sn.isFragment = function(e) {
            return Tn(e) === hn
          }, sn.isLazy = function(e) {
            return Tn(e) === xn
          }, sn.isMemo = function(e) {
            return Tn(e) === wn
          }, sn.isPortal = function(e) {
            return Tn(e) === un
          }, sn.isProfiler = function(e) {
            return Tn(e) === dn
          }, sn.isStrictMode = function(e) {
            return Tn(e) === pn
          }, sn.isSuspense = function(e) {
            return Tn(e) === bn
          }, sn.isValidElementType = function(e) {
            return "string" == typeof e || "function" == typeof e || e === hn || e === vn || e === dn || e === pn || e === bn || e === yn || "object" == typeof e && null !== e && (e.$$typeof === xn || e.$$typeof === wn || e.$$typeof === fn || e
              .$$typeof === gn || e.$$typeof === _n || e.$$typeof === Cn || e.$$typeof === Sn || e.$$typeof === En || e.$$typeof === kn)
          }, sn.typeOf = Tn,
          function(e) {
            e.exports = sn
          }(an),
          function(e) {
            e[e.EXPECT_ARGUMENT_CLOSING_BRACE = 1] = "EXPECT_ARGUMENT_CLOSING_BRACE", e[e.EMPTY_ARGUMENT = 2] = "EMPTY_ARGUMENT", e[e.MALFORMED_ARGUMENT = 3] = "MALFORMED_ARGUMENT", e[e.EXPECT_ARGUMENT_TYPE = 4] = "EXPECT_ARGUMENT_TYPE", e[e
                .INVALID_ARGUMENT_TYPE = 5] = "INVALID_ARGUMENT_TYPE", e[e.EXPECT_ARGUMENT_STYLE = 6] = "EXPECT_ARGUMENT_STYLE", e[e.INVALID_NUMBER_SKELETON = 7] = "INVALID_NUMBER_SKELETON", e[e.INVALID_DATE_TIME_SKELETON = 8] =
              "INVALID_DATE_TIME_SKELETON", e[e.EXPECT_NUMBER_SKELETON = 9] = "EXPECT_NUMBER_SKELETON", e[e.EXPECT_DATE_TIME_SKELETON = 10] = "EXPECT_DATE_TIME_SKELETON", e[e.UNCLOSED_QUOTE_IN_ARGUMENT_STYLE = 11] =
              "UNCLOSED_QUOTE_IN_ARGUMENT_STYLE", e[e.EXPECT_SELECT_ARGUMENT_OPTIONS = 12] = "EXPECT_SELECT_ARGUMENT_OPTIONS", e[e.EXPECT_PLURAL_ARGUMENT_OFFSET_VALUE = 13] = "EXPECT_PLURAL_ARGUMENT_OFFSET_VALUE", e[e
                .INVALID_PLURAL_ARGUMENT_OFFSET_VALUE = 14] = "INVALID_PLURAL_ARGUMENT_OFFSET_VALUE", e[e.EXPECT_SELECT_ARGUMENT_SELECTOR = 15] = "EXPECT_SELECT_ARGUMENT_SELECTOR", e[e.EXPECT_PLURAL_ARGUMENT_SELECTOR = 16] =
              "EXPECT_PLURAL_ARGUMENT_SELECTOR", e[e.EXPECT_SELECT_ARGUMENT_SELECTOR_FRAGMENT = 17] = "EXPECT_SELECT_ARGUMENT_SELECTOR_FRAGMENT", e[e.EXPECT_PLURAL_ARGUMENT_SELECTOR_FRAGMENT = 18] = "EXPECT_PLURAL_ARGUMENT_SELECTOR_FRAGMENT", e[e
                .INVALID_PLURAL_ARGUMENT_SELECTOR = 19] = "INVALID_PLURAL_ARGUMENT_SELECTOR", e[e.DUPLICATE_PLURAL_ARGUMENT_SELECTOR = 20] = "DUPLICATE_PLURAL_ARGUMENT_SELECTOR", e[e.DUPLICATE_SELECT_ARGUMENT_SELECTOR = 21] =
              "DUPLICATE_SELECT_ARGUMENT_SELECTOR", e[e.MISSING_OTHER_CLAUSE = 22] = "MISSING_OTHER_CLAUSE", e[e.INVALID_TAG = 23] = "INVALID_TAG", e[e.INVALID_TAG_NAME = 25] = "INVALID_TAG_NAME", e[e.UNMATCHED_CLOSING_TAG = 26] =
              "UNMATCHED_CLOSING_TAG", e[e.UNCLOSED_TAG = 27] = "UNCLOSED_TAG"
          }(nn || (nn = {})),
          function(e) {
            e[e.literal = 0] = "literal", e[e.argument = 1] = "argument", e[e.number = 2] = "number", e[e.date = 3] = "date", e[e.time = 4] = "time", e[e.select = 5] = "select", e[e.plural = 6] = "plural", e[e.pound = 7] = "pound", e[e.tag = 8] =
              "tag"
          }(rn || (rn = {})),
          function(e) {
            e[e.number = 0] = "number", e[e.dateTime = 1] = "dateTime"
          }(on || (on = {}));
        var Hn = /[ \xA0\u1680\u2000-\u200A\u202F\u205F\u3000]/,
          Un = /(?:[Eec]{1,6}|G{1,5}|[Qq]{1,5}|(?:[yYur]+|U{1,5})|[ML]{1,5}|d{1,2}|D{1,3}|F{1}|[abB]{1,5}|[hkHK]{1,2}|w{1,2}|W{1}|m{1,2}|s{1,2}|[zZOvVxX]{1,4})(?=([^']*'[^']*')*[^']*$)/g;

        function Wn(e) {
          var t = {};
          return e.replace(Un, (function(e) {
            var n = e.length;
            switch (e[0]) {
              case "G":
                t.era = 4 === n ? "long" : 5 === n ? "narrow" : "short";
                break;
              case "y":
                t.year = 2 === n ? "2-digit" : "numeric";
                break;
              case "Y":
              case "u":
              case "U":
              case "r":
                throw new RangeError("`Y/u/U/r` (year) patterns are not supported, use `y` instead");
              case "q":
              case "Q":
                throw new RangeError("`q/Q` (quarter) patterns are not supported");
              case "M":
              case "L":
                t.month = ["numeric", "2-digit", "short", "long", "narrow"][n - 1];
                break;
              case "w":
              case "W":
                throw new RangeError("`w/W` (week) patterns are not supported");
              case "d":
                t.day = ["numeric", "2-digit"][n - 1];
                break;
              case "D":
              case "F":
              case "g":
                throw new RangeError("`D/F/g` (day) patterns are not supported, use `d` instead");
              case "E":
                t.weekday = 4 === n ? "short" : 5 === n ? "narrow" : "short";
                break;
              case "e":
                if (n < 4) throw new RangeError("`e..eee` (weekday) patterns are not supported");
                t.weekday = ["short", "long", "narrow", "short"][n - 4];
                break;
              case "c":
                if (n < 4) throw new RangeError("`c..ccc` (weekday) patterns are not supported");
                t.weekday = ["short", "long", "narrow", "short"][n - 4];
                break;
              case "a":
                t.hour12 = !0;
                break;
              case "b":
              case "B":
                throw new RangeError("`b/B` (period) patterns are not supported, use `a` instead");
              case "h":
                t.hourCycle = "h12", t.hour = ["numeric", "2-digit"][n - 1];
                break;
              case "H":
                t.hourCycle = "h23", t.hour = ["numeric", "2-digit"][n - 1];
                break;
              case "K":
                t.hourCycle = "h11", t.hour = ["numeric", "2-digit"][n - 1];
                break;
              case "k":
                t.hourCycle = "h24", t.hour = ["numeric", "2-digit"][n - 1];
                break;
              case "j":
              case "J":
              case "C":
                throw new RangeError("`j/J/C` (hour) patterns are not supported, use `h/H/K/k` instead");
              case "m":
                t.minute = ["numeric", "2-digit"][n - 1];
                break;
              case "s":
                t.second = ["numeric", "2-digit"][n - 1];
                break;
              case "S":
              case "A":
                throw new RangeError("`S/A` (second) patterns are not supported, use `s` instead");
              case "z":
                t.timeZoneName = n < 4 ? "short" : "long";
                break;
              case "Z":
              case "O":
              case "v":
              case "V":
              case "X":
              case "x":
                throw new RangeError("`Z/O/v/V/X/x` (timeZone) patterns are not supported, use `z` instead")
            }
            return ""
          })), t
        }
        var Vn = /[\t-\r \x85\u200E\u200F\u2028\u2029]/i;
        var Xn = /^\.(?:(0+)(\*)?|(#+)|(0+)(#+))$/g,
          Gn = /^(@+)?(\+|#+)?[rs]?$/g,
          Yn = /(\*)(0+)|(#+)(0+)|(0+)/g,
          qn = /^(0+)$/;

        function Kn(e) {
          var t = {};
          return "r" === e[e.length - 1] ? t.roundingPriority = "morePrecision" : "s" === e[e.length - 1] && (t.roundingPriority = "lessPrecision"), e.replace(Gn, (function(e, n, r) {
            return "string" != typeof r ? (t.minimumSignificantDigits = n.length, t.maximumSignificantDigits = n.length) : "+" === r ? t.minimumSignificantDigits = n.length : "#" === n[0] ? t.maximumSignificantDigits = n.length : (t
              .minimumSignificantDigits = n.length, t.maximumSignificantDigits = n.length + ("string" == typeof r ? r.length : 0)), ""
          })), t
        }

        function Zn(e) {
          switch (e) {
            case "sign-auto":
              return {
                signDisplay: "auto"
              };
            case "sign-accounting":
            case "()":
              return {
                currencySign: "accounting"
              };
            case "sign-always":
            case "+!":
              return {
                signDisplay: "always"
              };
            case "sign-accounting-always":
            case "()!":
              return {
                signDisplay: "always", currencySign: "accounting"
              };
            case "sign-except-zero":
            case "+?":
              return {
                signDisplay: "exceptZero"
              };
            case "sign-accounting-except-zero":
            case "()?":
              return {
                signDisplay: "exceptZero", currencySign: "accounting"
              };
            case "sign-never":
            case "+_":
              return {
                signDisplay: "never"
              }
          }
        }

        function $n(e) {
          var t;
          if ("E" === e[0] && "E" === e[1] ? (t = {
              notation: "engineering"
            }, e = e.slice(2)) : "E" === e[0] && (t = {
              notation: "scientific"
            }, e = e.slice(1)), t) {
            var n = e.slice(0, 2);
            if ("+!" === n ? (t.signDisplay = "always", e = e.slice(2)) : "+?" === n && (t.signDisplay = "exceptZero", e = e.slice(2)), !qn.test(e)) throw new Error("Malformed concise eng/scientific notation");
            t.minimumIntegerDigits = e.length
          }
          return t
        }

        function Jn(e) {
          var t = Zn(e);
          return t || {}
        }

        function Qn(e) {
          for (var t = {}, n = 0, r = e; n < r.length; n++) {
            var i = r[n];
            switch (i.stem) {
              case "percent":
              case "%":
                t.style = "percent";
                continue;
              case "%x100":
                t.style = "percent", t.scale = 100;
                continue;
              case "currency":
                t.style = "currency", t.currency = i.options[0];
                continue;
              case "group-off":
              case ",_":
                t.useGrouping = !1;
                continue;
              case "precision-integer":
              case ".":
                t.maximumFractionDigits = 0;
                continue;
              case "measure-unit":
              case "unit":
                t.style = "unit", t.unit = i.options[0].replace(/^(.*?)-/, "");
                continue;
              case "compact-short":
              case "K":
                t.notation = "compact", t.compactDisplay = "short";
                continue;
              case "compact-long":
              case "KK":
                t.notation = "compact", t.compactDisplay = "long";
                continue;
              case "scientific":
                t = G(G(G({}, t), {
                  notation: "scientific"
                }), i.options.reduce((function(e, t) {
                  return G(G({}, e), Jn(t))
                }), {}));
                continue;
              case "engineering":
                t = G(G(G({}, t), {
                  notation: "engineering"
                }), i.options.reduce((function(e, t) {
                  return G(G({}, e), Jn(t))
                }), {}));
                continue;
              case "notation-simple":
                t.notation = "standard";
                continue;
              case "unit-width-narrow":
                t.currencyDisplay = "narrowSymbol", t.unitDisplay = "narrow";
                continue;
              case "unit-width-short":
                t.currencyDisplay = "code", t.unitDisplay = "short";
                continue;
              case "unit-width-full-name":
                t.currencyDisplay = "name", t.unitDisplay = "long";
                continue;
              case "unit-width-iso-code":
                t.currencyDisplay = "symbol";
                continue;
              case "scale":
                t.scale = parseFloat(i.options[0]);
                continue;
              case "integer-width":
                if (i.options.length > 1) throw new RangeError("integer-width stems only accept a single optional option");
                i.options[0].replace(Yn, (function(e, n, r, i, o, a) {
                  if (n) t.minimumIntegerDigits = r.length;
                  else {
                    if (i && o) throw new Error("We currently do not support maximum integer digits");
                    if (a) throw new Error("We currently do not support exact integer digits")
                  }
                  return ""
                }));
                continue
            }
            if (qn.test(i.stem)) t.minimumIntegerDigits = i.stem.length;
            else if (Xn.test(i.stem)) {
              if (i.options.length > 1) throw new RangeError("Fraction-precision stems only accept a single optional option");
              i.stem.replace(Xn, (function(e, n, r, i, o, a) {
                return "*" === r ? t.minimumFractionDigits = n.length : i && "#" === i[0] ? t.maximumFractionDigits = i.length : o && a ? (t.minimumFractionDigits = o.length, t.maximumFractionDigits = o.length + a.length) : (t
                  .minimumFractionDigits = n.length, t.maximumFractionDigits = n.length), ""
              }));
              var o = i.options[0];
              "w" === o ? t = G(G({}, t), {
                trailingZeroDisplay: "stripIfInteger"
              }) : o && (t = G(G({}, t), Kn(o)))
            } else if (Gn.test(i.stem)) t = G(G({}, t), Kn(i.stem));
            else {
              var a = Zn(i.stem);
              a && (t = G(G({}, t), a));
              var s = $n(i.stem);
              s && (t = G(G({}, t), s))
            }
          }
          return t
        }
        var er, tr = {
          AX: ["H"],
          BQ: ["H"],
          CP: ["H"],
          CZ: ["H"],
          DK: ["H"],
          FI: ["H"],
          ID: ["H"],
          IS: ["H"],
          ML: ["H"],
          NE: ["H"],
          RU: ["H"],
          SE: ["H"],
          SJ: ["H"],
          SK: ["H"],
          AS: ["h", "H"],
          BT: ["h", "H"],
          DJ: ["h", "H"],
          ER: ["h", "H"],
          GH: ["h", "H"],
          IN: ["h", "H"],
          LS: ["h", "H"],
          PG: ["h", "H"],
          PW: ["h", "H"],
          SO: ["h", "H"],
          TO: ["h", "H"],
          VU: ["h", "H"],
          WS: ["h", "H"],
          "001": ["H", "h"],
          AL: ["h", "H", "hB"],
          TD: ["h", "H", "hB"],
          "ca-ES": ["H", "h", "hB"],
          CF: ["H", "h", "hB"],
          CM: ["H", "h", "hB"],
          "fr-CA": ["H", "h", "hB"],
          "gl-ES": ["H", "h", "hB"],
          "it-CH": ["H", "h", "hB"],
          "it-IT": ["H", "h", "hB"],
          LU: ["H", "h", "hB"],
          NP: ["H", "h", "hB"],
          PF: ["H", "h", "hB"],
          SC: ["H", "h", "hB"],
          SM: ["H", "h", "hB"],
          SN: ["H", "h", "hB"],
          TF: ["H", "h", "hB"],
          VA: ["H", "h", "hB"],
          CY: ["h", "H", "hb", "hB"],
          GR: ["h", "H", "hb", "hB"],
          CO: ["h", "H", "hB", "hb"],
          DO: ["h", "H", "hB", "hb"],
          KP: ["h", "H", "hB", "hb"],
          KR: ["h", "H", "hB", "hb"],
          NA: ["h", "H", "hB", "hb"],
          PA: ["h", "H", "hB", "hb"],
          PR: ["h", "H", "hB", "hb"],
          VE: ["h", "H", "hB", "hb"],
          AC: ["H", "h", "hb", "hB"],
          AI: ["H", "h", "hb", "hB"],
          BW: ["H", "h", "hb", "hB"],
          BZ: ["H", "h", "hb", "hB"],
          CC: ["H", "h", "hb", "hB"],
          CK: ["H", "h", "hb", "hB"],
          CX: ["H", "h", "hb", "hB"],
          DG: ["H", "h", "hb", "hB"],
          FK: ["H", "h", "hb", "hB"],
          GB: ["H", "h", "hb", "hB"],
          GG: ["H", "h", "hb", "hB"],
          GI: ["H", "h", "hb", "hB"],
          IE: ["H", "h", "hb", "hB"],
          IM: ["H", "h", "hb", "hB"],
          IO: ["H", "h", "hb", "hB"],
          JE: ["H", "h", "hb", "hB"],
          LT: ["H", "h", "hb", "hB"],
          MK: ["H", "h", "hb", "hB"],
          MN: ["H", "h", "hb", "hB"],
          MS: ["H", "h", "hb", "hB"],
          NF: ["H", "h", "hb", "hB"],
          NG: ["H", "h", "hb", "hB"],
          NR: ["H", "h", "hb", "hB"],
          NU: ["H", "h", "hb", "hB"],
          PN: ["H", "h", "hb", "hB"],
          SH: ["H", "h", "hb", "hB"],
          SX: ["H", "h", "hb", "hB"],
          TA: ["H", "h", "hb", "hB"],
          ZA: ["H", "h", "hb", "hB"],
          "af-ZA": ["H", "h", "hB", "hb"],
          AR: ["H", "h", "hB", "hb"],
          CL: ["H", "h", "hB", "hb"],
          CR: ["H", "h", "hB", "hb"],
          CU: ["H", "h", "hB", "hb"],
          EA: ["H", "h", "hB", "hb"],
          "es-BO": ["H", "h", "hB", "hb"],
          "es-BR": ["H", "h", "hB", "hb"],
          "es-EC": ["H", "h", "hB", "hb"],
          "es-ES": ["H", "h", "hB", "hb"],
          "es-GQ": ["H", "h", "hB", "hb"],
          "es-PE": ["H", "h", "hB", "hb"],
          GT: ["H", "h", "hB", "hb"],
          HN: ["H", "h", "hB", "hb"],
          IC: ["H", "h", "hB", "hb"],
          KG: ["H", "h", "hB", "hb"],
          KM: ["H", "h", "hB", "hb"],
          LK: ["H", "h", "hB", "hb"],
          MA: ["H", "h", "hB", "hb"],
          MX: ["H", "h", "hB", "hb"],
          NI: ["H", "h", "hB", "hb"],
          PY: ["H", "h", "hB", "hb"],
          SV: ["H", "h", "hB", "hb"],
          UY: ["H", "h", "hB", "hb"],
          JP: ["H", "h", "K"],
          AD: ["H", "hB"],
          AM: ["H", "hB"],
          AO: ["H", "hB"],
          AT: ["H", "hB"],
          AW: ["H", "hB"],
          BE: ["H", "hB"],
          BF: ["H", "hB"],
          BJ: ["H", "hB"],
          BL: ["H", "hB"],
          BR: ["H", "hB"],
          CG: ["H", "hB"],
          CI: ["H", "hB"],
          CV: ["H", "hB"],
          DE: ["H", "hB"],
          EE: ["H", "hB"],
          FR: ["H", "hB"],
          GA: ["H", "hB"],
          GF: ["H", "hB"],
          GN: ["H", "hB"],
          GP: ["H", "hB"],
          GW: ["H", "hB"],
          HR: ["H", "hB"],
          IL: ["H", "hB"],
          IT: ["H", "hB"],
          KZ: ["H", "hB"],
          MC: ["H", "hB"],
          MD: ["H", "hB"],
          MF: ["H", "hB"],
          MQ: ["H", "hB"],
          MZ: ["H", "hB"],
          NC: ["H", "hB"],
          NL: ["H", "hB"],
          PM: ["H", "hB"],
          PT: ["H", "hB"],
          RE: ["H", "hB"],
          RO: ["H", "hB"],
          SI: ["H", "hB"],
          SR: ["H", "hB"],
          ST: ["H", "hB"],
          TG: ["H", "hB"],
          TR: ["H", "hB"],
          WF: ["H", "hB"],
          YT: ["H", "hB"],
          BD: ["h", "hB", "H"],
          PK: ["h", "hB", "H"],
          AZ: ["H", "hB", "h"],
          BA: ["H", "hB", "h"],
          BG: ["H", "hB", "h"],
          CH: ["H", "hB", "h"],
          GE: ["H", "hB", "h"],
          LI: ["H", "hB", "h"],
          ME: ["H", "hB", "h"],
          RS: ["H", "hB", "h"],
          UA: ["H", "hB", "h"],
          UZ: ["H", "hB", "h"],
          XK: ["H", "hB", "h"],
          AG: ["h", "hb", "H", "hB"],
          AU: ["h", "hb", "H", "hB"],
          BB: ["h", "hb", "H", "hB"],
          BM: ["h", "hb", "H", "hB"],
          BS: ["h", "hb", "H", "hB"],
          CA: ["h", "hb", "H", "hB"],
          DM: ["h", "hb", "H", "hB"],
          "en-001": ["h", "hb", "H", "hB"],
          FJ: ["h", "hb", "H", "hB"],
          FM: ["h", "hb", "H", "hB"],
          GD: ["h", "hb", "H", "hB"],
          GM: ["h", "hb", "H", "hB"],
          GU: ["h", "hb", "H", "hB"],
          GY: ["h", "hb", "H", "hB"],
          JM: ["h", "hb", "H", "hB"],
          KI: ["h", "hb", "H", "hB"],
          KN: ["h", "hb", "H", "hB"],
          KY: ["h", "hb", "H", "hB"],
          LC: ["h", "hb", "H", "hB"],
          LR: ["h", "hb", "H", "hB"],
          MH: ["h", "hb", "H", "hB"],
          MP: ["h", "hb", "H", "hB"],
          MW: ["h", "hb", "H", "hB"],
          NZ: ["h", "hb", "H", "hB"],
          SB: ["h", "hb", "H", "hB"],
          SG: ["h", "hb", "H", "hB"],
          SL: ["h", "hb", "H", "hB"],
          SS: ["h", "hb", "H", "hB"],
          SZ: ["h", "hb", "H", "hB"],
          TC: ["h", "hb", "H", "hB"],
          TT: ["h", "hb", "H", "hB"],
          UM: ["h", "hb", "H", "hB"],
          US: ["h", "hb", "H", "hB"],
          VC: ["h", "hb", "H", "hB"],
          VG: ["h", "hb", "H", "hB"],
          VI: ["h", "hb", "H", "hB"],
          ZM: ["h", "hb", "H", "hB"],
          BO: ["H", "hB", "h", "hb"],
          EC: ["H", "hB", "h", "hb"],
          ES: ["H", "hB", "h", "hb"],
          GQ: ["H", "hB", "h", "hb"],
          PE: ["H", "hB", "h", "hb"],
          AE: ["h", "hB", "hb", "H"],
          "ar-001": ["h", "hB", "hb", "H"],
          BH: ["h", "hB", "hb", "H"],
          DZ: ["h", "hB", "hb", "H"],
          EG: ["h", "hB", "hb", "H"],
          EH: ["h", "hB", "hb", "H"],
          HK: ["h", "hB", "hb", "H"],
          IQ: ["h", "hB", "hb", "H"],
          JO: ["h", "hB", "hb", "H"],
          KW: ["h", "hB", "hb", "H"],
          LB: ["h", "hB", "hb", "H"],
          LY: ["h", "hB", "hb", "H"],
          MO: ["h", "hB", "hb", "H"],
          MR: ["h", "hB", "hb", "H"],
          OM: ["h", "hB", "hb", "H"],
          PH: ["h", "hB", "hb", "H"],
          PS: ["h", "hB", "hb", "H"],
          QA: ["h", "hB", "hb", "H"],
          SA: ["h", "hB", "hb", "H"],
          SD: ["h", "hB", "hb", "H"],
          SY: ["h", "hB", "hb", "H"],
          TN: ["h", "hB", "hb", "H"],
          YE: ["h", "hB", "hb", "H"],
          AF: ["H", "hb", "hB", "h"],
          LA: ["H", "hb", "hB", "h"],
          CN: ["H", "hB", "hb", "h"],
          LV: ["H", "hB", "hb", "h"],
          TL: ["H", "hB", "hb", "h"],
          "zu-ZA": ["H", "hB", "hb", "h"],
          CD: ["hB", "H"],
          IR: ["hB", "H"],
          "hi-IN": ["hB", "h", "H"],
          "kn-IN": ["hB", "h", "H"],
          "ml-IN": ["hB", "h", "H"],
          "te-IN": ["hB", "h", "H"],
          KH: ["hB", "h", "H", "hb"],
          "ta-IN": ["hB", "h", "hb", "H"],
          BN: ["hb", "hB", "h", "H"],
          MY: ["hb", "hB", "h", "H"],
          ET: ["hB", "hb", "h", "H"],
          "gu-IN": ["hB", "hb", "h", "H"],
          "mr-IN": ["hB", "hb", "h", "H"],
          "pa-IN": ["hB", "hb", "h", "H"],
          TW: ["hB", "hb", "h", "H"],
          KE: ["hB", "hb", "H", "h"],
          MM: ["hB", "hb", "H", "h"],
          TZ: ["hB", "hb", "H", "h"],
          UG: ["hB", "hb", "H", "h"]
        };

        function nr(e) {
          var t = e.hourCycle;
          if (void 0 === t && e.hourCycles && e.hourCycles.length && (t = e.hourCycles[0]), t) switch (t) {
            case "h24":
              return "k";
            case "h23":
              return "H";
            case "h12":
              return "h";
            case "h11":
              return "K";
            default:
              throw new Error("Invalid hourCycle")
          }
          var n, r = e.language;
          return "root" !== r && (n = e.maximize().region), (tr[n || ""] || tr[r || ""] || tr["".concat(r, "-001")] || tr["001"])[0]
        }
        var rr = new RegExp("^".concat(Hn.source, "*")),
          ir = new RegExp("".concat(Hn.source, "*$"));

        function or(e, t) {
          return {
            start: e,
            end: t
          }
        }
        var ar = !!String.prototype.startsWith,
          sr = !!String.fromCodePoint,
          lr = !!Object.fromEntries,
          cr = !!String.prototype.codePointAt,
          ur = !!String.prototype.trimStart,
          hr = !!String.prototype.trimEnd,
          pr = !!Number.isSafeInteger ? Number.isSafeInteger : function(e) {
            return "number" == typeof e && isFinite(e) && Math.floor(e) === e && Math.abs(e) <= 9007199254740991
          },
          dr = !0;
        try {
          dr = "a" === (null === (er = wr("([^\\p{White_Space}\\p{Pattern_Syntax}]*)", "yu").exec("a")) || void 0 === er ? void 0 : er[0])
        } catch (jC) {
          dr = !1
        }
        var fr, gr = ar ? function(e, t, n) {
            return e.startsWith(t, n)
          } : function(e, t, n) {
            return e.slice(n, n + t.length) === t
          },
          mr = sr ? String.fromCodePoint : function() {
            for (var e = [], t = 0; t < arguments.length; t++) e[t] = arguments[t];
            for (var n, r = "", i = e.length, o = 0; i > o;) {
              if ((n = e[o++]) > 1114111) throw RangeError(n + " is not a valid code point");
              r += n < 65536 ? String.fromCharCode(n) : String.fromCharCode(55296 + ((n -= 65536) >> 10), n % 1024 + 56320)
            }
            return r
          },
          vr = lr ? Object.fromEntries : function(e) {
            for (var t = {}, n = 0, r = e; n < r.length; n++) {
              var i = r[n],
                o = i[0],
                a = i[1];
              t[o] = a
            }
            return t
          },
          _r = cr ? function(e, t) {
            return e.codePointAt(t)
          } : function(e, t) {
            var n = e.length;
            if (!(t < 0 || t >= n)) {
              var r, i = e.charCodeAt(t);
              return i < 55296 || i > 56319 || t + 1 === n || (r = e.charCodeAt(t + 1)) < 56320 || r > 57343 ? i : r - 56320 + (i - 55296 << 10) + 65536
            }
          },
          br = ur ? function(e) {
            return e.trimStart()
          } : function(e) {
            return e.replace(rr, "")
          },
          yr = hr ? function(e) {
            return e.trimEnd()
          } : function(e) {
            return e.replace(ir, "")
          };

        function wr(e, t) {
          return new RegExp(e, t)
        }
        if (dr) {
          var xr = wr("([^\\p{White_Space}\\p{Pattern_Syntax}]*)", "yu");
          fr = function(e, t) {
            var n;
            return xr.lastIndex = t, null !== (n = xr.exec(e)[1]) && void 0 !== n ? n : ""
          }
        } else fr = function(e, t) {
          for (var n = [];;) {
            var r = _r(e, t);
            if (void 0 === r || Er(r) || Tr(r)) break;
            n.push(r), t += r >= 65536 ? 2 : 1
          }
          return mr.apply(void 0, n)
        };
        var kr = function() {
          function e(e, t) {
            void 0 === t && (t = {}), this.message = e, this.position = {
              offset: 0,
              line: 1,
              column: 1
            }, this.ignoreTag = !!t.ignoreTag, this.locale = t.locale, this.requiresOtherClause = !!t.requiresOtherClause, this.shouldParseSkeletons = !!t.shouldParseSkeletons
          }
          return e.prototype.parse = function() {
            if (0 !== this.offset()) throw Error("parser can only be used once");
            return this.parseMessage(0, "", !1)
          }, e.prototype.parseMessage = function(e, t, n) {
            for (var r = []; !this.isEOF();) {
              var i = this.char();
              if (123 === i) {
                if ((o = this.parseArgument(e, n)).err) return o;
                r.push(o.val)
              } else {
                if (125 === i && e > 0) break;
                if (35 !== i || "plural" !== t && "selectordinal" !== t) {
                  if (60 === i && !this.ignoreTag && 47 === this.peek()) {
                    if (n) break;
                    return this.error(nn.UNMATCHED_CLOSING_TAG, or(this.clonePosition(), this.clonePosition()))
                  }
                  if (60 === i && !this.ignoreTag && Cr(this.peek() || 0)) {
                    if ((o = this.parseTag(e, t)).err) return o;
                    r.push(o.val)
                  } else {
                    var o;
                    if ((o = this.parseLiteral(e, t)).err) return o;
                    r.push(o.val)
                  }
                } else {
                  var a = this.clonePosition();
                  this.bump(), r.push({
                    type: rn.pound,
                    location: or(a, this.clonePosition())
                  })
                }
              }
            }
            return {
              val: r,
              err: null
            }
          }, e.prototype.parseTag = function(e, t) {
            var n = this.clonePosition();
            this.bump();
            var r = this.parseTagName();
            if (this.bumpSpace(), this.bumpIf("/>")) return {
              val: {
                type: rn.literal,
                value: "<".concat(r, "/>"),
                location: or(n, this.clonePosition())
              },
              err: null
            };
            if (this.bumpIf(">")) {
              var i = this.parseMessage(e + 1, t, !0);
              if (i.err) return i;
              var o = i.val,
                a = this.clonePosition();
              if (this.bumpIf("</")) {
                if (this.isEOF() || !Cr(this.char())) return this.error(nn.INVALID_TAG, or(a, this.clonePosition()));
                var s = this.clonePosition();
                return r !== this.parseTagName() ? this.error(nn.UNMATCHED_CLOSING_TAG, or(s, this.clonePosition())) : (this.bumpSpace(), this.bumpIf(">") ? {
                  val: {
                    type: rn.tag,
                    value: r,
                    children: o,
                    location: or(n, this.clonePosition())
                  },
                  err: null
                } : this.error(nn.INVALID_TAG, or(a, this.clonePosition())))
              }
              return this.error(nn.UNCLOSED_TAG, or(n, this.clonePosition()))
            }
            return this.error(nn.INVALID_TAG, or(n, this.clonePosition()))
          }, e.prototype.parseTagName = function() {
            var e = this.offset();
            for (this.bump(); !this.isEOF() && Sr(this.char());) this.bump();
            return this.message.slice(e, this.offset())
          }, e.prototype.parseLiteral = function(e, t) {
            for (var n = this.clonePosition(), r = "";;) {
              var i = this.tryParseQuote(t);
              if (i) r += i;
              else {
                var o = this.tryParseUnquoted(e, t);
                if (o) r += o;
                else {
                  var a = this.tryParseLeftAngleBracket();
                  if (!a) break;
                  r += a
                }
              }
            }
            var s = or(n, this.clonePosition());
            return {
              val: {
                type: rn.literal,
                value: r,
                location: s
              },
              err: null
            }
          }, e.prototype.tryParseLeftAngleBracket = function() {
            return this.isEOF() || 60 !== this.char() || !this.ignoreTag && (Cr(e = this.peek() || 0) || 47 === e) ? null : (this.bump(), "<");
            var e
          }, e.prototype.tryParseQuote = function(e) {
            if (this.isEOF() || 39 !== this.char()) return null;
            switch (this.peek()) {
              case 39:
                return this.bump(), this.bump(), "'";
              case 123:
              case 60:
              case 62:
              case 125:
                break;
              case 35:
                if ("plural" === e || "selectordinal" === e) break;
                return null;
              default:
                return null
            }
            this.bump();
            var t = [this.char()];
            for (this.bump(); !this.isEOF();) {
              var n = this.char();
              if (39 === n) {
                if (39 !== this.peek()) {
                  this.bump();
                  break
                }
                t.push(39), this.bump()
              } else t.push(n);
              this.bump()
            }
            return mr.apply(void 0, t)
          }, e.prototype.tryParseUnquoted = function(e, t) {
            if (this.isEOF()) return null;
            var n = this.char();
            return 60 === n || 123 === n || 35 === n && ("plural" === t || "selectordinal" === t) || 125 === n && e > 0 ? null : (this.bump(), mr(n))
          }, e.prototype.parseArgument = function(e, t) {
            var n = this.clonePosition();
            if (this.bump(), this.bumpSpace(), this.isEOF()) return this.error(nn.EXPECT_ARGUMENT_CLOSING_BRACE, or(n, this.clonePosition()));
            if (125 === this.char()) return this.bump(), this.error(nn.EMPTY_ARGUMENT, or(n, this.clonePosition()));
            var r = this.parseIdentifierIfPossible().value;
            if (!r) return this.error(nn.MALFORMED_ARGUMENT, or(n, this.clonePosition()));
            if (this.bumpSpace(), this.isEOF()) return this.error(nn.EXPECT_ARGUMENT_CLOSING_BRACE, or(n, this.clonePosition()));
            switch (this.char()) {
              case 125:
                return this.bump(), {
                  val: {
                    type: rn.argument,
                    value: r,
                    location: or(n, this.clonePosition())
                  },
                  err: null
                };
              case 44:
                return this.bump(), this.bumpSpace(), this.isEOF() ? this.error(nn.EXPECT_ARGUMENT_CLOSING_BRACE, or(n, this.clonePosition())) : this.parseArgumentOptions(e, t, r, n);
              default:
                return this.error(nn.MALFORMED_ARGUMENT, or(n, this.clonePosition()))
            }
          }, e.prototype.parseIdentifierIfPossible = function() {
            var e = this.clonePosition(),
              t = this.offset(),
              n = fr(this.message, t),
              r = t + n.length;
            return this.bumpTo(r), {
              value: n,
              location: or(e, this.clonePosition())
            }
          }, e.prototype.parseArgumentOptions = function(e, t, n, r) {
            var i, o = this.clonePosition(),
              a = this.parseIdentifierIfPossible().value,
              s = this.clonePosition();
            switch (a) {
              case "":
                return this.error(nn.EXPECT_ARGUMENT_TYPE, or(o, s));
              case "number":
              case "date":
              case "time":
                this.bumpSpace();
                var l = null;
                if (this.bumpIf(",")) {
                  this.bumpSpace();
                  var c = this.clonePosition();
                  if ((v = this.parseSimpleArgStyleIfPossible()).err) return v;
                  if (0 === (d = yr(v.val)).length) return this.error(nn.EXPECT_ARGUMENT_STYLE, or(this.clonePosition(), this.clonePosition()));
                  l = {
                    style: d,
                    styleLocation: or(c, this.clonePosition())
                  }
                }
                if ((_ = this.tryParseArgumentClose(r)).err) return _;
                var u = or(r, this.clonePosition());
                if (l && gr(null == l ? void 0 : l.style, "::", 0)) {
                  var h = br(l.style.slice(2));
                  if ("number" === a) return (v = this.parseNumberSkeletonFromString(h, l.styleLocation)).err ? v : {
                    val: {
                      type: rn.number,
                      value: n,
                      location: u,
                      style: v.val
                    },
                    err: null
                  };
                  if (0 === h.length) return this.error(nn.EXPECT_DATE_TIME_SKELETON, u);
                  var p = h;
                  this.locale && (p = function(e, t) {
                    for (var n = "", r = 0; r < e.length; r++) {
                      var i = e.charAt(r);
                      if ("j" === i) {
                        for (var o = 0; r + 1 < e.length && e.charAt(r + 1) === i;) o++, r++;
                        var a = 1 + (1 & o),
                          s = o < 2 ? 1 : 3 + (o >> 1),
                          l = nr(t);
                        for ("H" != l && "k" != l || (s = 0); s-- > 0;) n += "a";
                        for (; a-- > 0;) n = l + n
                      } else n += "J" === i ? "H" : i
                    }
                    return n
                  }(h, this.locale));
                  var d = {
                    type: on.dateTime,
                    pattern: p,
                    location: l.styleLocation,
                    parsedOptions: this.shouldParseSkeletons ? Wn(p) : {}
                  };
                  return {
                    val: {
                      type: "date" === a ? rn.date : rn.time,
                      value: n,
                      location: u,
                      style: d
                    },
                    err: null
                  }
                }
                return {
                  val: {
                    type: "number" === a ? rn.number : "date" === a ? rn.date : rn.time,
                    value: n,
                    location: u,
                    style: null !== (i = null == l ? void 0 : l.style) && void 0 !== i ? i : null
                  }, err: null
                };
              case "plural":
              case "selectordinal":
              case "select":
                var f = this.clonePosition();
                if (this.bumpSpace(), !this.bumpIf(",")) return this.error(nn.EXPECT_SELECT_ARGUMENT_OPTIONS, or(f, G({}, f)));
                this.bumpSpace();
                var g = this.parseIdentifierIfPossible(),
                  m = 0;
                if ("select" !== a && "offset" === g.value) {
                  if (!this.bumpIf(":")) return this.error(nn.EXPECT_PLURAL_ARGUMENT_OFFSET_VALUE, or(this.clonePosition(), this.clonePosition()));
                  var v;
                  if (this.bumpSpace(), (v = this.tryParseDecimalInteger(nn.EXPECT_PLURAL_ARGUMENT_OFFSET_VALUE, nn.INVALID_PLURAL_ARGUMENT_OFFSET_VALUE)).err) return v;
                  this.bumpSpace(), g = this.parseIdentifierIfPossible(), m = v.val
                }
                var _, b = this.tryParsePluralOrSelectOptions(e, a, t, g);
                if (b.err) return b;
                if ((_ = this.tryParseArgumentClose(r)).err) return _;
                var y = or(r, this.clonePosition());
                return "select" === a ? {
                  val: {
                    type: rn.select,
                    value: n,
                    options: vr(b.val),
                    location: y
                  },
                  err: null
                } : {
                  val: {
                    type: rn.plural,
                    value: n,
                    options: vr(b.val),
                    offset: m,
                    pluralType: "plural" === a ? "cardinal" : "ordinal",
                    location: y
                  },
                  err: null
                };
              default:
                return this.error(nn.INVALID_ARGUMENT_TYPE, or(o, s))
            }
          }, e.prototype.tryParseArgumentClose = function(e) {
            return this.isEOF() || 125 !== this.char() ? this.error(nn.EXPECT_ARGUMENT_CLOSING_BRACE, or(e, this.clonePosition())) : (this.bump(), {
              val: !0,
              err: null
            })
          }, e.prototype.parseSimpleArgStyleIfPossible = function() {
            for (var e = 0, t = this.clonePosition(); !this.isEOF();) {
              switch (this.char()) {
                case 39:
                  this.bump();
                  var n = this.clonePosition();
                  if (!this.bumpUntil("'")) return this.error(nn.UNCLOSED_QUOTE_IN_ARGUMENT_STYLE, or(n, this.clonePosition()));
                  this.bump();
                  break;
                case 123:
                  e += 1, this.bump();
                  break;
                case 125:
                  if (!(e > 0)) return {
                    val: this.message.slice(t.offset, this.offset()),
                    err: null
                  };
                  e -= 1;
                  break;
                default:
                  this.bump()
              }
            }
            return {
              val: this.message.slice(t.offset, this.offset()),
              err: null
            }
          }, e.prototype.parseNumberSkeletonFromString = function(e, t) {
            var n = [];
            try {
              n = function(e) {
                if (0 === e.length) throw new Error("Number skeleton cannot be empty");
                for (var t = e.split(Vn).filter((function(e) {
                    return e.length > 0
                  })), n = [], r = 0, i = t; r < i.length; r++) {
                  var o = i[r].split("/");
                  if (0 === o.length) throw new Error("Invalid number skeleton");
                  for (var a = o[0], s = o.slice(1), l = 0, c = s; l < c.length; l++)
                    if (0 === c[l].length) throw new Error("Invalid number skeleton");
                  n.push({
                    stem: a,
                    options: s
                  })
                }
                return n
              }(e)
            } catch (e) {
              return this.error(nn.INVALID_NUMBER_SKELETON, t)
            }
            return {
              val: {
                type: on.number,
                tokens: n,
                location: t,
                parsedOptions: this.shouldParseSkeletons ? Qn(n) : {}
              },
              err: null
            }
          }, e.prototype.tryParsePluralOrSelectOptions = function(e, t, n, r) {
            for (var i, o = !1, a = [], s = new Set, l = r.value, c = r.location;;) {
              if (0 === l.length) {
                var u = this.clonePosition();
                if ("select" === t || !this.bumpIf("=")) break;
                var h = this.tryParseDecimalInteger(nn.EXPECT_PLURAL_ARGUMENT_SELECTOR, nn.INVALID_PLURAL_ARGUMENT_SELECTOR);
                if (h.err) return h;
                c = or(u, this.clonePosition()), l = this.message.slice(u.offset, this.offset())
              }
              if (s.has(l)) return this.error("select" === t ? nn.DUPLICATE_SELECT_ARGUMENT_SELECTOR : nn.DUPLICATE_PLURAL_ARGUMENT_SELECTOR, c);
              "other" === l && (o = !0), this.bumpSpace();
              var p = this.clonePosition();
              if (!this.bumpIf("{")) return this.error("select" === t ? nn.EXPECT_SELECT_ARGUMENT_SELECTOR_FRAGMENT : nn.EXPECT_PLURAL_ARGUMENT_SELECTOR_FRAGMENT, or(this.clonePosition(), this.clonePosition()));
              var d = this.parseMessage(e + 1, t, n);
              if (d.err) return d;
              var f = this.tryParseArgumentClose(p);
              if (f.err) return f;
              a.push([l, {
                value: d.val,
                location: or(p, this.clonePosition())
              }]), s.add(l), this.bumpSpace(), l = (i = this.parseIdentifierIfPossible()).value, c = i.location
            }
            return 0 === a.length ? this.error("select" === t ? nn.EXPECT_SELECT_ARGUMENT_SELECTOR : nn.EXPECT_PLURAL_ARGUMENT_SELECTOR, or(this.clonePosition(), this.clonePosition())) : this.requiresOtherClause && !o ? this.error(nn
              .MISSING_OTHER_CLAUSE, or(this.clonePosition(), this.clonePosition())) : {
              val: a,
              err: null
            }
          }, e.prototype.tryParseDecimalInteger = function(e, t) {
            var n = 1,
              r = this.clonePosition();
            this.bumpIf("+") || this.bumpIf("-") && (n = -1);
            for (var i = !1, o = 0; !this.isEOF();) {
              var a = this.char();
              if (!(a >= 48 && a <= 57)) break;
              i = !0, o = 10 * o + (a - 48), this.bump()
            }
            var s = or(r, this.clonePosition());
            return i ? pr(o *= n) ? {
              val: o,
              err: null
            } : this.error(t, s) : this.error(e, s)
          }, e.prototype.offset = function() {
            return this.position.offset
          }, e.prototype.isEOF = function() {
            return this.offset() === this.message.length
          }, e.prototype.clonePosition = function() {
            return {
              offset: this.position.offset,
              line: this.position.line,
              column: this.position.column
            }
          }, e.prototype.char = function() {
            var e = this.position.offset;
            if (e >= this.message.length) throw Error("out of bound");
            var t = _r(this.message, e);
            if (void 0 === t) throw Error("Offset ".concat(e, " is at invalid UTF-16 code unit boundary"));
            return t
          }, e.prototype.error = function(e, t) {
            return {
              val: null,
              err: {
                kind: e,
                message: this.message,
                location: t
              }
            }
          }, e.prototype.bump = function() {
            if (!this.isEOF()) {
              var e = this.char();
              10 === e ? (this.position.line += 1, this.position.column = 1, this.position.offset += 1) : (this.position.column += 1, this.position.offset += e < 65536 ? 1 : 2)
            }
          }, e.prototype.bumpIf = function(e) {
            if (gr(this.message, e, this.offset())) {
              for (var t = 0; t < e.length; t++) this.bump();
              return !0
            }
            return !1
          }, e.prototype.bumpUntil = function(e) {
            var t = this.offset(),
              n = this.message.indexOf(e, t);
            return n >= 0 ? (this.bumpTo(n), !0) : (this.bumpTo(this.message.length), !1)
          }, e.prototype.bumpTo = function(e) {
            if (this.offset() > e) throw Error("targetOffset ".concat(e, " must be greater than or equal to the current offset ").concat(this.offset()));
            for (e = Math.min(e, this.message.length);;) {
              var t = this.offset();
              if (t === e) break;
              if (t > e) throw Error("targetOffset ".concat(e, " is at invalid UTF-16 code unit boundary"));
              if (this.bump(), this.isEOF()) break
            }
          }, e.prototype.bumpSpace = function() {
            for (; !this.isEOF() && Er(this.char());) this.bump()
          }, e.prototype.peek = function() {
            if (this.isEOF()) return null;
            var e = this.char(),
              t = this.offset(),
              n = this.message.charCodeAt(t + (e >= 65536 ? 2 : 1));
            return null != n ? n : null
          }, e
        }();

        function Cr(e) {
          return e >= 97 && e <= 122 || e >= 65 && e <= 90
        }

        function Sr(e) {
          return 45 === e || 46 === e || e >= 48 && e <= 57 || 95 === e || e >= 97 && e <= 122 || e >= 65 && e <= 90 || 183 == e || e >= 192 && e <= 214 || e >= 216 && e <= 246 || e >= 248 && e <= 893 || e >= 895 && e <= 8191 || e >= 8204 && e <=
            8205 || e >= 8255 && e <= 8256 || e >= 8304 && e <= 8591 || e >= 11264 && e <= 12271 || e >= 12289 && e <= 55295 || e >= 63744 && e <= 64975 || e >= 65008 && e <= 65533 || e >= 65536 && e <= 983039
        }

        function Er(e) {
          return e >= 9 && e <= 13 || 32 === e || 133 === e || e >= 8206 && e <= 8207 || 8232 === e || 8233 === e
        }

        function Tr(e) {
          return e >= 33 && e <= 35 || 36 === e || e >= 37 && e <= 39 || 40 === e || 41 === e || 42 === e || 43 === e || 44 === e || 45 === e || e >= 46 && e <= 47 || e >= 58 && e <= 59 || e >= 60 && e <= 62 || e >= 63 && e <= 64 || 91 === e ||
            92 === e || 93 === e || 94 === e || 96 === e || 123 === e || 124 === e || 125 === e || 126 === e || 161 === e || e >= 162 && e <= 165 || 166 === e || 167 === e || 169 === e || 171 === e || 172 === e || 174 === e || 176 === e ||
            177 === e || 182 === e || 187 === e || 191 === e || 215 === e || 247 === e || e >= 8208 && e <= 8213 || e >= 8214 && e <= 8215 || 8216 === e || 8217 === e || 8218 === e || e >= 8219 && e <= 8220 || 8221 === e || 8222 === e || 8223 ===
            e || e >= 8224 && e <= 8231 || e >= 8240 && e <= 8248 || 8249 === e || 8250 === e || e >= 8251 && e <= 8254 || e >= 8257 && e <= 8259 || 8260 === e || 8261 === e || 8262 === e || e >= 8263 && e <= 8273 || 8274 === e || 8275 === e ||
            e >= 8277 && e <= 8286 || e >= 8592 && e <= 8596 || e >= 8597 && e <= 8601 || e >= 8602 && e <= 8603 || e >= 8604 && e <= 8607 || 8608 === e || e >= 8609 && e <= 8610 || 8611 === e || e >= 8612 && e <= 8613 || 8614 === e || e >=
            8615 && e <= 8621 || 8622 === e || e >= 8623 && e <= 8653 || e >= 8654 && e <= 8655 || e >= 8656 && e <= 8657 || 8658 === e || 8659 === e || 8660 === e || e >= 8661 && e <= 8691 || e >= 8692 && e <= 8959 || e >= 8960 && e <= 8967 ||
            8968 === e || 8969 === e || 8970 === e || 8971 === e || e >= 8972 && e <= 8991 || e >= 8992 && e <= 8993 || e >= 8994 && e <= 9e3 || 9001 === e || 9002 === e || e >= 9003 && e <= 9083 || 9084 === e || e >= 9085 && e <= 9114 || e >=
            9115 && e <= 9139 || e >= 9140 && e <= 9179 || e >= 9180 && e <= 9185 || e >= 9186 && e <= 9254 || e >= 9255 && e <= 9279 || e >= 9280 && e <= 9290 || e >= 9291 && e <= 9311 || e >= 9472 && e <= 9654 || 9655 === e || e >= 9656 && e <=
            9664 || 9665 === e || e >= 9666 && e <= 9719 || e >= 9720 && e <= 9727 || e >= 9728 && e <= 9838 || 9839 === e || e >= 9840 && e <= 10087 || 10088 === e || 10089 === e || 10090 === e || 10091 === e || 10092 === e || 10093 === e ||
            10094 === e || 10095 === e || 10096 === e || 10097 === e || 10098 === e || 10099 === e || 10100 === e || 10101 === e || e >= 10132 && e <= 10175 || e >= 10176 && e <= 10180 || 10181 === e || 10182 === e || e >= 10183 && e <= 10213 ||
            10214 === e || 10215 === e || 10216 === e || 10217 === e || 10218 === e || 10219 === e || 10220 === e || 10221 === e || 10222 === e || 10223 === e || e >= 10224 && e <= 10239 || e >= 10240 && e <= 10495 || e >= 10496 && e <= 10626 ||
            10627 === e || 10628 === e || 10629 === e || 10630 === e || 10631 === e || 10632 === e || 10633 === e || 10634 === e || 10635 === e || 10636 === e || 10637 === e || 10638 === e || 10639 === e || 10640 === e || 10641 === e || 10642 ===
            e || 10643 === e || 10644 === e || 10645 === e || 10646 === e || 10647 === e || 10648 === e || e >= 10649 && e <= 10711 || 10712 === e || 10713 === e || 10714 === e || 10715 === e || e >= 10716 && e <= 10747 || 10748 === e ||
            10749 === e || e >= 10750 && e <= 11007 || e >= 11008 && e <= 11055 || e >= 11056 && e <= 11076 || e >= 11077 && e <= 11078 || e >= 11079 && e <= 11084 || e >= 11085 && e <= 11123 || e >= 11124 && e <= 11125 || e >= 11126 && e <=
            11157 || 11158 === e || e >= 11159 && e <= 11263 || e >= 11776 && e <= 11777 || 11778 === e || 11779 === e || 11780 === e || 11781 === e || e >= 11782 && e <= 11784 || 11785 === e || 11786 === e || 11787 === e || 11788 === e ||
            11789 === e || e >= 11790 && e <= 11798 || 11799 === e || e >= 11800 && e <= 11801 || 11802 === e || 11803 === e || 11804 === e || 11805 === e || e >= 11806 && e <= 11807 || 11808 === e || 11809 === e || 11810 === e || 11811 === e ||
            11812 === e || 11813 === e || 11814 === e || 11815 === e || 11816 === e || 11817 === e || e >= 11818 && e <= 11822 || 11823 === e || e >= 11824 && e <= 11833 || e >= 11834 && e <= 11835 || e >= 11836 && e <= 11839 || 11840 === e ||
            11841 === e || 11842 === e || e >= 11843 && e <= 11855 || e >= 11856 && e <= 11857 || 11858 === e || e >= 11859 && e <= 11903 || e >= 12289 && e <= 12291 || 12296 === e || 12297 === e || 12298 === e || 12299 === e || 12300 === e ||
            12301 === e || 12302 === e || 12303 === e || 12304 === e || 12305 === e || e >= 12306 && e <= 12307 || 12308 === e || 12309 === e || 12310 === e || 12311 === e || 12312 === e || 12313 === e || 12314 === e || 12315 === e || 12316 ===
            e || 12317 === e || e >= 12318 && e <= 12319 || 12320 === e || 12336 === e || 64830 === e || 64831 === e || e >= 65093 && e <= 65094
        }

        function Or(e) {
          e.forEach((function(e) {
            if (delete e.location, jn(e) || Nn(e))
              for (var t in e.options) delete e.options[t].location, Or(e.options[t].value);
            else Dn(e) && Bn(e.style) || (In(e) || Rn(e)) && zn(e.style) ? delete e.style.location : Fn(e) && Or(e.children)
          }))
        }

        function Ar(e, t) {
          void 0 === t && (t = {}), t = G({
            shouldParseSkeletons: !0,
            requiresOtherClause: !0
          }, t);
          var n = new kr(e, t).parse();
          if (n.err) {
            var r = SyntaxError(nn[n.err.kind]);
            throw r.location = n.err.location, r.originalMessage = n.err.message, r
          }
          return (null == t ? void 0 : t.captureLocation) || Or(n.val), n.val
        }

        function Pr(e, t) {
          var n = t && t.cache ? t.cache : Fr,
            r = t && t.serializer ? t.serializer : jr;
          return (t && t.strategy ? t.strategy : Rr)(e, {
            cache: n,
            serializer: r
          })
        }

        function Mr(e, t, n, r) {
          var i, o = null == (i = r) || "number" == typeof i || "boolean" == typeof i ? r : n(r),
            a = t.get(o);
          return void 0 === a && (a = e.call(this, r), t.set(o, a)), a
        }

        function Dr(e, t, n) {
          var r = Array.prototype.slice.call(arguments, 3),
            i = n(r),
            o = t.get(i);
          return void 0 === o && (o = e.apply(this, r), t.set(i, o)), o
        }

        function Ir(e, t, n, r, i) {
          return n.bind(t, e, r, i)
        }

        function Rr(e, t) {
          return Ir(e, this, 1 === e.length ? Mr : Dr, t.cache.create(), t.serializer)
        }
        var jr = function() {
          return JSON.stringify(arguments)
        };

        function Nr() {
          this.cache = Object.create(null)
        }
        Nr.prototype.get = function(e) {
          return this.cache[e]
        }, Nr.prototype.set = function(e, t) {
          this.cache[e] = t
        };
        var Lr, Fr = {
            create: function() {
              return new Nr
            }
          },
          Br = {
            variadic: function(e, t) {
              return Ir(e, this, Dr, t.cache.create(), t.serializer)
            },
            monadic: function(e, t) {
              return Ir(e, this, Mr, t.cache.create(), t.serializer)
            }
          };
        ! function(e) {
          e.MISSING_VALUE = "MISSING_VALUE", e.INVALID_VALUE = "INVALID_VALUE", e.MISSING_INTL_API = "MISSING_INTL_API"
        }(Lr || (Lr = {}));
        var zr, Hr = function(e) {
            function t(t, n, r) {
              var i = e.call(this, t) || this;
              return i.code = n, i.originalMessage = r, i
            }
            return X(t, e), t.prototype.toString = function() {
              return "[formatjs Error: ".concat(this.code, "] ").concat(this.message)
            }, t
          }(Error),
          Ur = function(e) {
            function t(t, n, r, i) {
              return e.call(this, 'Invalid values for "'.concat(t, '": "').concat(n, '". Options are "').concat(Object.keys(r).join('", "'), '"'), Lr.INVALID_VALUE, i) || this
            }
            return X(t, e), t
          }(Hr),
          Wr = function(e) {
            function t(t, n, r) {
              return e.call(this, 'Value for "'.concat(t, '" must be of type ').concat(n), Lr.INVALID_VALUE, r) || this
            }
            return X(t, e), t
          }(Hr),
          Vr = function(e) {
            function t(t, n) {
              return e.call(this, 'The intl string context variable "'.concat(t, '" was not provided to the string "').concat(n, '"'), Lr.MISSING_VALUE, n) || this
            }
            return X(t, e), t
          }(Hr);

        function Xr(e) {
          return "function" == typeof e
        }

        function Gr(e, t, n, r, i, o, a) {
          if (1 === e.length && Pn(e[0])) return [{
            type: zr.literal,
            value: e[0].value
          }];
          for (var s = [], l = 0, c = e; l < c.length; l++) {
            var u = c[l];
            if (Pn(u)) s.push({
              type: zr.literal,
              value: u.value
            });
            else if (Ln(u)) "number" == typeof o && s.push({
              type: zr.literal,
              value: n.getNumberFormat(t).format(o)
            });
            else {
              var h = u.value;
              if (!i || !(h in i)) throw new Vr(h, a);
              var p = i[h];
              if (Mn(u)) p && "string" != typeof p && "number" != typeof p || (p = "string" == typeof p || "number" == typeof p ? String(p) : ""), s.push({
                type: "string" == typeof p ? zr.literal : zr.object,
                value: p
              });
              else if (In(u)) {
                var d = "string" == typeof u.style ? r.date[u.style] : zn(u.style) ? u.style.parsedOptions : void 0;
                s.push({
                  type: zr.literal,
                  value: n.getDateTimeFormat(t, d).format(p)
                })
              } else if (Rn(u)) {
                d = "string" == typeof u.style ? r.time[u.style] : zn(u.style) ? u.style.parsedOptions : r.time.medium;
                s.push({
                  type: zr.literal,
                  value: n.getDateTimeFormat(t, d).format(p)
                })
              } else if (Dn(u)) {
                (d = "string" == typeof u.style ? r.number[u.style] : Bn(u.style) ? u.style.parsedOptions : void 0) && d.scale && (p *= d.scale || 1), s.push({
                  type: zr.literal,
                  value: n.getNumberFormat(t, d).format(p)
                })
              } else {
                if (Fn(u)) {
                  var f = u.children,
                    g = u.value,
                    m = i[g];
                  if (!Xr(m)) throw new Wr(g, "function", a);
                  var v = m(Gr(f, t, n, r, i, o).map((function(e) {
                    return e.value
                  })));
                  Array.isArray(v) || (v = [v]), s.push.apply(s, v.map((function(e) {
                    return {
                      type: "string" == typeof e ? zr.literal : zr.object,
                      value: e
                    }
                  })))
                }
                if (jn(u)) {
                  if (!(_ = u.options[p] || u.options.other)) throw new Ur(u.value, p, Object.keys(u.options), a);
                  s.push.apply(s, Gr(_.value, t, n, r, i))
                } else if (Nn(u)) {
                  var _;
                  if (!(_ = u.options["=".concat(p)])) {
                    if (!Intl.PluralRules) throw new Hr('Intl.PluralRules is not available in this environment.\nTry polyfilling it using "@formatjs/intl-pluralrules"\n', Lr.MISSING_INTL_API, a);
                    var b = n.getPluralRules(t, {
                      type: u.pluralType
                    }).select(p - (u.offset || 0));
                    _ = u.options[b] || u.options.other
                  }
                  if (!_) throw new Ur(u.value, p, Object.keys(u.options), a);
                  s.push.apply(s, Gr(_.value, t, n, r, i, p - (u.offset || 0)))
                } else;
              }
            }
          }
          return function(e) {
            return e.length < 2 ? e : e.reduce((function(e, t) {
              var n = e[e.length - 1];
              return n && n.type === zr.literal && t.type === zr.literal ? n.value += t.value : e.push(t), e
            }), [])
          }(s)
        }

        function Yr(e, t) {
          return t ? Object.keys(e).reduce((function(n, r) {
            var i, o;
            return n[r] = (i = e[r], (o = t[r]) ? G(G(G({}, i || {}), o || {}), Object.keys(i).reduce((function(e, t) {
              return e[t] = G(G({}, i[t]), o[t] || {}), e
            }), {})) : i), n
          }), G({}, e)) : e
        }

        function qr(e) {
          return {
            create: function() {
              return {
                get: function(t) {
                  return e[t]
                },
                set: function(t, n) {
                  e[t] = n
                }
              }
            }
          }
        }! function(e) {
          e[e.literal = 0] = "literal", e[e.object = 1] = "object"
        }(zr || (zr = {}));
        var Kr, Zr = function() {
          function e(t, n, r, i) {
            void 0 === n && (n = e.defaultLocale);
            var o, a = this;
            if (this.formatterCache = {
                number: {},
                dateTime: {},
                pluralRules: {}
              }, this.format = function(e) {
                var t = a.formatToParts(e);
                if (1 === t.length) return t[0].value;
                var n = t.reduce((function(e, t) {
                  return e.length && t.type === zr.literal && "string" == typeof e[e.length - 1] ? e[e.length - 1] += t.value : e.push(t.value), e
                }), []);
                return n.length <= 1 ? n[0] || "" : n
              }, this.formatToParts = function(e) {
                return Gr(a.ast, a.locales, a.formatters, a.formats, e, void 0, a.message)
              }, this.resolvedOptions = function() {
                var e;
                return {
                  locale: (null === (e = a.resolvedLocale) || void 0 === e ? void 0 : e.toString()) || Intl.NumberFormat.supportedLocalesOf(a.locales)[0]
                }
              }, this.getAst = function() {
                return a.ast
              }, this.locales = n, this.resolvedLocale = e.resolveLocale(n), "string" == typeof t) {
              if (this.message = t, !e.__parse) throw new TypeError("IntlMessageFormat.__parse must be set to process `message` of type `string`");
              var s = Y(i || {}, ["formatters"]);
              this.ast = e.__parse(t, G(G({}, s), {
                locale: this.resolvedLocale
              }))
            } else this.ast = t;
            if (!Array.isArray(this.ast)) throw new TypeError("A message must be provided as a String or AST.");
            this.formats = Yr(e.formats, r), this.formatters = i && i.formatters || (void 0 === (o = this.formatterCache) && (o = {
              number: {},
              dateTime: {},
              pluralRules: {}
            }), {
              getNumberFormat: Pr((function() {
                for (var e, t = [], n = 0; n < arguments.length; n++) t[n] = arguments[n];
                return new((e = Intl.NumberFormat).bind.apply(e, $([void 0], t, !1)))
              }), {
                cache: qr(o.number),
                strategy: Br.variadic
              }),
              getDateTimeFormat: Pr((function() {
                for (var e, t = [], n = 0; n < arguments.length; n++) t[n] = arguments[n];
                return new((e = Intl.DateTimeFormat).bind.apply(e, $([void 0], t, !1)))
              }), {
                cache: qr(o.dateTime),
                strategy: Br.variadic
              }),
              getPluralRules: Pr((function() {
                for (var e, t = [], n = 0; n < arguments.length; n++) t[n] = arguments[n];
                return new((e = Intl.PluralRules).bind.apply(e, $([void 0], t, !1)))
              }), {
                cache: qr(o.pluralRules),
                strategy: Br.variadic
              })
            })
          }
          return Object.defineProperty(e, "defaultLocale", {
            get: function() {
              return e.memoizedDefaultLocale || (e.memoizedDefaultLocale = (new Intl.NumberFormat).resolvedOptions().locale), e.memoizedDefaultLocale
            },
            enumerable: !1,
            configurable: !0
          }), e.memoizedDefaultLocale = null, e.resolveLocale = function(e) {
            if (void 0 !== Intl.Locale) {
              var t = Intl.NumberFormat.supportedLocalesOf(e);
              return t.length > 0 ? new Intl.Locale(t[0]) : new Intl.Locale("string" == typeof e ? e : e[0])
            }
          }, e.__parse = Ar, e.formats = {
            number: {
              integer: {
                maximumFractionDigits: 0
              },
              currency: {
                style: "currency"
              },
              percent: {
                style: "percent"
              }
            },
            date: {
              short: {
                month: "numeric",
                day: "numeric",
                year: "2-digit"
              },
              medium: {
                month: "short",
                day: "numeric",
                year: "numeric"
              },
              long: {
                month: "long",
                day: "numeric",
                year: "numeric"
              },
              full: {
                weekday: "long",
                month: "long",
                day: "numeric",
                year: "numeric"
              }
            },
            time: {
              short: {
                hour: "numeric",
                minute: "numeric"
              },
              medium: {
                hour: "numeric",
                minute: "numeric",
                second: "numeric"
              },
              long: {
                hour: "numeric",
                minute: "numeric",
                second: "numeric",
                timeZoneName: "short"
              },
              full: {
                hour: "numeric",
                minute: "numeric",
                second: "numeric",
                timeZoneName: "short"
              }
            }
          }, e
        }();
        ! function(e) {
          e.FORMAT_ERROR = "FORMAT_ERROR", e.UNSUPPORTED_FORMATTER = "UNSUPPORTED_FORMATTER", e.INVALID_CONFIG = "INVALID_CONFIG", e.MISSING_DATA = "MISSING_DATA", e.MISSING_TRANSLATION = "MISSING_TRANSLATION"
        }(Kr || (Kr = {}));
        var $r = function(e) {
            function t(n, r, i) {
              var o = this,
                a = i ? i instanceof Error ? i : new Error(String(i)) : void 0;
              return (o = e.call(this, "[@formatjs/intl Error ".concat(n, "] ").concat(r, "\n").concat(a ? "\n".concat(a.message, "\n").concat(a.stack) : "")) || this).code = n, "function" == typeof Error.captureStackTrace && Error
                .captureStackTrace(o, t), o
            }
            return X(t, e), t
          }(Error),
          Jr = function(e) {
            function t(t, n) {
              return e.call(this, Kr.UNSUPPORTED_FORMATTER, t, n) || this
            }
            return X(t, e), t
          }($r),
          Qr = function(e) {
            function t(t, n) {
              return e.call(this, Kr.INVALID_CONFIG, t, n) || this
            }
            return X(t, e), t
          }($r),
          ei = function(e) {
            function t(t, n) {
              return e.call(this, Kr.MISSING_DATA, t, n) || this
            }
            return X(t, e), t
          }($r),
          ti = function(e) {
            function t(t, n, r) {
              return e.call(this, Kr.FORMAT_ERROR, "".concat(t, "\nLocale: ").concat(n, "\n"), r) || this
            }
            return X(t, e), t
          }($r),
          ni = function(e) {
            function t(t, n, r, i) {
              var o = e.call(this, "".concat(t, "\nMessageID: ").concat(null == r ? void 0 : r.id, "\nDefault Message: ").concat(null == r ? void 0 : r.defaultMessage, "\nDescription: ").concat(null == r ? void 0 : r.description, "\n"), n, i) ||
                this;
              return o.descriptor = r, o
            }
            return X(t, e), t
          }(ti),
          ri = function(e) {
            function t(t, n) {
              var r = e.call(this, Kr.MISSING_TRANSLATION, 'Missing message: "'.concat(t.id, '" for locale "').concat(n, '", using ').concat(t.defaultMessage ? "default message (".concat("string" == typeof t.defaultMessage ? t.defaultMessage : t
                .defaultMessage.map((function(e) {
                  var t;
                  return null !== (t = e.value) && void 0 !== t ? t : JSON.stringify(e)
                })).join(), ")") : "id", " as fallback.")) || this;
              return r.descriptor = t, r
            }
            return X(t, e), t
          }($r);

        function ii(e, t, n) {
          return void 0 === n && (n = {}), t.reduce((function(t, r) {
            return r in e ? t[r] = e[r] : r in n && (t[r] = n[r]), t
          }), {})
        }
        var oi = {
          formats: {},
          messages: {},
          timeZone: void 0,
          defaultLocale: "en",
          defaultFormats: {},
          fallbackOnEmptyString: !0,
          onError: function(e) {},
          onWarn: function(e) {}
        };

        function ai(e) {
          return {
            create: function() {
              return {
                get: function(t) {
                  return e[t]
                },
                set: function(t, n) {
                  e[t] = n
                }
              }
            }
          }
        }

        function si(e, t, n, r) {
          var i, o = e && e[t];
          if (o && (i = o[n]), i) return i;
          r(new Jr("No ".concat(t, " format named: ").concat(n)))
        }

        function li(e, t) {
          return Object.keys(e).reduce((function(n, r) {
            return n[r] = G({
              timeZone: t
            }, e[r]), n
          }), {})
        }

        function ci(e, t) {
          return Object.keys(G(G({}, e), t)).reduce((function(n, r) {
            return n[r] = G(G({}, e[r] || {}), t[r] || {}), n
          }), {})
        }

        function ui(e, t) {
          if (!t) return e;
          var n = Zr.formats;
          return G(G(G({}, n), e), {
            date: ci(li(n.date, t), li(e.date || {}, t)),
            time: ci(li(n.time, t), li(e.time || {}, t))
          })
        }
        var hi = function(e, t, n, r, i) {
            var o = e.locale,
              a = e.formats,
              s = e.messages,
              l = e.defaultLocale,
              c = e.defaultFormats,
              u = e.fallbackOnEmptyString,
              h = e.onError,
              p = e.timeZone,
              d = e.defaultRichTextElements;
            void 0 === n && (n = {
              id: ""
            });
            var f = n.id,
              g = n.defaultMessage;
            An(!!f,
              "[@formatjs/intl] An `id` must be provided to format a message. You can either:\n1. Configure your build toolchain with [babel-plugin-formatjs](https://formatjs.io/docs/tooling/babel-plugin)\nor [@formatjs/ts-transformer](https://formatjs.io/docs/tooling/ts-transformer) OR\n2. Configure your `eslint` config to include [eslint-plugin-formatjs](https://formatjs.io/docs/tooling/linter#enforce-id)\nto autofix this issue"
              );
            var m = String(f),
              v = s && Object.prototype.hasOwnProperty.call(s, m) && s[m];
            if (Array.isArray(v) && 1 === v.length && v[0].type === rn.literal) return v[0].value;
            if (!r && v && "string" == typeof v && !d) return v.replace(/'\{(.*?)\}'/gi, "{$1}");
            if (r = G(G({}, d), r || {}), a = ui(a, p), c = ui(c, p), !v) {
              if (!1 === u && "" === v) return v;
              if ((!g || o && o.toLowerCase() !== l.toLowerCase()) && h(new ri(n, o)), g) try {
                return t.getMessageFormat(g, l, c, i).format(r)
              } catch (e) {
                return h(new ni('Error formatting default message for: "'.concat(m, '", rendering default message verbatim'), o, n, e)), "string" == typeof g ? g : m
              }
              return m
            }
            try {
              return t.getMessageFormat(v, o, a, G({
                formatters: t
              }, i || {})).format(r)
            } catch (e) {
              h(new ni('Error formatting message: "'.concat(m, '", using ').concat(g ? "default message" : "id", " as fallback."), o, n, e))
            }
            if (g) try {
              return t.getMessageFormat(g, l, c, i).format(r)
            } catch (e) {
              h(new ni('Error formatting the default message for: "'.concat(m, '", rendering message verbatim'), o, n, e))
            }
            return "string" == typeof v ? v : "string" == typeof g ? g : m
          },
          pi = ["formatMatcher", "timeZone", "hour12", "weekday", "era", "year", "month", "day", "hour", "minute", "second", "timeZoneName", "hourCycle", "dateStyle", "timeStyle", "calendar", "numberingSystem", "fractionalSecondDigits"];

        function di(e, t, n, r) {
          var i = e.locale,
            o = e.formats,
            a = e.onError,
            s = e.timeZone;
          void 0 === r && (r = {});
          var l = r.format,
            c = G(G({}, s && {
              timeZone: s
            }), l && si(o, t, l, a)),
            u = ii(r, pi, c);
          return "time" !== t || u.hour || u.minute || u.second || u.timeStyle || u.dateStyle || (u = G(G({}, u), {
            hour: "numeric",
            minute: "numeric"
          })), n(i, u)
        }

        function fi(e, t) {
          for (var n = [], r = 2; r < arguments.length; r++) n[r - 2] = arguments[r];
          var i = n[0],
            o = n[1],
            a = void 0 === o ? {} : o,
            s = "string" == typeof i ? new Date(i || 0) : i;
          try {
            return di(e, "date", t, a).format(s)
          } catch (t) {
            e.onError(new $r(Kr.FORMAT_ERROR, "Error formatting date.", t))
          }
          return String(s)
        }

        function gi(e, t) {
          for (var n = [], r = 2; r < arguments.length; r++) n[r - 2] = arguments[r];
          var i = n[0],
            o = n[1],
            a = void 0 === o ? {} : o,
            s = "string" == typeof i ? new Date(i || 0) : i;
          try {
            return di(e, "time", t, a).format(s)
          } catch (t) {
            e.onError(new $r(Kr.FORMAT_ERROR, "Error formatting time.", t))
          }
          return String(s)
        }

        function mi(e, t) {
          for (var n = [], r = 2; r < arguments.length; r++) n[r - 2] = arguments[r];
          var i = n[0],
            o = n[1],
            a = n[2],
            s = void 0 === a ? {} : a,
            l = e.timeZone,
            c = e.locale,
            u = e.onError,
            h = ii(s, pi, l ? {
              timeZone: l
            } : {});
          try {
            return t(c, h).formatRange(i, o)
          } catch (e) {
            u(new $r(Kr.FORMAT_ERROR, "Error formatting date time range.", e))
          }
          return String(i)
        }

        function vi(e, t) {
          for (var n = [], r = 2; r < arguments.length; r++) n[r - 2] = arguments[r];
          var i = n[0],
            o = n[1],
            a = void 0 === o ? {} : o,
            s = "string" == typeof i ? new Date(i || 0) : i;
          try {
            return di(e, "date", t, a).formatToParts(s)
          } catch (t) {
            e.onError(new $r(Kr.FORMAT_ERROR, "Error formatting date.", t))
          }
          return []
        }

        function _i(e, t) {
          for (var n = [], r = 2; r < arguments.length; r++) n[r - 2] = arguments[r];
          var i = n[0],
            o = n[1],
            a = void 0 === o ? {} : o,
            s = "string" == typeof i ? new Date(i || 0) : i;
          try {
            return di(e, "time", t, a).formatToParts(s)
          } catch (t) {
            e.onError(new $r(Kr.FORMAT_ERROR, "Error formatting time.", t))
          }
          return []
        }
        var bi = ["style", "type", "fallback", "languageDisplay"];

        function yi(e, t, n, r) {
          var i = e.locale,
            o = e.onError;
          Intl.DisplayNames || o(new Hr('Intl.DisplayNames is not available in this environment.\nTry polyfilling it using "@formatjs/intl-displaynames"\n', Lr.MISSING_INTL_API));
          var a = ii(r, bi);
          try {
            return t(i, a).of(n)
          } catch (e) {
            o(new $r(Kr.FORMAT_ERROR, "Error formatting display name.", e))
          }
        }
        var wi = ["type", "style"],
          xi = Date.now();

        function ki(e, t, n, r) {
          void 0 === r && (r = {});
          var i = Ci(e, t, n, r).reduce((function(e, t) {
            var n = t.value;
            return "string" != typeof n ? e.push(n) : "string" == typeof e[e.length - 1] ? e[e.length - 1] += n : e.push(n), e
          }), []);
          return 1 === i.length ? i[0] : 0 === i.length ? "" : i
        }

        function Ci(e, t, n, r) {
          var i = e.locale,
            o = e.onError;
          void 0 === r && (r = {}), Intl.ListFormat || o(new Hr('Intl.ListFormat is not available in this environment.\nTry polyfilling it using "@formatjs/intl-listformat"\n', Lr.MISSING_INTL_API));
          var a = ii(r, wi);
          try {
            var s = {},
              l = n.map((function(e, t) {
                if ("object" == typeof e) {
                  var n = function(e) {
                    return "".concat(xi, "_").concat(e, "_").concat(xi)
                  }(t);
                  return s[n] = e, n
                }
                return String(e)
              }));
            return t(i, a).formatToParts(l).map((function(e) {
              return "literal" === e.type ? e : G(G({}, e), {
                value: s[e.value] || e.value
              })
            }))
          } catch (e) {
            o(new $r(Kr.FORMAT_ERROR, "Error formatting list.", e))
          }
          return n
        }
        var Si = ["type"];

        function Ei(e, t, n, r) {
          var i = e.locale,
            o = e.onError;
          void 0 === r && (r = {}), Intl.PluralRules || o(new Hr('Intl.PluralRules is not available in this environment.\nTry polyfilling it using "@formatjs/intl-pluralrules"\n', Lr.MISSING_INTL_API));
          var a = ii(r, Si);
          try {
            return t(i, a).select(n)
          } catch (e) {
            o(new ti("Error formatting plural.", i, e))
          }
          return "other"
        }
        var Ti = ["numeric", "style"];

        function Oi(e, t, n, r, i) {
          void 0 === i && (i = {}), r || (r = "second"), Intl.RelativeTimeFormat || e.onError(new Hr('Intl.RelativeTimeFormat is not available in this environment.\nTry polyfilling it using "@formatjs/intl-relativetimeformat"\n', Lr
            .MISSING_INTL_API));
          try {
            return function(e, t, n) {
              var r = e.locale,
                i = e.formats,
                o = e.onError;
              void 0 === n && (n = {});
              var a = n.format,
                s = !!a && si(i, "relative", a, o) || {};
              return t(r, ii(n, Ti, s))
            }(e, t, i).format(n, r)
          } catch (t) {
            e.onError(new ti("Error formatting relative time.", e.locale, t))
          }
          return String(n)
        }
        var Ai = ["style", "currency", "currencyDisplay", "unit", "unitDisplay", "useGrouping", "minimumIntegerDigits", "minimumFractionDigits", "maximumFractionDigits", "minimumSignificantDigits", "maximumSignificantDigits", "compactDisplay",
          "currencyDisplay", "currencySign", "notation", "signDisplay", "unit", "unitDisplay", "numberingSystem"
        ];

        function Pi(e, t, n) {
          var r = e.locale,
            i = e.formats,
            o = e.onError;
          void 0 === n && (n = {});
          var a = n.format,
            s = a && si(i, "number", a, o) || {};
          return t(r, ii(n, Ai, s))
        }

        function Mi(e, t, n, r) {
          void 0 === r && (r = {});
          try {
            return Pi(e, t, r).format(n)
          } catch (t) {
            e.onError(new $r(Kr.FORMAT_ERROR, "Error formatting number.", t))
          }
          return String(n)
        }

        function Di(e, t, n, r) {
          void 0 === r && (r = {});
          try {
            return Pi(e, t, r).formatToParts(n)
          } catch (t) {
            e.onError(new $r(Kr.FORMAT_ERROR, "Error formatting number.", t))
          }
          return []
        }

        function Ii(e) {
          var t;
          e.onWarn && e.defaultRichTextElements && "string" == typeof((t = e.messages || {}) ? t[Object.keys(t)[0]] : void 0) && e.onWarn(
            '[@formatjs/intl] "defaultRichTextElements" was specified but "message" was not pre-compiled. \nPlease consider using "@formatjs/cli" to pre-compile your messages for performance.\nFor more details see https://formatjs.io/docs/getting-started/message-distribution'
            )
        }

        function Ri(e, t) {
          var n = function(e) {
              void 0 === e && (e = {
                dateTime: {},
                number: {},
                message: {},
                relativeTime: {},
                pluralRules: {},
                list: {},
                displayNames: {}
              });
              var t = Intl.RelativeTimeFormat,
                n = Intl.ListFormat,
                r = Intl.DisplayNames,
                i = Pr((function() {
                  for (var e, t = [], n = 0; n < arguments.length; n++) t[n] = arguments[n];
                  return new((e = Intl.DateTimeFormat).bind.apply(e, $([void 0], t, !1)))
                }), {
                  cache: ai(e.dateTime),
                  strategy: Br.variadic
                }),
                o = Pr((function() {
                  for (var e, t = [], n = 0; n < arguments.length; n++) t[n] = arguments[n];
                  return new((e = Intl.NumberFormat).bind.apply(e, $([void 0], t, !1)))
                }), {
                  cache: ai(e.number),
                  strategy: Br.variadic
                }),
                a = Pr((function() {
                  for (var e, t = [], n = 0; n < arguments.length; n++) t[n] = arguments[n];
                  return new((e = Intl.PluralRules).bind.apply(e, $([void 0], t, !1)))
                }), {
                  cache: ai(e.pluralRules),
                  strategy: Br.variadic
                });
              return {
                getDateTimeFormat: i,
                getNumberFormat: o,
                getMessageFormat: Pr((function(e, t, n, r) {
                  return new Zr(e, t, n, G({
                    formatters: {
                      getNumberFormat: o,
                      getDateTimeFormat: i,
                      getPluralRules: a
                    }
                  }, r || {}))
                }), {
                  cache: ai(e.message),
                  strategy: Br.variadic
                }),
                getRelativeTimeFormat: Pr((function() {
                  for (var e = [], n = 0; n < arguments.length; n++) e[n] = arguments[n];
                  return new(t.bind.apply(t, $([void 0], e, !1)))
                }), {
                  cache: ai(e.relativeTime),
                  strategy: Br.variadic
                }),
                getPluralRules: a,
                getListFormat: Pr((function() {
                  for (var e = [], t = 0; t < arguments.length; t++) e[t] = arguments[t];
                  return new(n.bind.apply(n, $([void 0], e, !1)))
                }), {
                  cache: ai(e.list),
                  strategy: Br.variadic
                }),
                getDisplayNames: Pr((function() {
                  for (var e = [], t = 0; t < arguments.length; t++) e[t] = arguments[t];
                  return new(r.bind.apply(r, $([void 0], e, !1)))
                }), {
                  cache: ai(e.displayNames),
                  strategy: Br.variadic
                })
              }
            }(t),
            r = G(G({}, oi), e),
            i = r.locale,
            o = r.defaultLocale,
            a = r.onError;
          return i ? !Intl.NumberFormat.supportedLocalesOf(i).length && a ? a(new ei('Missing locale data for locale: "'.concat(i, '" in Intl.NumberFormat. Using default locale: "').concat(o,
            '" as fallback. See https://formatjs.io/docs/react-intl#runtime-requirements for more details'))) : !Intl.DateTimeFormat.supportedLocalesOf(i).length && a && a(new ei('Missing locale data for locale: "'.concat(i,
            '" in Intl.DateTimeFormat. Using default locale: "').concat(o, '" as fallback. See https://formatjs.io/docs/react-intl#runtime-requirements for more details'))) : (a && a(new Qr('"locale" was not configured, using "'.concat(o,
            '" as fallback. See https://formatjs.io/docs/react-intl/api#intlshape for more details'))), r.locale = r.defaultLocale || "en"), Ii(r), G(G({}, r), {
            formatters: n,
            formatNumber: Mi.bind(null, r, n.getNumberFormat),
            formatNumberToParts: Di.bind(null, r, n.getNumberFormat),
            formatRelativeTime: Oi.bind(null, r, n.getRelativeTimeFormat),
            formatDate: fi.bind(null, r, n.getDateTimeFormat),
            formatDateToParts: vi.bind(null, r, n.getDateTimeFormat),
            formatTime: gi.bind(null, r, n.getDateTimeFormat),
            formatDateTimeRange: mi.bind(null, r, n.getDateTimeFormat),
            formatTimeToParts: _i.bind(null, r, n.getDateTimeFormat),
            formatPlural: Ei.bind(null, r, n.getPluralRules),
            formatMessage: hi.bind(null, r, n),
            $t: hi.bind(null, r, n),
            formatList: ki.bind(null, r, n.getListFormat),
            formatListToParts: Ci.bind(null, r, n.getListFormat),
            formatDisplayName: yi.bind(null, r, n.getDisplayNames)
          })
        }

        function ji(e) {
          An(e, "[React Intl] Could not find required `intl` object. <IntlProvider> needs to exist in the component ancestry.")
        }
        var Ni = G(G({}, oi), {
          textComponent: de
        });
        var Li = je(null),
          Fi = Li.Provider,
          Bi = Li;

        function zi() {
          var e = nt(Bi);
          return ji(e), e
        }

        function Hi(e) {
          return {
            locale: e.locale,
            timeZone: e.timeZone,
            fallbackOnEmptyString: e.fallbackOnEmptyString,
            formats: e.formats,
            textComponent: e.textComponent,
            messages: e.messages,
            defaultLocale: e.defaultLocale,
            defaultFormats: e.defaultFormats,
            onError: e.onError,
            onWarn: e.onWarn,
            wrapRichTextChunksInFragment: e.wrapRichTextChunksInFragment,
            defaultRichTextElements: e.defaultRichTextElements
          }
        }

        function Ui(e) {
          return e ? Object.keys(e).reduce((function(t, n) {
            var r, i = e[n];
            return t[n] = Xr(i) ? (r = i, function(e) {
              return r(_t.toArray(e))
            }) : i, t
          }), {}) : e
        }
        var Wi = function(e, t, n, r) {
            for (var i = [], o = 4; o < arguments.length; o++) i[o - 4] = arguments[o];
            var a = Ui(r),
              s = hi.apply(void 0, $([e, t, n, a], i, !1));
            return Array.isArray(s) ? _t.toArray(s) : s
          },
          Vi = function(e, t) {
            var n = e.defaultRichTextElements,
              r = Y(e, ["defaultRichTextElements"]),
              i = Ui(n),
              o = Ri(G(G(G({}, Ni), r), {
                defaultRichTextElements: i
              }), t),
              a = {
                locale: o.locale,
                timeZone: o.timeZone,
                fallbackOnEmptyString: o.fallbackOnEmptyString,
                formats: o.formats,
                defaultLocale: o.defaultLocale,
                defaultFormats: o.defaultFormats,
                messages: o.messages,
                onError: o.onError,
                defaultRichTextElements: i
              };
            return G(G({}, o), {
              formatMessage: Wi.bind(null, a, o.formatters),
              $t: Wi.bind(null, a, o.formatters)
            })
          },
          Xi = function(e) {
            function t() {
              var t = null !== e && e.apply(this, arguments) || this;
              return t.cache = {
                dateTime: {},
                number: {},
                message: {},
                relativeTime: {},
                pluralRules: {},
                list: {},
                displayNames: {}
              }, t.state = {
                cache: t.cache,
                intl: Vi(Hi(t.props), t.cache),
                prevConfig: Hi(t.props)
              }, t
            }
            return X(t, e), t.getDerivedStateFromProps = function(e, t) {
              var n = t.prevConfig,
                r = t.cache,
                i = Hi(e);
              return function(e, t) {
                if (e === t) return !0;
                if (!e || !t) return !1;
                var n = Object.keys(e),
                  r = Object.keys(t),
                  i = n.length;
                if (r.length !== i) return !1;
                for (var o = 0; o < i; o++) {
                  var a = n[o];
                  if (e[a] !== t[a] || !Object.prototype.hasOwnProperty.call(t, a)) return !1
                }
                return !0
              }(n, i) ? null : {
                intl: Vi(i, r),
                prevConfig: i
              }
            }, t.prototype.render = function() {
              return ji(this.state.intl), ue(Fi, {
                value: this.state.intl
              }, this.props.children)
            }, t.displayName = "IntlProvider", t.defaultProps = Ni, t
          }(pt),
          Gi = Xi;
        var Yi = function(e) {
            var t = typeof e;
            return null != e && ("object" == t || "function" == t)
          },
          qi = "object" == typeof en && en && en.Object === Object && en,
          Ki = "object" == typeof self && self && self.Object === Object && self,
          Zi = qi || Ki || Function("return this")(),
          $i = Zi,
          Ji = function() {
            return $i.Date.now()
          },
          Qi = /\s/;
        var eo = function(e) {
            for (var t = e.length; t-- && Qi.test(e.charAt(t)););
            return t
          },
          to = eo,
          no = /^\s+/;
        var ro = function(e) {
            return e ? e.slice(0, to(e) + 1).replace(no, "") : e
          },
          io = Zi.Symbol,
          oo = io,
          ao = Object.prototype,
          so = ao.hasOwnProperty,
          lo = ao.toString,
          co = oo ? oo.toStringTag : void 0;
        var uo = function(e) {
            var t = so.call(e, co),
              n = e[co];
            try {
              e[co] = void 0;
              var r = !0
            } catch (e) {}
            var i = lo.call(e);
            return r && (t ? e[co] = n : delete e[co]), i
          },
          ho = Object.prototype.toString;
        var po = uo,
          fo = function(e) {
            return ho.call(e)
          },
          go = io ? io.toStringTag : void 0;
        var mo = function(e) {
            return null == e ? void 0 === e ? "[object Undefined]" : "[object Null]" : go && go in Object(e) ? po(e) : fo(e)
          },
          vo = function(e) {
            return null != e && "object" == typeof e
          };
        var _o = ro,
          bo = Yi,
          yo = function(e) {
            return "symbol" == typeof e || vo(e) && "[object Symbol]" == mo(e)
          },
          wo = /^[-+]0x[0-9a-f]+$/i,
          xo = /^0b[01]+$/i,
          ko = /^0o[0-7]+$/i,
          Co = parseInt;
        var So = Yi,
          Eo = Ji,
          To = function(e) {
            if ("number" == typeof e) return e;
            if (yo(e)) return NaN;
            if (bo(e)) {
              var t = "function" == typeof e.valueOf ? e.valueOf() : e;
              e = bo(t) ? t + "" : t
            }
            if ("string" != typeof e) return 0 === e ? e : +e;
            e = _o(e);
            var n = xo.test(e);
            return n || ko.test(e) ? Co(e.slice(2), n ? 2 : 8) : wo.test(e) ? NaN : +e
          },
          Oo = Math.max,
          Ao = Math.min;
        var Po = function(e, t, n) {
            var r, i, o, a, s, l, c = 0,
              u = !1,
              h = !1,
              p = !0;
            if ("function" != typeof e) throw new TypeError("Expected a function");

            function d(t) {
              var n = r,
                o = i;
              return r = i = void 0, c = t, a = e.apply(o, n)
            }

            function f(e) {
              return c = e, s = setTimeout(m, t), u ? d(e) : a
            }

            function g(e) {
              var n = e - l;
              return void 0 === l || n >= t || n < 0 || h && e - c >= o
            }

            function m() {
              var e = Eo();
              if (g(e)) return v(e);
              s = setTimeout(m, function(e) {
                var n = t - (e - l);
                return h ? Ao(n, o - (e - c)) : n
              }(e))
            }

            function v(e) {
              return s = void 0, p && r ? d(e) : (r = i = void 0, a)
            }

            function _() {
              var e = Eo(),
                n = g(e);
              if (r = arguments, i = this, l = e, n) {
                if (void 0 === s) return f(l);
                if (h) return clearTimeout(s), s = setTimeout(m, t), d(l)
              }
              return void 0 === s && (s = setTimeout(m, t)), a
            }
            return t = To(t) || 0, So(n) && (u = !!n.leading, o = (h = "maxWait" in n) ? Oo(To(n.maxWait) || 0, t) : o, p = "trailing" in n ? !!n.trailing : p), _.cancel = function() {
              void 0 !== s && clearTimeout(s), c = 0, r = l = i = s = void 0
            }, _.flush = function() {
              return void 0 === s ? a : v(Eo())
            }, _
          },
          Mo = Po,
          Do = function() {
            for (var e, t, n, r = arguments.length, i = new Array(r), o = 0; o < r; o++) i[o] = arguments[o];
            return null === (e = window) || void 0 === e || null === (t = e.sa) || void 0 === t || null === (n = t.track) || void 0 === n ? void 0 : n.call(t, ...i)
          },
          Io = Date.now().toString(),
          Ro = Mo((() => {
            if (window.sizeGuideLoaded) {
              var e = new CustomEvent("refreshSizeGuide", {
                detail: {},
                bubbles: !1,
                cancelable: !1
              });
              document.dispatchEvent(e)
            }
          }), 500);
        var jo = (e, t) => {
          var n, r = null == e ? void 0 : e.conditional_setting,
            i = !1;
          r.field_values.some((e => e.field)) || (i = !0);
          var o = Object.keys(t);
          return null === (n = r.field_values) || void 0 === n || n.some((e => {
            var n;
            return !!o.includes(e.field) && ((Array.isArray(t[e.field]) ? null === (n = t[e.field]) || void 0 === n ? void 0 : n.includes(e.value_label) : t[e.field] === e.value_label) ? (i = !0, !0) : void 0)
          })), i
        };

        function No() {
          var e, t;
          return navigator.userAgent.match(/(phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|BlackBerry|IEMobile|MQQBrowser|JUC|Fennec|wOSBrowser|BrowserNG|WebOS|Symbian|Windows Phone)/i) || (null === (e = document) || void 0 === e || null ===
            (t = e.documentElement) || void 0 === t ? void 0 : t.clientWidth) <= 960
        }
        var Lo = window.SHOP_PARAMS.finance_symbol,
          Fo = (e, t, n) => {
            try {
              var r, i, o, a;
              if (!zo()) return;
              var s = function(e, t) {
                  var n = ["text", "upload", "design"];
                  return e.reduce(((e, r) => {
                    var i, o;
                    return null != r && r.isHidden || null === (i = t[r.fid]) || void 0 === i || !i.length ? e : n.includes(r.type) ? e += Number(r.price) || 0 : (null == r || null === (o = r.options) || void 0 === o || o.forEach((n => {
                      ("dropdown" === r.type ? t[r.fid] === n.label : t[r.fid].includes(n.label)) && (e += Number(n.price) || 0)
                    })), e)
                  }), 0)
                }(e, t),
                l = (null === (r = window) || void 0 === r || null === (i = r.SHOPLAZZA) || void 0 === i || null === (o = i.market) || void 0 === o || null === (a = o.market_price_setting) || void 0 === a ? void 0 : a.actual_rate) || 1,
                c = 1e5;
              s = (s * c * l / c).toFixed(2);
              var u = (h = Number(n) + Number(s), isNaN(h) ? "" : h.toLocaleString("en-US", {
                style: "currency",
                currency: "USD"
              }).slice(1));
              setTimeout((() => {
                var e, t = null === (e = document.querySelector("[data-track-source=add_to_cart]")) || void 0 === e ? void 0 : e.getElementsByClassName("money");
                null != t && t.length && (t[0].innerHTML = Lo + u, document.dispatchEvent(new Event("plugin_currency_update")))
              }), 200)
            } catch (e) {}
            var h
          },
          Bo = ["Nova 2022", "Nova 2023", "Hero", "Eva", "Life Style", "Geek", "Wind", "Flash"],
          zo = () => {
            var e, t, n = Yo();
            return Bo.includes(n) && !(null === (e = window) || void 0 === e || null === (t = e.appparakeet_data) || void 0 === t || !t.length)
          },
          Ho = function() {
            var e = d((function*(e, t, n, r, i, o) {
              var a, s, l, c, u, {
                  url: h,
                  method: p,
                  body: d
                } = e,
                f = h === Go("/api/cart") && ("POST" === p || "post" === p),
                g = h === Go("/api/checkout/order") && ("POST" === p || "post" === p);
              f && window.SHOPLAZZA.meta.page.resource_id === e.body.product_id && (e.redirect = Go("/api/product-customizer/cart/add"), i((() => {}))(), e.headers["Content-Type"].startsWith("application/json") ? (e.body.custom_properties =
                yield Vo(t, n, r, o), e.body.quantity = Number(null === (s = e.body) || void 0 === s ? void 0 : s.quantity) || 0) : (e.headers["Content-Type"] = "application/json;charset=utf-8", e.body = yield Uo(e, t, n, r, o)));
              !g || "buy_now" !== d["refer_info[source]"] && "buy_now" !== (null == d || null === (a = d.refer_info) || void 0 === a ? void 0 : a.source) || (e.redirect = Go("/api/product-customizer/checkout/order/create"), i((() => {}))(),
                e.headers["Content-Type"].startsWith("application/json") ? (e.body.line_items[0].custom_properties = yield Vo(t, n, r, o), e.body.line_items[0].quantity = Number(null === (l = e.body) || void 0 === l || null === (c = l
                  .line_items) || void 0 === c || null === (u = c[0]) || void 0 === u ? void 0 : u.quantity) || 0) : (e.headers["Content-Type"] = "application/json;charset=utf-8", e.body = yield Wo(e, t, n, r, o)));
              return e
            }));
            return function(t, n, r, i, o, a) {
              return e.apply(this, arguments)
            }
          }(),
          Uo = function() {
            var e = d((function*(e, t, n, r, i) {
              return h(h({}, e.body), {}, {
                quantity: Number(e.body.quantity),
                custom_properties: yield Vo(t, n, r, i)
              })
            }));
            return function(t, n, r, i, o) {
              return e.apply(this, arguments)
            }
          }(),
          Wo = function() {
            var e = d((function*(e, t, n, r, i) {
              var o, a = e.body || {},
                s = function(e) {
                  var t = {};
                  for (var n in e)
                    for (var r = e[n], i = n.split(/[\[\]]/).filter(Boolean), o = t, a = 0; a < i.length; a++) {
                      var s = i[a];
                      a === i.length - 1 ? o[s] = r : (o[s] || (/\d+/.test(i[a + 1]) ? o[s] = [] : o[s] = {}), o = o[s])
                    }
                  return t
                }(a);
              (s.customer_note = a["line_items[0][note]"], s.line_items) && (s.line_items[0].properties = void 0, s.line_items[0].custom_properties = yield Vo(t, n, r, i), s.line_items = null === (o = s.line_items) || void 0 === o ?
                void 0 : o.map((e => h(h({}, e), {}, {
                  quantity: Number(e.quantity) || 1
                }))));
              return s
            }));
            return function(t, n, r, i, o) {
              return e.apply(this, arguments)
            }
          }(),
          Vo = function() {
            var e = d((function*(e, t, n, r) {
              var i = t.reduce(((t, n) => {
                if (null != n && n.isHidden) return t;
                if (n.options) {
                  var i = 0;
                  return n.options.forEach((r => {
                    var o;
                    ("dropdown" === n.type ? e[n.fid] === r.label : null === (o = e[n.fid]) || void 0 === o ? void 0 : o.includes(r.label)) && (i++, t.push({
                      fid: n.fid,
                      id: "swatch" === n.type ? r.fid : r.value,
                      key: n.order,
                      value: r.label
                    }))
                  })), i || t.push({
                    fid: n.fid,
                    key: n.order,
                    value: ""
                  }), t
                }
                var o;
                if ("upload" === n.type || "design" === n.type) return null !== (o = e[n.fid]) && void 0 !== o && o.length ? e[n.fid].forEach(((e, r) => {
                  t.push({
                    fid: n.fid,
                    key: "".concat(n.order, "_").concat(r + 1),
                    value: e.url || ""
                  })
                })) : t.push({
                  fid: n.fid,
                  key: "".concat(n.order, "_1"),
                  value: ""
                }), t;
                if ("text" === n.type) {
                  var a, s, l, c, u, h, p = "";
                  if (null != n && null !== (a = n.preview_setting) && void 0 !== a && a.preview_open) "black" === (p = n.preview_setting.data[0].cards[0].textColor || (null == n || null === (u = n.preview_setting) || void 0 === u ?
                    void 0 : u.selected_color) || (null == n || null === (h = n.preview_setting.text_colors) || void 0 === h ? void 0 : h[0])) && (p = "#000000");
                  var d = null != n && null !== (s = n.preview_setting) && void 0 !== s && s.preview_open && e[n.fid] ? "".concat(e[n.fid], " (").concat(r({
                    id: "font_color"
                  }), ": ").concat(p, " ").concat(r({
                    id: "font"
                  }), ": ").concat(n.preview_setting.data[0].cards[0].textFont || (null == n || null === (l = n.preview_setting) || void 0 === l ? void 0 : l.text_families[0]), " ").concat(r({
                    id: "font_size"
                  }), ": ").concat(n.preview_setting.data[0].cards[0].textSize || (null == n || null === (c = n.preview_setting) || void 0 === c ? void 0 : c.text_size), ")") : e[n.fid];
                  t.push({
                    fid: n.fid,
                    key: n.order,
                    value: d || ""
                  })
                }
                return t
              }), []);
              if (n) {
                var o = t.find((e => "design" === e.type));
                o && i.push({
                  fid: o.fid,
                  key: "".concat(o.order, "_composite_image"),
                  value: n
                })
              }
              var a = yield W.createImgs();
              return null != a && a.length && (i = [...i, ...a]), i
            }));
            return function(t, n, r, i) {
              return e.apply(this, arguments)
            }
          }(),
          Xo = e => {
            try {
              var {
                url: t,
                method: n
              } = e.detail.request, r = t === Go("/api/cart") && "POST" === n, i = t === Go("/api/checkout/order") && "POST" === n;
              if (r || i) {
                var {
                  status: o
                } = e.detail.response || {};
                401 === o && setTimeout((() => {
                  window.location.reload()
                }), 1e3)
              }
            } catch (e) {}
          },
          Go = e => {
            var {
              globalizePath: t
            } = window.SHOPLAZZA_APPS_COMMON || {};
            return t ? t(e) : window.SHOPLAZZA.routes.root + e
          };

        function Yo() {
          var e, t, n, r, i;
          return (null === (e = window) || void 0 === e || null === (t = e.SHOPLAZZA) || void 0 === t || null === (n = t.theme) || void 0 === n ? void 0 : n.merchant_theme_name) || (null === (r = window) || void 0 === r || null === (i = r
            .SHOP_PARAMS) || void 0 === i ? void 0 : i.theme_name)
        }

        function qo(e) {
          var t = Yo();
          return Array.isArray(e) ? e.includes(t) : e === t
        }
        var Ko = e => {
            if (!e) return e;
            var t = e.split("/");
            return t[t.length - 1]
          },
          Zo = ["name"],
          $o = ["_f"],
          Jo = ["_f"],
          Qo = e => "checkbox" === e.type,
          ea = e => e instanceof Date,
          ta = e => null == e,
          na = e => "object" == typeof e,
          ra = e => !ta(e) && !Array.isArray(e) && na(e) && !ea(e),
          ia = e => ra(e) && e.target ? Qo(e.target) ? e.target.checked : e.target.value : e,
          oa = (e, t) => e.has((e => e.substring(0, e.search(/\.\d+(\.|$)/)) || e)(t)),
          aa = e => Array.isArray(e) ? e.filter(Boolean) : [],
          sa = e => void 0 === e,
          la = (e, t, n) => {
            if (!t || !ra(e)) return n;
            var r = aa(t.split(/[,[\].]+?/)).reduce(((e, t) => ta(e) ? e : e[t]), e);
            return sa(r) || r === e ? sa(e[t]) ? n : e[t] : r
          },
          ca = "blur",
          ua = "focusout",
          ha = "change",
          pa = "onBlur",
          da = "onChange",
          fa = "onSubmit",
          ga = "onTouched",
          ma = "all",
          va = "max",
          _a = "min",
          ba = "maxLength",
          ya = "minLength",
          wa = "pattern",
          xa = "required",
          ka = "validate",
          Ca = Jt.createContext(null),
          Sa = () => Jt.useContext(Ca),
          Ea = function(e, t, n) {
            var r = !(arguments.length > 3 && void 0 !== arguments[3]) || arguments[3],
              i = {
                defaultValues: t._defaultValues
              },
              o = function(o) {
                Object.defineProperty(i, o, {
                  get: () => {
                    var i = o;
                    return t._proxyFormState[i] !== ma && (t._proxyFormState[i] = !r || ma), n && (n[i] = !0), e[i]
                  }
                })
              };
            for (var a in e) o(a);
            return i
          },
          Ta = e => ra(e) && !Object.keys(e).length,
          Oa = (e, t, n) => {
            var r = g(e, Zo);
            return Ta(r) || Object.keys(r).length >= Object.keys(t).length || Object.keys(r).find((e => t[e] === (!n || ma)))
          },
          Aa = e => Array.isArray(e) ? e : [e],
          Pa = (e, t, n) => n && t ? e === t : !e || !t || e === t || Aa(e).some((e => e && (e.startsWith(t) || t.startsWith(e))));

        function Ma(e) {
          var t = Jt.useRef(e);
          t.current = e, Jt.useEffect((() => {
            var n = !e.disabled && t.current.subject.subscribe({
              next: t.current.callback
            });
            return () => {
              n && n.unsubscribe()
            }
          }), [e.disabled])
        }

        function Da(e) {
          var t = Sa(),
            {
              control: n = t.control,
              disabled: r,
              name: i,
              exact: o
            } = e || {},
            [a, s] = Jt.useState(n._formState),
            l = Jt.useRef(!0),
            c = Jt.useRef({
              isDirty: !1,
              dirtyFields: !1,
              touchedFields: !1,
              isValidating: !1,
              isValid: !1,
              errors: !1
            }),
            u = Jt.useRef(i);
          return u.current = i, Ma({
            disabled: r,
            callback: Jt.useCallback((e => l.current && Pa(u.current, e.name, o) && Oa(e, c.current) && s(h(h({}, n._formState), e))), [n, o]),
            subject: n._subjects.state
          }), Jt.useEffect((() => (l.current = !0, () => {
            l.current = !1
          })), []), Ea(a, n, c.current, !1)
        }
        var Ia = e => "string" == typeof e,
          Ra = (e, t, n, r) => {
            var i = Array.isArray(e);
            return Ia(e) ? (r && t.watch.add(e), la(n, e)) : i ? e.map((e => (r && t.watch.add(e), la(n, e)))) : (r && (t.watchAll = !0), n)
          },
          ja = e => "function" == typeof e,
          Na = e => {
            for (var t in e)
              if (ja(e[t])) return !0;
            return !1
          };

        function La(e) {
          var t = Sa(),
            {
              control: n = t.control,
              name: r,
              defaultValue: i,
              disabled: o,
              exact: a
            } = e || {},
            s = Jt.useRef(r);
          s.current = r, Ma({
            disabled: o,
            subject: n._subjects.watch,
            callback: Jt.useCallback((e => {
              if (Pa(s.current, e.name, a)) {
                var t = Ra(s.current, n._names, e.values || n._formValues);
                c(sa(s.current) || ra(t) && !Na(t) ? h({}, t) : Array.isArray(t) ? [...t] : sa(t) ? i : t)
              }
            }), [n, a, i])
          });
          var [l, c] = Jt.useState(sa(i) ? n._getWatch(r) : i);
          return Jt.useEffect((() => n._removeUnmounted())), l
        }

        function Fa(e) {
          var t = Sa(),
            {
              name: n,
              control: r = t.control,
              shouldUnregister: i
            } = e,
            o = oa(r._names.array, n),
            a = La({
              control: r,
              name: n,
              defaultValue: la(r._formValues, n, la(r._defaultValues, n, e.defaultValue)),
              exact: !0
            }),
            s = Da({
              control: r,
              name: n
            }),
            l = Jt.useRef(r.register(n, h(h({}, e.rules), {}, {
              value: a
            })));
          return Jt.useEffect((() => {
            var e = (e, t) => {
              var n = la(r._fields, e);
              n && (n._f.mount = t)
            };
            return e(n, !0), () => {
              var t = r._options.shouldUnregister || i;
              (o ? t && !r._stateFlags.action : t) ? r.unregister(n): e(n, !1)
            }
          }), [n, r, o, i]), {
            field: {
              name: n,
              value: a,
              onChange: Jt.useCallback((e => l.current.onChange({
                target: {
                  value: ia(e),
                  name: n
                },
                type: ha
              })), [n]),
              onBlur: Jt.useCallback((() => l.current.onBlur({
                target: {
                  value: la(r._formValues, n),
                  name: n
                },
                type: ca
              })), [n, r]),
              ref: e => {
                var t = la(r._fields, n);
                t && e && (t._f.ref = {
                  focus: () => e.focus(),
                  select: () => e.select(),
                  setCustomValidity: t => e.setCustomValidity(t),
                  reportValidity: () => e.reportValidity()
                })
              }
            },
            formState: s,
            fieldState: Object.defineProperties({}, {
              invalid: {
                enumerable: !0,
                get: () => !!la(s.errors, n)
              },
              isDirty: {
                enumerable: !0,
                get: () => !!la(s.dirtyFields, n)
              },
              isTouched: {
                enumerable: !0,
                get: () => !!la(s.touchedFields, n)
              },
              error: {
                enumerable: !0,
                get: () => la(s.errors, n)
              }
            })
          }
        }
        var Ba = (e, t, n, r, i) => t ? h(h({}, n[e]), {}, {
            types: h(h({}, n[e] && n[e].types ? n[e].types : {}), {}, {
              [r]: i || !0
            })
          }) : {},
          za = e => /^\w*$/.test(e),
          Ha = e => aa(e.replace(/["|']|\]/g, "").split(/\.|\[/));

        function Ua(e, t, n) {
          for (var r = -1, i = za(t) ? [t] : Ha(t), o = i.length, a = o - 1; ++r < o;) {
            var s = i[r],
              l = n;
            if (r !== a) {
              var c = e[s];
              l = ra(c) || Array.isArray(c) ? c : isNaN(+i[r + 1]) ? {} : []
            }
            e[s] = l, e = e[s]
          }
          return e
        }
        var Wa = (e, t, n) => {
            for (var r of n || Object.keys(e)) {
              var i = la(e, r);
              if (i) {
                var {
                  _f: o
                } = i, a = g(i, $o);
                if (o && t(o.name)) {
                  if (o.ref.focus) {
                    o.ref.focus();
                    break
                  }
                  if (o.refs && o.refs[0].focus) {
                    o.refs[0].focus();
                    break
                  }
                } else ra(a) && Wa(a, t)
              }
            }
          },
          Va = (e, t, n) => !n && (t.watchAll || t.watch.has(e) || [...t.watch].some((t => e.startsWith(t) && /^\.\w+/.test(e.slice(t.length))))),
          Xa = (e, t, n) => {
            var r = aa(la(e, n));
            return Ua(r, "root", t[n]), Ua(e, n, r), e
          },
          Ga = e => "boolean" == typeof e,
          Ya = e => "file" === e.type,
          qa = e => Ia(e) || Jt.isValidElement(e),
          Ka = e => "radio" === e.type,
          Za = e => e instanceof RegExp,
          $a = {
            value: !1,
            isValid: !1
          },
          Ja = {
            value: !0,
            isValid: !0
          },
          Qa = e => {
            if (Array.isArray(e)) {
              if (e.length > 1) {
                var t = e.filter((e => e && e.checked && !e.disabled)).map((e => e.value));
                return {
                  value: t,
                  isValid: !!t.length
                }
              }
              return e[0].checked && !e[0].disabled ? e[0].attributes && !sa(e[0].attributes.value) ? sa(e[0].value) || "" === e[0].value ? Ja : {
                value: e[0].value,
                isValid: !0
              } : Ja : $a
            }
            return $a
          },
          es = {
            isValid: !1,
            value: null
          },
          ts = e => Array.isArray(e) ? e.reduce(((e, t) => t && t.checked && !t.disabled ? {
            isValid: !0,
            value: t.value
          } : e), es) : es;

        function ns(e, t) {
          var n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : "validate";
          if (qa(e) || Array.isArray(e) && e.every(qa) || Ga(e) && !e) return {
            type: n,
            message: qa(e) ? e : "",
            ref: t
          }
        }
        var rs = e => ra(e) && !Za(e) ? e : {
            value: e,
            message: ""
          },
          is = function() {
            var e = d((function*(e, t, n, r, i) {
              var {
                ref: o,
                refs: a,
                required: s,
                maxLength: l,
                minLength: c,
                min: u,
                max: p,
                pattern: d,
                validate: f,
                name: g,
                valueAsNumber: m,
                mount: v,
                disabled: _
              } = e._f;
              if (!v || _) return {};
              var b = a ? a[0] : o,
                y = e => {
                  r && b.reportValidity && (b.setCustomValidity(Ga(e) ? "" : e || " "), b.reportValidity())
                },
                w = {},
                x = Ka(o),
                k = Qo(o),
                C = x || k,
                S = (m || Ya(o)) && !o.value || "" === t || Array.isArray(t) && !t.length,
                E = Ba.bind(null, g, n, w),
                T = function(e, t, n) {
                  var r = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : ba,
                    i = arguments.length > 4 && void 0 !== arguments[4] ? arguments[4] : ya,
                    a = e ? t : n;
                  w[g] = h({
                    type: e ? r : i,
                    message: a,
                    ref: o
                  }, E(e ? r : i, a))
                };
              if (i ? !Array.isArray(t) || !t.length : s && (!C && (S || ta(t)) || Ga(t) && !t || k && !Qa(a).isValid || x && !ts(a).isValid)) {
                var {
                  value: O,
                  message: A
                } = qa(s) ? {
                  value: !!s,
                  message: s
                } : rs(s);
                if (O && (w[g] = h({
                    type: xa,
                    message: A,
                    ref: b
                  }, E(xa, A)), !n)) return y(A), w
              }
              if (!(S || ta(u) && ta(p))) {
                var P, M, D = rs(p),
                  I = rs(u);
                if (ta(t) || isNaN(t)) {
                  var R = o.valueAsDate || new Date(t),
                    j = e => new Date((new Date).toDateString() + " " + e),
                    N = "time" == o.type,
                    L = "week" == o.type;
                  Ia(D.value) && t && (P = N ? j(t) > j(D.value) : L ? t > D.value : R > new Date(D.value)), Ia(I.value) && t && (M = N ? j(t) < j(I.value) : L ? t < I.value : R < new Date(I.value))
                } else {
                  var F = o.valueAsNumber || (t ? +t : t);
                  ta(D.value) || (P = F > D.value), ta(I.value) || (M = F < I.value)
                }
                if ((P || M) && (T(!!P, D.message, I.message, va, _a), !n)) return y(w[g].message), w
              }
              if ((l || c) && !S && (Ia(t) || i && Array.isArray(t))) {
                var B = rs(l),
                  z = rs(c),
                  H = !ta(B.value) && t.length > B.value,
                  U = !ta(z.value) && t.length < z.value;
                if ((H || U) && (T(H, B.message, z.message), !n)) return y(w[g].message), w
              }
              if (d && !S && Ia(t)) {
                var {
                  value: W,
                  message: V
                } = rs(d);
                if (Za(W) && !t.match(W) && (w[g] = h({
                    type: wa,
                    message: V,
                    ref: o
                  }, E(wa, V)), !n)) return y(V), w
              }
              if (f)
                if (ja(f)) {
                  var X = ns(yield f(t), b);
                  if (X && (w[g] = h(h({}, X), E(ka, X.message)), !n)) return y(X.message), w
                } else if (ra(f)) {
                var G = {};
                for (var Y in f) {
                  if (!Ta(G) && !n) break;
                  var q = ns(yield f[Y](t), b, Y);
                  q && (G = h(h({}, q), E(Y, q.message)), y(q.message), n && (w[g] = G))
                }
                if (!Ta(G) && (w[g] = h({
                    ref: b
                  }, G), !n)) return w
              }
              return y(!0), w
            }));
            return function(t, n, r, i, o) {
              return e.apply(this, arguments)
            }
          }(),
          os = "undefined" != typeof window && void 0 !== window.HTMLElement && "undefined" != typeof document;

        function as(e) {
          var t, n, r, i = Array.isArray(e);
          if (e instanceof Date) t = new Date(e);
          else if (e instanceof Set) t = new Set(e);
          else {
            if (os && (e instanceof Blob || e instanceof FileList) || !i && !ra(e)) return e;
            if (t = i ? [] : {}, Array.isArray(e) || (r = (n = e).constructor && n.constructor.prototype, ra(r) && r.hasOwnProperty("isPrototypeOf")))
              for (var o in e) t[o] = as(e[o]);
            else t = e
          }
          return t
        }
        var ss = e => ({
          isOnSubmit: !e || e === fa,
          isOnBlur: e === pa,
          isOnChange: e === da,
          isOnAll: e === ma,
          isOnTouch: e === ga
        });

        function ls(e) {
          for (var t in e)
            if (!sa(e[t])) return !1;
          return !0
        }

        function cs(e, t) {
          var n, r = za(t) ? [t] : Ha(t),
            i = 1 == r.length ? e : function(e, t) {
              for (var n = t.slice(0, -1).length, r = 0; r < n;) e = sa(e) ? r++ : e[t[r++]];
              return e
            }(e, r),
            o = r[r.length - 1];
          i && delete i[o];
          for (var a = 0; a < r.slice(0, -1).length; a++) {
            var s = -1,
              l = void 0,
              c = r.slice(0, -(a + 1)),
              u = c.length - 1;
            for (a > 0 && (n = e); ++s < c.length;) {
              var h = c[s];
              l = l ? l[h] : e[h], u === s && (ra(l) && Ta(l) || Array.isArray(l) && ls(l)) && (n ? delete n[h] : delete e[h]), n = l
            }
          }
          return e
        }

        function us() {
          var e = [];
          return {
            get observers() {
              return e
            },
            next: t => {
              for (var n of e) n.next(t)
            },
            subscribe: t => (e.push(t), {
              unsubscribe: () => {
                e = e.filter((e => e !== t))
              }
            }),
            unsubscribe: () => {
              e = []
            }
          }
        }
        var hs = e => ta(e) || !na(e);

        function ps(e, t) {
          if (hs(e) || hs(t)) return e === t;
          if (ea(e) && ea(t)) return e.getTime() === t.getTime();
          var n = Object.keys(e),
            r = Object.keys(t);
          if (n.length !== r.length) return !1;
          for (var i of n) {
            var o = e[i];
            if (!r.includes(i)) return !1;
            if ("ref" !== i) {
              var a = t[i];
              if (ea(o) && ea(a) || ra(o) && ra(a) || Array.isArray(o) && Array.isArray(a) ? !ps(o, a) : o !== a) return !1
            }
          }
          return !0
        }
        var ds = e => {
            var t = e ? e.ownerDocument : 0;
            return e instanceof(t && t.defaultView ? t.defaultView.HTMLElement : HTMLElement)
          },
          fs = e => "select-multiple" === e.type,
          gs = e => Ka(e) || Qo(e),
          ms = e => ds(e) && e.isConnected;

        function vs(e) {
          var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {},
            n = Array.isArray(e);
          if (ra(e) || n)
            for (var r in e) Array.isArray(e[r]) || ra(e[r]) && !Na(e[r]) ? (t[r] = Array.isArray(e[r]) ? [] : {}, vs(e[r], t[r])) : ta(e[r]) || (t[r] = !0);
          return t
        }

        function _s(e, t, n) {
          var r = Array.isArray(e);
          if (ra(e) || r)
            for (var i in e) Array.isArray(e[i]) || ra(e[i]) && !Na(e[i]) ? sa(t) || hs(n[i]) ? n[i] = Array.isArray(e[i]) ? vs(e[i], []) : h({}, vs(e[i])) : _s(e[i], ta(t) ? {} : t[i], n[i]) : n[i] = !ps(e[i], t[i]);
          return n
        }
        var bs = (e, t) => _s(e, t, vs(t)),
          ys = (e, t) => {
            var {
              valueAsNumber: n,
              valueAsDate: r,
              setValueAs: i
            } = t;
            return sa(e) ? e : n ? "" === e ? NaN : e ? +e : e : r && Ia(e) ? new Date(e) : i ? i(e) : e
          };

        function ws(e) {
          var t = e.ref;
          if (!(e.refs ? e.refs.every((e => e.disabled)) : t.disabled)) return Ya(t) ? t.files : Ka(t) ? ts(e.refs).value : fs(t) ? [...t.selectedOptions].map((e => {
            var {
              value: t
            } = e;
            return t
          })) : Qo(t) ? Qa(e.refs).value : ys(sa(t.value) ? e.ref.value : t.value, e)
        }
        var xs = (e, t, n, r) => {
            var i = {};
            for (var o of e) {
              var a = la(t, o);
              a && Ua(i, o, a._f)
            }
            return {
              criteriaMode: n,
              names: [...e],
              fields: i,
              shouldUseNativeValidation: r
            }
          },
          ks = e => sa(e) ? void 0 : Za(e) ? e.source : ra(e) ? Za(e.value) ? e.value.source : e.value : e,
          Cs = e => e.mount && (e.required || e.min || e.max || e.maxLength || e.minLength || e.pattern || e.validate);

        function Ss(e, t, n) {
          var r = la(e, n);
          if (r || za(n)) return {
            error: r,
            name: n
          };
          for (var i = n.split("."); i.length;) {
            var o = i.join("."),
              a = la(t, o),
              s = la(e, o);
            if (a && !Array.isArray(a) && n !== o) return {
              name: n
            };
            if (s && s.type) return {
              name: o,
              error: s
            };
            i.pop()
          }
          return {
            name: n
          }
        }
        var Es = (e, t, n, r, i) => !i.isOnAll && (!n && i.isOnTouch ? !(t || e) : (n ? r.isOnBlur : i.isOnBlur) ? !e : !(n ? r.isOnChange : i.isOnChange) || e),
          Ts = (e, t) => !aa(la(e, t)).length && cs(e, t),
          Os = {
            mode: fa,
            reValidateMode: da,
            shouldFocusError: !0
          };

        function As() {
          var e, t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
            n = h(h({}, Os), t),
            r = {
              submitCount: 0,
              isDirty: !1,
              isValidating: !1,
              isSubmitted: !1,
              isSubmitting: !1,
              isSubmitSuccessful: !1,
              isValid: !1,
              touchedFields: {},
              dirtyFields: {},
              errors: {}
            },
            i = {},
            o = as(n.defaultValues) || {},
            a = n.shouldUnregister ? {} : as(o),
            s = {
              action: !1,
              mount: !1,
              watch: !1
            },
            l = {
              mount: new Set,
              unMount: new Set,
              array: new Set,
              watch: new Set
            },
            c = 0,
            u = {},
            p = {
              isDirty: !1,
              dirtyFields: !1,
              touchedFields: !1,
              isValidating: !1,
              isValid: !1,
              errors: !1
            },
            f = {
              watch: us(),
              array: us(),
              state: us()
            },
            m = ss(n.mode),
            v = ss(n.reValidateMode),
            _ = n.criteriaMode === ma,
            b = e => t => {
              clearTimeout(c), c = window.setTimeout(e, t)
            },
            y = function() {
              var e = d((function*(e) {
                var t = !1;
                return p.isValid && (t = n.resolver ? Ta((yield E()).errors) : yield O(i, !0), e || t === r.isValid || (r.isValid = t, f.state.next({
                  isValid: t
                }))), t
              }));
              return function(t) {
                return e.apply(this, arguments)
              }
            }(),
            w = function(e) {
              var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : [],
                n = arguments.length > 2 ? arguments[2] : void 0,
                l = arguments.length > 3 ? arguments[3] : void 0,
                c = !(arguments.length > 4 && void 0 !== arguments[4]) || arguments[4],
                u = !(arguments.length > 5 && void 0 !== arguments[5]) || arguments[5];
              if (l && n) {
                if (s.action = !0, u && Array.isArray(la(i, e))) {
                  var h = n(la(i, e), l.argA, l.argB);
                  c && Ua(i, e, h)
                }
                if (p.errors && u && Array.isArray(la(r.errors, e))) {
                  var d = n(la(r.errors, e), l.argA, l.argB);
                  c && Ua(r.errors, e, d), Ts(r.errors, e)
                }
                if (p.touchedFields && u && Array.isArray(la(r.touchedFields, e))) {
                  var g = n(la(r.touchedFields, e), l.argA, l.argB);
                  c && Ua(r.touchedFields, e, g)
                }
                p.dirtyFields && (r.dirtyFields = bs(o, a)), f.state.next({
                  isDirty: P(e, t),
                  dirtyFields: r.dirtyFields,
                  errors: r.errors,
                  isValid: r.isValid
                })
              } else Ua(a, e, t)
            },
            x = (e, t) => {
              Ua(r.errors, e, t), f.state.next({
                errors: r.errors
              })
            },
            k = (e, t, n, r) => {
              var l = la(i, e);
              if (l) {
                var c = la(a, e, sa(n) ? la(o, e) : n);
                sa(c) || r && r.defaultChecked || t ? Ua(a, e, t ? c : ws(l._f)) : I(e, c), s.mount && y()
              }
            },
            C = (e, t, n, i, a) => {
              var s = !1,
                l = {
                  name: e
                },
                c = la(r.touchedFields, e);
              if (p.isDirty) {
                var u = r.isDirty;
                r.isDirty = l.isDirty = P(), s = u !== l.isDirty
              }
              if (p.dirtyFields && (!n || i)) {
                var h = la(r.dirtyFields, e);
                ps(la(o, e), t) ? cs(r.dirtyFields, e) : Ua(r.dirtyFields, e, !0), l.dirtyFields = r.dirtyFields, s = s || h !== la(r.dirtyFields, e)
              }
              return n && !c && (Ua(r.touchedFields, e, n), l.touchedFields = r.touchedFields, s = s || p.touchedFields && c !== n), s && a && f.state.next(l), s ? l : {}
            },
            S = function() {
              var n = d((function*(n, i, o, a) {
                var s = la(r.errors, n),
                  l = p.isValid && r.isValid !== i;
                if (t.delayError && o ? (e = b((() => x(n, o))))(t.delayError) : (clearTimeout(c), e = null, o ? Ua(r.errors, n, o) : cs(r.errors, n)), (o ? !ps(s, o) : s) || !Ta(a) || l) {
                  var d = h(h(h({}, a), l ? {
                    isValid: i
                  } : {}), {}, {
                    errors: r.errors,
                    name: n
                  });
                  r = h(h({}, r), d), f.state.next(d)
                }
                u[n]--, p.isValidating && !Object.values(u).some((e => e)) && (f.state.next({
                  isValidating: !1
                }), u = {})
              }));
              return function(e, t, r, i) {
                return n.apply(this, arguments)
              }
            }(),
            E = function() {
              var e = d((function*(e) {
                return n.resolver ? yield n.resolver(h({}, a), n.context, xs(e || l.mount, i, n.criteriaMode, n.shouldUseNativeValidation)): {}
              }));
              return function(t) {
                return e.apply(this, arguments)
              }
            }(),
            T = function() {
              var e = d((function*(e) {
                var {
                  errors: t
                } = yield E();
                if (e)
                  for (var n of e) {
                    var i = la(t, n);
                    i ? Ua(r.errors, n, i) : cs(r.errors, n)
                  } else r.errors = t;
                return t
              }));
              return function(t) {
                return e.apply(this, arguments)
              }
            }(),
            O = function() {
              var e = d((function*(e, t) {
                var i = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {
                  valid: !0
                };
                for (var o in e) {
                  var s = e[o];
                  if (s) {
                    var {
                      _f: c
                    } = s, u = g(s, Jo);
                    if (c) {
                      var h = l.array.has(c.name),
                        p = yield is(s, la(a, c.name), _, n.shouldUseNativeValidation, h);
                      if (p[c.name] && (i.valid = !1, t)) break;
                      !t && (la(p, c.name) ? h ? Xa(r.errors, p, c.name) : Ua(r.errors, c.name, p[c.name]) : cs(r.errors, c.name))
                    }
                    u && (yield O(u, t, i))
                  }
                }
                return i.valid
              }));
              return function(t, n) {
                return e.apply(this, arguments)
              }
            }(),
            A = () => {
              for (var e of l.unMount) {
                var t = la(i, e);
                t && (t._f.refs ? t._f.refs.every((e => !ms(e))) : !ms(t._f.ref)) && W(e)
              }
              l.unMount = new Set
            },
            P = (e, t) => (e && t && Ua(a, e, t), !ps(F(), o)),
            M = (e, t, n) => {
              var r = h({}, s.mount ? a : sa(t) ? o : Ia(e) ? {
                [e]: t
              } : t);
              return Ra(e, l, r, n)
            },
            D = e => aa(la(s.mount ? a : o, e, t.shouldUnregister ? la(o, e, []) : [])),
            I = function(e, t) {
              var n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {},
                r = la(i, e),
                o = t;
              if (r) {
                var s = r._f;
                s && (!s.disabled && Ua(a, e, ys(t, s)), o = os && ds(s.ref) && ta(t) ? "" : t, fs(s.ref) ? [...s.ref.options].forEach((e => e.selected = o.includes(e.value))) : s.refs ? Qo(s.ref) ? s.refs.length > 1 ? s.refs.forEach((e => (!e
                    .defaultChecked || !e.disabled) && (e.checked = Array.isArray(o) ? !!o.find((t => t === e.value)) : o === e.value))) : s.refs[0] && (s.refs[0].checked = !!o) : s.refs.forEach((e => e.checked = e.value === o)) : Ya(s.ref) ? s
                  .ref.value = "" : (s.ref.value = o, s.ref.type || f.watch.next({
                    name: e
                  })))
              }(n.shouldDirty || n.shouldTouch) && C(e, o, n.shouldTouch, n.shouldDirty, !0), n.shouldValidate && L(e)
            },
            R = (e, t, n) => {
              for (var r in t) {
                var o = t[r],
                  a = "".concat(e, ".").concat(r),
                  s = la(i, a);
                !l.array.has(e) && hs(o) && (!s || s._f) || ea(o) ? I(a, o, n) : R(a, o, n)
              }
            },
            j = function(e, t) {
              var n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {},
                s = la(i, e),
                c = l.array.has(e),
                u = as(t);
              Ua(a, e, u), c ? (f.array.next({
                name: e,
                values: a
              }), (p.isDirty || p.dirtyFields) && n.shouldDirty && (r.dirtyFields = bs(o, a), f.state.next({
                name: e,
                dirtyFields: r.dirtyFields,
                isDirty: P(e, u)
              }))) : !s || s._f || ta(u) ? I(e, u, n) : R(e, u, n), Va(e, l) && f.state.next({}), f.watch.next({
                name: e
              })
            },
            N = function() {
              var t = d((function*(t) {
                var o = t.target,
                  s = o.name,
                  c = la(i, s);
                if (c) {
                  var p, d, g = o.type ? ws(c._f) : ia(t),
                    b = t.type === ca || t.type === ua,
                    w = !Cs(c._f) && !n.resolver && !la(r.errors, s) && !c._f.deps || Es(b, la(r.touchedFields, s), r.isSubmitted, v, m),
                    x = Va(s, l, b);
                  Ua(a, s, g), b ? (c._f.onBlur && c._f.onBlur(t), e && e(0)) : c._f.onChange && c._f.onChange(t);
                  var k = C(s, g, b, !1),
                    T = !Ta(k) || x;
                  if (!b && f.watch.next({
                      name: s,
                      type: t.type
                    }), w) return T && f.state.next(h({
                    name: s
                  }, x ? {} : k));
                  if (!b && x && f.state.next({}), u[s] = (u[s], 1), f.state.next({
                      isValidating: !0
                    }), n.resolver) {
                    var {
                      errors: O
                    } = yield E([s]), A = Ss(r.errors, i, s), P = Ss(O, i, A.name || s);
                    p = P.error, s = P.name, d = Ta(O)
                  } else p = (yield is(c, la(a, s), _, n.shouldUseNativeValidation))[s], d = yield y(!0);
                  c._f.deps && L(c._f.deps), S(s, d, p, k)
                }
              }));
              return function(e) {
                return t.apply(this, arguments)
              }
            }(),
            L = function() {
              var e = d((function*(e) {
                var t, o, a = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {},
                  s = Aa(e);
                if (f.state.next({
                    isValidating: !0
                  }), n.resolver) {
                  var c = yield T(sa(e) ? e : s);
                  t = Ta(c), o = e ? !s.some((e => la(c, e))) : t
                } else e ? (o = (yield Promise.all(s.map(function() {
                  var e = d((function*(e) {
                    var t = la(i, e);
                    return yield O(t && t._f ? {
                      [e]: t
                    } : t)
                  }));
                  return function(t) {
                    return e.apply(this, arguments)
                  }
                }()))).every(Boolean), (o || r.isValid) && y()) : o = t = yield O(i);
                return f.state.next(h(h(h({}, !Ia(e) || p.isValid && t !== r.isValid ? {} : {
                  name: e
                }), n.resolver || !e ? {
                  isValid: t
                } : {}), {}, {
                  errors: r.errors,
                  isValidating: !1
                })), a.shouldFocus && !o && Wa(i, (e => e && la(r.errors, e)), e ? s : l.mount), o
              }));
              return function(t) {
                return e.apply(this, arguments)
              }
            }(),
            F = e => {
              var t = h(h({}, o), s.mount ? a : {});
              return sa(e) ? t : Ia(e) ? la(t, e) : e.map((e => la(t, e)))
            },
            B = (e, t) => ({
              invalid: !!la((t || r).errors, e),
              isDirty: !!la((t || r).dirtyFields, e),
              isTouched: !!la((t || r).touchedFields, e),
              error: la((t || r).errors, e)
            }),
            z = e => {
              e ? Aa(e).forEach((e => cs(r.errors, e))) : r.errors = {}, f.state.next({
                errors: r.errors
              })
            },
            H = (e, t, n) => {
              var o = (la(i, e, {
                _f: {}
              })._f || {}).ref;
              Ua(r.errors, e, h(h({}, t), {}, {
                ref: o
              })), f.state.next({
                name: e,
                errors: r.errors,
                isValid: !1
              }), n && n.shouldFocus && o && o.focus && o.focus()
            },
            U = (e, t) => ja(e) ? f.watch.subscribe({
              next: n => e(M(void 0, t), n)
            }) : M(e, t, !0),
            W = function(e) {
              var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};
              for (var s of e ? Aa(e) : l.mount) l.mount.delete(s), l.array.delete(s), la(i, s) && (t.keepValue || (cs(i, s), cs(a, s)), !t.keepError && cs(r.errors, s), !t.keepDirty && cs(r.dirtyFields, s), !t.keepTouched && cs(r.touchedFields,
                s), !n.shouldUnregister && !t.keepDefaultValue && cs(o, s));
              f.watch.next({}), f.state.next(h(h({}, r), t.keepDirty ? {
                isDirty: P()
              } : {})), !t.keepIsValid && y()
            },
            V = function(e) {
              var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {},
                r = la(i, e),
                c = Ga(t.disabled);
              return Ua(i, e, h(h({}, r || {}), {}, {
                _f: h(h({}, r && r._f ? r._f : {
                  ref: {
                    name: e
                  }
                }), {}, {
                  name: e,
                  mount: !0
                }, t)
              })), l.mount.add(e), r ? c && Ua(a, e, t.disabled ? void 0 : la(a, e, ws(r._f))) : k(e, !0, t.value), h(h(h({}, c ? {
                disabled: t.disabled
              } : {}), n.shouldUseNativeValidation ? {
                required: !!t.required,
                min: ks(t.min),
                max: ks(t.max),
                minLength: ks(t.minLength),
                maxLength: ks(t.maxLength),
                pattern: ks(t.pattern)
              } : {}), {}, {
                name: e,
                onChange: N,
                onBlur: N,
                ref: a => {
                  if (a) {
                    V(e, t), r = la(i, e);
                    var c = sa(a.value) && a.querySelectorAll && a.querySelectorAll("input,select,textarea")[0] || a,
                      u = gs(c),
                      p = r._f.refs || [];
                    if (u ? p.find((e => e === c)) : c === r._f.ref) return;
                    Ua(i, e, {
                      _f: h(h({}, r._f), u ? {
                        refs: [...p.filter(ms), c, ...Array.isArray(la(o, e)) ? [{}] : []],
                        ref: {
                          type: c.type,
                          name: e
                        }
                      } : {
                        ref: c
                      })
                    }), k(e, !1, void 0, c)
                  } else(r = la(i, e, {}))._f && (r._f.mount = !1), (n.shouldUnregister || t.shouldUnregister) && (!oa(l.array, e) || !s.action) && l.unMount.add(e)
                }
              })
            },
            X = () => n.shouldFocusError && Wa(i, (e => e && la(r.errors, e)), l.mount),
            G = (e, t) => function() {
              var o = d((function*(o) {
                o && (o.preventDefault && o.preventDefault(), o.persist && o.persist());
                var s = !0,
                  l = as(a);
                f.state.next({
                  isSubmitting: !0
                });
                try {
                  if (n.resolver) {
                    var {
                      errors: c,
                      values: u
                    } = yield E();
                    r.errors = c, l = u
                  } else yield O(i);
                  Ta(r.errors) ? (f.state.next({
                    errors: {},
                    isSubmitting: !0
                  }), yield e(l, o)) : (t && (yield t(h({}, r.errors), o)), X())
                } catch (e) {
                  throw s = !1, e
                } finally {
                  r.isSubmitted = !0, f.state.next({
                    isSubmitted: !0,
                    isSubmitting: !1,
                    isSubmitSuccessful: Ta(r.errors) && s,
                    submitCount: r.submitCount + 1,
                    errors: r.errors
                  })
                }
              }));
              return function(e) {
                return o.apply(this, arguments)
              }
            }(),
            Y = function(e) {
              var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};
              la(i, e) && (sa(t.defaultValue) ? j(e, la(o, e)) : (j(e, t.defaultValue), Ua(o, e, t.defaultValue)), t.keepTouched || cs(r.touchedFields, e), t.keepDirty || (cs(r.dirtyFields, e), r.isDirty = t.defaultValue ? P(e, la(o, e)) : P()),
                t.keepError || (cs(r.errors, e), p.isValid && y()), f.state.next(h({}, r)))
            },
            q = function(e) {
              var n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {},
                c = e || o,
                u = as(c),
                h = e && !Ta(e) ? u : o;
              if (n.keepDefaultValues || (o = c), !n.keepValues) {
                if (n.keepDirtyValues)
                  for (var d of l.mount) la(r.dirtyFields, d) ? Ua(h, d, la(a, d)) : j(d, la(h, d));
                else {
                  if (os && sa(e))
                    for (var g of l.mount) {
                      var m = la(i, g);
                      if (m && m._f) {
                        var v = Array.isArray(m._f.refs) ? m._f.refs[0] : m._f.ref;
                        try {
                          if (ds(v)) {
                            v.closest("form").reset();
                            break
                          }
                        } catch (e) {}
                      }
                    }
                  i = {}
                }
                a = t.shouldUnregister ? n.keepDefaultValues ? as(o) : {} : u, f.array.next({
                  values: h
                }), f.watch.next({
                  values: h
                })
              }
              l = {
                mount: new Set,
                unMount: new Set,
                array: new Set,
                watch: new Set,
                watchAll: !1,
                focus: ""
              }, s.mount = !p.isValid || !!n.keepIsValid, s.watch = !!t.shouldUnregister, f.state.next({
                submitCount: n.keepSubmitCount ? r.submitCount : 0,
                isDirty: n.keepDirty || n.keepDirtyValues ? r.isDirty : !(!n.keepDefaultValues || ps(e, o)),
                isSubmitted: !!n.keepIsSubmitted && r.isSubmitted,
                dirtyFields: n.keepDirty || n.keepDirtyValues ? r.dirtyFields : n.keepDefaultValues && e ? bs(o, e) : {},
                touchedFields: n.keepTouched ? r.touchedFields : {},
                errors: n.keepErrors ? r.errors : {},
                isSubmitting: !1,
                isSubmitSuccessful: !1
              })
            },
            K = (e, t) => q(ja(e) ? e(a) : e, t),
            Z = function(e) {
              var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {},
                n = la(i, e),
                r = n && n._f;
              if (r) {
                var o = r.refs ? r.refs[0] : r.ref;
                o.focus && (o.focus(), t.shouldSelect && o.select())
              }
            };
          return {
            control: {
              register: V,
              unregister: W,
              getFieldState: B,
              _executeSchema: E,
              _focusError: X,
              _getWatch: M,
              _getDirty: P,
              _updateValid: y,
              _removeUnmounted: A,
              _updateFieldArray: w,
              _getFieldArray: D,
              _subjects: f,
              _proxyFormState: p,
              get _fields() {
                return i
              },
              get _formValues() {
                return a
              },
              get _stateFlags() {
                return s
              },
              set _stateFlags(e) {
                s = e
              },
              get _defaultValues() {
                return o
              },
              get _names() {
                return l
              },
              set _names(e) {
                l = e
              },
              get _formState() {
                return r
              },
              set _formState(e) {
                r = e
              },
              get _options() {
                return n
              },
              set _options(e) {
                n = h(h({}, n), e)
              }
            },
            trigger: L,
            register: V,
            handleSubmit: G,
            watch: U,
            setValue: j,
            getValues: F,
            reset: K,
            resetField: Y,
            clearErrors: z,
            unregister: W,
            setError: H,
            setFocus: Z,
            getFieldState: B
          }
        }
        class Ps {
          constructor(e) {
            f(this, "addToCartBtnDomRaw", null), f(this, "buyNowBtnDomRaw", null), f(this, "btnWrapperRaw", null), f(this, "queryWrapperTarget", null), f(this, "disableListeners", []), f(this, "enableListeners", []), this.queryWrapperTarget = e
          }
          get productInfo() {
            return this.queryWrapperTarget || (this.queryWrapperTarget = document.querySelector(".product-info__btn") || document.querySelector(".product-info__btns") || document.querySelector("[id=product-info-atc]") || document.querySelector(
              "[quantity='#product-info-quantity']") || document.querySelector(".product-info")) || document.querySelector("#product-info-body-inner-container")
          }
          get addToCardBtnDom() {
            var e;
            return this.addToCartBtnDomRaw || (this.addToCartBtnDomRaw = null === (e = this.productInfo) || void 0 === e ? void 0 : e.querySelector("[data-click*=addToCart],[data-click*=AddToCart],[data-track-source=add_to_cart]"))
          }
          get buyNowBtnDom() {
            var e;
            return this.buyNowBtnDomRaw || (this.buyNowBtnDomRaw = null === (e = this.productInfo) || void 0 === e ? void 0 : e.querySelector("[data-click*=submit],[data-click*=Submit],[data-track-source=buy_now]"))
          }
          get btnWrapper() {
            var e;
            return this.btnWrapperRaw || (this.btnWrapperRaw = null === (e = this.addToCardBtnDom) || void 0 === e ? void 0 : e.parentElement), this.btnWrapperRaw
          }
          getLatestBtn(e) {
            var t;
            return null === (t = e.target) || void 0 === t ? void 0 : t.closest("[data-click*=addToCart],[data-click*=AddToCart],[data-click*=submit],[data-click*=Submit],[data-track-source=add_to_cart],[data-track-source=buy_now]")
          }
          wrapFn(e, t) {
            return n => {
              var r;
              !t || null !== (r = n.target) && void 0 !== r && r.closest("[data-wishlist=product-love]") || (e(), n.preventDefault(), n.stopPropagation());
              var i = this.getLatestBtn(n);
              i !== this.addToCardBtnDom && i !== this.buyNowBtnDom || e()
            }
          }
          addEnableListener(e) {
            var t, n = this.wrapFn(e, !1);
            this.enableListeners.push(n), null === (t = this.btnWrapper) || void 0 === t || t.addEventListener("click", n, !0)
          }
          addDisableListener(e) {
            var t, n = this.wrapFn(e, !0);
            this.disableListeners.push(n), null === (t = this.btnWrapper) || void 0 === t || t.addEventListener("click", n, !0)
          }
          removeAllEnableListeners() {
            this.enableListeners.forEach((e => {
              var t;
              null === (t = this.btnWrapper) || void 0 === t || t.removeEventListener("click", e, !0)
            }))
          }
          removeAllDisableListeners() {
            this.disableListeners.forEach((e => {
              var t;
              null === (t = this.btnWrapper) || void 0 === t || t.removeEventListener("click", e, !0)
            }))
          }
          disableATCAndBNBtNs(e) {
            this.removeAllEnableListeners(), e && this.addDisableListener(e)
          }
          enableATCAndBNBtNs(e) {
            this.removeAllDisableListeners(), e && this.addEnableListener(e)
          }
        }
        var Ms, Ds = new Ps,
          Is = () => {
            var e;
            return null === (e = Ds.productInfo) || void 0 === e ? void 0 : e.querySelector("#paypal-express-button-container")
          },
          {
            disablePaypalBtn: Rs,
            enablePaypalBtn: js
          } = {
            disablePaypalBtn: e => {
              var t = Is();
              t && (t.style.pointerEvents = "none", Ms = t => {
                t.preventDefault(), t.stopPropagation(), e()
              }, null == t || t.addEventListener("click", Ms, !0))
            },
            enablePaypalBtn: () => {
              var e = Is();
              e && (e.style.pointerEvents = "auto", null == e || e.removeEventListener("click", Ms, !0))
            }
          };
        var Ns, Ls = (Ns = Ze, (e, t) => {
            const n = Je(!1);
            Ns((() => () => {
              n.current = !1
            }), []), Ns((() => {
              if (n.current) return e();
              n.current = !0
            }), t)
          }),
          Fs = function() {
            if ("undefined" != typeof Map) return Map;

            function e(e, t) {
              var n = -1;
              return e.some((function(e, r) {
                return e[0] === t && (n = r, !0)
              })), n
            }
            return function() {
              function t() {
                this.__entries__ = []
              }
              return Object.defineProperty(t.prototype, "size", {
                get: function() {
                  return this.__entries__.length
                },
                enumerable: !0,
                configurable: !0
              }), t.prototype.get = function(t) {
                var n = e(this.__entries__, t),
                  r = this.__entries__[n];
                return r && r[1]
              }, t.prototype.set = function(t, n) {
                var r = e(this.__entries__, t);
                ~r ? this.__entries__[r][1] = n : this.__entries__.push([t, n])
              }, t.prototype.delete = function(t) {
                var n = this.__entries__,
                  r = e(n, t);
                ~r && n.splice(r, 1)
              }, t.prototype.has = function(t) {
                return !!~e(this.__entries__, t)
              }, t.prototype.clear = function() {
                this.__entries__.splice(0)
              }, t.prototype.forEach = function(e, t) {
                void 0 === t && (t = null);
                for (var n = 0, r = this.__entries__; n < r.length; n++) {
                  var i = r[n];
                  e.call(t, i[1], i[0])
                }
              }, t
            }()
          }(),
          Bs = "undefined" != typeof window && "undefined" != typeof document && window.document === document,
          zs = "undefined" != typeof global && global.Math === Math ? global : "undefined" != typeof self && self.Math === Math ? self : "undefined" != typeof window && window.Math === Math ? window : Function("return this")(),
          Hs = "function" == typeof requestAnimationFrame ? requestAnimationFrame.bind(zs) : function(e) {
            return setTimeout((function() {
              return e(Date.now())
            }), 1e3 / 60)
          };
        var Us = ["top", "right", "bottom", "left", "width", "height", "size", "weight"],
          Ws = "undefined" != typeof MutationObserver,
          Vs = function() {
            function e() {
              this.connected_ = !1, this.mutationEventsAdded_ = !1, this.mutationsObserver_ = null, this.observers_ = [], this.onTransitionEnd_ = this.onTransitionEnd_.bind(this), this.refresh = function(e, t) {
                var n = !1,
                  r = !1,
                  i = 0;

                function o() {
                  n && (n = !1, e()), r && s()
                }

                function a() {
                  Hs(o)
                }

                function s() {
                  var e = Date.now();
                  if (n) {
                    if (e - i < 2) return;
                    r = !0
                  } else n = !0, r = !1, setTimeout(a, t);
                  i = e
                }
                return s
              }(this.refresh.bind(this), 20)
            }
            return e.prototype.addObserver = function(e) {
              ~this.observers_.indexOf(e) || this.observers_.push(e), this.connected_ || this.connect_()
            }, e.prototype.removeObserver = function(e) {
              var t = this.observers_,
                n = t.indexOf(e);
              ~n && t.splice(n, 1), !t.length && this.connected_ && this.disconnect_()
            }, e.prototype.refresh = function() {
              this.updateObservers_() && this.refresh()
            }, e.prototype.updateObservers_ = function() {
              var e = this.observers_.filter((function(e) {
                return e.gatherActive(), e.hasActive()
              }));
              return e.forEach((function(e) {
                return e.broadcastActive()
              })), e.length > 0
            }, e.prototype.connect_ = function() {
              Bs && !this.connected_ && (document.addEventListener("transitionend", this.onTransitionEnd_), window.addEventListener("resize", this.refresh), Ws ? (this.mutationsObserver_ = new MutationObserver(this.refresh), this
                .mutationsObserver_.observe(document, {
                  attributes: !0,
                  childList: !0,
                  characterData: !0,
                  subtree: !0
                })) : (document.addEventListener("DOMSubtreeModified", this.refresh), this.mutationEventsAdded_ = !0), this.connected_ = !0)
            }, e.prototype.disconnect_ = function() {
              Bs && this.connected_ && (document.removeEventListener("transitionend", this.onTransitionEnd_), window.removeEventListener("resize", this.refresh), this.mutationsObserver_ && this.mutationsObserver_.disconnect(), this
                .mutationEventsAdded_ && document.removeEventListener("DOMSubtreeModified", this.refresh), this.mutationsObserver_ = null, this.mutationEventsAdded_ = !1, this.connected_ = !1)
            }, e.prototype.onTransitionEnd_ = function(e) {
              var t = e.propertyName,
                n = void 0 === t ? "" : t;
              Us.some((function(e) {
                return !!~n.indexOf(e)
              })) && this.refresh()
            }, e.getInstance = function() {
              return this.instance_ || (this.instance_ = new e), this.instance_
            }, e.instance_ = null, e
          }(),
          Xs = function(e, t) {
            for (var n = 0, r = Object.keys(t); n < r.length; n++) {
              var i = r[n];
              Object.defineProperty(e, i, {
                value: t[i],
                enumerable: !1,
                writable: !1,
                configurable: !0
              })
            }
            return e
          },
          Gs = function(e) {
            return e && e.ownerDocument && e.ownerDocument.defaultView || zs
          },
          Ys = Qs(0, 0, 0, 0);

        function qs(e) {
          return parseFloat(e) || 0
        }

        function Ks(e) {
          for (var t = [], n = 1; n < arguments.length; n++) t[n - 1] = arguments[n];
          return t.reduce((function(t, n) {
            return t + qs(e["border-" + n + "-width"])
          }), 0)
        }

        function Zs(e) {
          var t = e.clientWidth,
            n = e.clientHeight;
          if (!t && !n) return Ys;
          var r = Gs(e).getComputedStyle(e),
            i = function(e) {
              for (var t = {}, n = 0, r = ["top", "right", "bottom", "left"]; n < r.length; n++) {
                var i = r[n],
                  o = e["padding-" + i];
                t[i] = qs(o)
              }
              return t
            }(r),
            o = i.left + i.right,
            a = i.top + i.bottom,
            s = qs(r.width),
            l = qs(r.height);
          if ("border-box" === r.boxSizing && (Math.round(s + o) !== t && (s -= Ks(r, "left", "right") + o), Math.round(l + a) !== n && (l -= Ks(r, "top", "bottom") + a)), ! function(e) {
              return e === Gs(e).document.documentElement
            }(e)) {
            var c = Math.round(s + o) - t,
              u = Math.round(l + a) - n;
            1 !== Math.abs(c) && (s -= c), 1 !== Math.abs(u) && (l -= u)
          }
          return Qs(i.left, i.top, s, l)
        }
        var $s = "undefined" != typeof SVGGraphicsElement ? function(e) {
          return e instanceof Gs(e).SVGGraphicsElement
        } : function(e) {
          return e instanceof Gs(e).SVGElement && "function" == typeof e.getBBox
        };

        function Js(e) {
          return Bs ? $s(e) ? function(e) {
            var t = e.getBBox();
            return Qs(0, 0, t.width, t.height)
          }(e) : Zs(e) : Ys
        }

        function Qs(e, t, n, r) {
          return {
            x: e,
            y: t,
            width: n,
            height: r
          }
        }
        var el = function() {
            function e(e) {
              this.broadcastWidth = 0, this.broadcastHeight = 0, this.contentRect_ = Qs(0, 0, 0, 0), this.target = e
            }
            return e.prototype.isActive = function() {
              var e = Js(this.target);
              return this.contentRect_ = e, e.width !== this.broadcastWidth || e.height !== this.broadcastHeight
            }, e.prototype.broadcastRect = function() {
              var e = this.contentRect_;
              return this.broadcastWidth = e.width, this.broadcastHeight = e.height, e
            }, e
          }(),
          tl = function(e, t) {
            var n = function(e) {
              var t = e.x,
                n = e.y,
                r = e.width,
                i = e.height,
                o = "undefined" != typeof DOMRectReadOnly ? DOMRectReadOnly : Object,
                a = Object.create(o.prototype);
              return Xs(a, {
                x: t,
                y: n,
                width: r,
                height: i,
                top: n,
                right: t + r,
                bottom: i + n,
                left: t
              }), a
            }(t);
            Xs(this, {
              target: e,
              contentRect: n
            })
          },
          nl = function() {
            function e(e, t, n) {
              if (this.activeObservations_ = [], this.observations_ = new Fs, "function" != typeof e) throw new TypeError("The callback provided as parameter 1 is not a function.");
              this.callback_ = e, this.controller_ = t, this.callbackCtx_ = n
            }
            return e.prototype.observe = function(e) {
              if (!arguments.length) throw new TypeError("1 argument required, but only 0 present.");
              if ("undefined" != typeof Element && Element instanceof Object) {
                if (!(e instanceof Gs(e).Element)) throw new TypeError('parameter 1 is not of type "Element".');
                var t = this.observations_;
                t.has(e) || (t.set(e, new el(e)), this.controller_.addObserver(this), this.controller_.refresh())
              }
            }, e.prototype.unobserve = function(e) {
              if (!arguments.length) throw new TypeError("1 argument required, but only 0 present.");
              if ("undefined" != typeof Element && Element instanceof Object) {
                if (!(e instanceof Gs(e).Element)) throw new TypeError('parameter 1 is not of type "Element".');
                var t = this.observations_;
                t.has(e) && (t.delete(e), t.size || this.controller_.removeObserver(this))
              }
            }, e.prototype.disconnect = function() {
              this.clearActive(), this.observations_.clear(), this.controller_.removeObserver(this)
            }, e.prototype.gatherActive = function() {
              var e = this;
              this.clearActive(), this.observations_.forEach((function(t) {
                t.isActive() && e.activeObservations_.push(t)
              }))
            }, e.prototype.broadcastActive = function() {
              if (this.hasActive()) {
                var e = this.callbackCtx_,
                  t = this.activeObservations_.map((function(e) {
                    return new tl(e.target, e.broadcastRect())
                  }));
                this.callback_.call(e, t, e), this.clearActive()
              }
            }, e.prototype.clearActive = function() {
              this.activeObservations_.splice(0)
            }, e.prototype.hasActive = function() {
              return this.activeObservations_.length > 0
            }, e
          }(),
          rl = "undefined" != typeof WeakMap ? new WeakMap : new Fs,
          il = function e(t) {
            if (!(this instanceof e)) throw new TypeError("Cannot call a class as a function.");
            if (!arguments.length) throw new TypeError("1 argument required, but only 0 present.");
            var n = Vs.getInstance(),
              r = new nl(t, n, this);
            rl.set(this, r)
          };
        ["observe", "unobserve", "disconnect"].forEach((function(e) {
          il.prototype[e] = function() {
            var t;
            return (t = rl.get(this))[e].apply(t, arguments)
          }
        }));
        var ol = void 0 !== zs.ResizeObserver ? zs.ResizeObserver : il,
          al = (e, t) => {
            Ze((() => ("loading" !== document.readyState ? e() : document.addEventListener("DOMContentLoaded", e), () => {
              document.removeEventListener("DOMContentLoaded", e)
            })), t)
          },
          sl = {
            exports: {}
          };
        ! function(e) {
          ! function() {
            var t = {}.hasOwnProperty;

            function n() {
              for (var e = [], r = 0; r < arguments.length; r++) {
                var i = arguments[r];
                if (i) {
                  var o = typeof i;
                  if ("string" === o || "number" === o) e.push(i);
                  else if (Array.isArray(i)) {
                    if (i.length) {
                      var a = n.apply(null, i);
                      a && e.push(a)
                    }
                  } else if ("object" === o)
                    if (i.toString === Object.prototype.toString)
                      for (var s in i) t.call(i, s) && i[s] && e.push(s);
                    else e.push(i.toString())
                }
              }
              return e.join(" ")
            }
            e.exports ? (n.default = n, e.exports = n) : window.classNames = n
          }()
        }(sl);
        var ll, cl, ul = sl.exports,
          hl = e => "Please select at least ".concat(e, " options");

        function pl() {
          return pl = Object.assign ? Object.assign.bind() : function(e) {
            for (var t = 1; t < arguments.length; t++) {
              var n = arguments[t];
              for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r])
            }
            return e
          }, pl.apply(this, arguments)
        }
        var dl = e => ue("svg", pl({
            width: 16,
            height: 16,
            fill: "none",
            xmlns: "http://www.w3.org/2000/svg"
          }, e), ll || (ll = ue("path", {
            d: "M7.915 1.675a6.41 6.41 0 1 0 0 12.822 6.41 6.41 0 0 0 0-12.822Zm-5.666.744A8.014 8.014 0 1 1 13.58 13.751 8.013 8.013 0 0 1 2.249 2.421v-.002Z",
            fill: "#6D7175"
          })), cl || (cl = ue("path", {
            d: "M8.578 10.16H7.082v-.8c.007-1.379.344-1.58.962-1.95.066-.04.134-.08.206-.125.511-.322.905-.728.905-1.32 0-.664-.52-1.096-1.167-1.096-.597 0-1.162.28-1.2 1.075H5.2C5.242 4.336 6.515 3.5 7.996 3.5c1.616 0 2.729 1.014 2.729 2.444 0 .969-.487 1.604-1.266 2.069l-.166.1c-.553.334-.707.426-.715 1.246v.8Zm.12 1.41a.942.942 0 0 1-.93.93.925.925 0 0 1-.517-1.7.924.924 0 0 1 .517-.153.94.94 0 0 1 .93.922Z",
            fill: "#6D7175"
          }))),
          fl = 0;

        function gl(e, t, n, r, i) {
          var o, a, s = {};
          for (a in t) "ref" == a ? o = t[a] : s[a] = t[a];
          var l = {
            type: e,
            props: s,
            key: n,
            ref: o,
            __k: null,
            __: null,
            __b: 0,
            __e: null,
            __d: void 0,
            __c: null,
            __h: null,
            constructor: void 0,
            __v: --fl,
            __source: i,
            __self: r
          };
          if ("function" == typeof e && (o = e.defaultProps))
            for (a in o) void 0 === s[a] && (s[a] = o[a]);
          return Q.vnode && Q.vnode(l), l
        }
        var ml = ["tagName", "children"],
          vl = dt((e => {
            var {
              tagName: t,
              children: n
            } = e;
            return gl(t || "span", h(h({}, g(e, ml)), {}, {
              children: n
            }))
          }));

        function _l(e) {
          return e.split("-")[0]
        }

        function bl(e) {
          return e.split("-")[1]
        }

        function yl(e) {
          return ["top", "bottom"].includes(_l(e)) ? "x" : "y"
        }

        function wl(e) {
          return "y" === e ? "height" : "width"
        }

        function xl(e, t, n) {
          let {
            reference: r,
            floating: i
          } = e;
          const o = r.x + r.width / 2 - i.width / 2,
            a = r.y + r.height / 2 - i.height / 2,
            s = yl(t),
            l = wl(s),
            c = r[l] / 2 - i[l] / 2,
            u = "x" === s;
          let h;
          switch (_l(t)) {
            case "top":
              h = {
                x: o,
                y: r.y - i.height
              };
              break;
            case "bottom":
              h = {
                x: o,
                y: r.y + r.height
              };
              break;
            case "right":
              h = {
                x: r.x + r.width,
                y: a
              };
              break;
            case "left":
              h = {
                x: r.x - i.width,
                y: a
              };
              break;
            default:
              h = {
                x: r.x,
                y: r.y
              }
          }
          switch (bl(t)) {
            case "start":
              h[s] -= c * (n && u ? -1 : 1);
              break;
            case "end":
              h[s] += c * (n && u ? -1 : 1)
          }
          return h
        }

        function kl(e) {
          return "number" != typeof e ? function(e) {
            return {
              top: 0,
              right: 0,
              bottom: 0,
              left: 0,
              ...e
            }
          }(e) : {
            top: e,
            right: e,
            bottom: e,
            left: e
          }
        }

        function Cl(e) {
          return {
            ...e,
            top: e.y,
            left: e.x,
            right: e.x + e.width,
            bottom: e.y + e.height
          }
        }
        const Sl = Math.min,
          El = Math.max;

        function Tl(e, t, n) {
          return El(e, Sl(t, n))
        }
        const Ol = e => ({
          name: "arrow",
          options: e,
          async fn(t) {
            const {
              element: n,
              padding: r = 0
            } = null != e ? e : {}, {
              x: i,
              y: o,
              placement: a,
              rects: s,
              platform: l
            } = t;
            if (null == n) return {};
            const c = kl(r),
              u = {
                x: i,
                y: o
              },
              h = yl(a),
              p = bl(a),
              d = wl(h),
              f = await l.getDimensions(n),
              g = "y" === h ? "top" : "left",
              m = "y" === h ? "bottom" : "right",
              v = s.reference[d] + s.reference[h] - u[h] - s.floating[d],
              _ = u[h] - s.reference[h],
              b = await (null == l.getOffsetParent ? void 0 : l.getOffsetParent(n));
            let y = b ? "y" === h ? b.clientHeight || 0 : b.clientWidth || 0 : 0;
            0 === y && (y = s.floating[d]);
            const w = v / 2 - _ / 2,
              x = c[g],
              k = y - f[d] - c[m],
              C = y / 2 - f[d] / 2 + w,
              S = Tl(x, C, k),
              E = ("start" === p ? c[g] : c[m]) > 0 && C !== S && s.reference[d] <= s.floating[d];
            return {
              [h]: u[h] - (E ? C < x ? x - C : k - C : 0),
              data: {
                [h]: S,
                centerOffset: C - S
              }
            }
          }
        });
        const Al = function(e) {
          return void 0 === e && (e = 0), {
            name: "offset",
            options: e,
            async fn(t) {
              const {
                x: n,
                y: r
              } = t, i = await async function(e, t) {
                const {
                  placement: n,
                  platform: r,
                  elements: i
                } = e, o = await (null == r.isRTL ? void 0 : r.isRTL(i.floating)), a = _l(n), s = bl(n), l = "x" === yl(n), c = ["left", "top"].includes(a) ? -1 : 1, u = o && l ? -1 : 1, h = "function" == typeof t ? t(e) : t;
                let {
                  mainAxis: p,
                  crossAxis: d,
                  alignmentAxis: f
                } = "number" == typeof h ? {
                  mainAxis: h,
                  crossAxis: 0,
                  alignmentAxis: null
                } : {
                  mainAxis: 0,
                  crossAxis: 0,
                  alignmentAxis: null,
                  ...h
                };
                return s && "number" == typeof f && (d = "end" === s ? -1 * f : f), l ? {
                  x: d * u,
                  y: p * c
                } : {
                  x: p * c,
                  y: d * u
                }
              }(t, e);
              return {
                x: n + i.x,
                y: r + i.y,
                data: i
              }
            }
          }
        };
        const Pl = function(e) {
          return void 0 === e && (e = {}), {
            name: "shift",
            options: e,
            async fn(t) {
              const {
                x: n,
                y: r,
                placement: i
              } = t, {
                mainAxis: o = !0,
                crossAxis: a = !1,
                limiter: s = {
                  fn: e => {
                    let {
                      x: t,
                      y: n
                    } = e;
                    return {
                      x: t,
                      y: n
                    }
                  }
                },
                ...l
              } = e, c = {
                x: n,
                y: r
              }, u = await async function(e, t) {
                var n;
                void 0 === t && (t = {});
                const {
                  x: r,
                  y: i,
                  platform: o,
                  rects: a,
                  elements: s,
                  strategy: l
                } = e, {
                  boundary: c = "clippingAncestors",
                  rootBoundary: u = "viewport",
                  elementContext: h = "floating",
                  altBoundary: p = !1,
                  padding: d = 0
                } = t, f = kl(d), g = s[p ? "floating" === h ? "reference" : "floating" : h], m = Cl(await o.getClippingRect({
                  element: null == (n = await (null == o.isElement ? void 0 : o.isElement(g))) || n ? g : g.contextElement || await (null == o.getDocumentElement ? void 0 : o.getDocumentElement(s.floating)),
                  boundary: c,
                  rootBoundary: u,
                  strategy: l
                })), v = Cl(o.convertOffsetParentRelativeRectToViewportRelativeRect ? await o.convertOffsetParentRelativeRectToViewportRelativeRect({
                  rect: "floating" === h ? {
                    ...a.floating,
                    x: r,
                    y: i
                  } : a.reference,
                  offsetParent: await (null == o.getOffsetParent ? void 0 : o.getOffsetParent(s.floating)),
                  strategy: l
                }) : a[h]);
                return {
                  top: m.top - v.top + f.top,
                  bottom: v.bottom - m.bottom + f.bottom,
                  left: m.left - v.left + f.left,
                  right: v.right - m.right + f.right
                }
              }(t, l), h = yl(_l(i)), p = "x" === h ? "y" : "x";
              let d = c[h],
                f = c[p];
              if (o) {
                const e = "y" === h ? "bottom" : "right";
                d = Tl(d + u["y" === h ? "top" : "left"], d, d - u[e])
              }
              if (a) {
                const e = "y" === p ? "bottom" : "right";
                f = Tl(f + u["y" === p ? "top" : "left"], f, f - u[e])
              }
              const g = s.fn({
                ...t,
                [h]: d,
                [p]: f
              });
              return {
                ...g,
                data: {
                  x: g.x - n,
                  y: g.y - r
                }
              }
            }
          }
        };

        function Ml(e) {
          return e && e.document && e.location && e.alert && e.setInterval
        }

        function Dl(e) {
          if (null == e) return window;
          if (!Ml(e)) {
            const t = e.ownerDocument;
            return t && t.defaultView || window
          }
          return e
        }

        function Il(e) {
          return Dl(e).getComputedStyle(e)
        }

        function Rl(e) {
          return Ml(e) ? "" : e ? (e.nodeName || "").toLowerCase() : ""
        }

        function jl() {
          const e = navigator.userAgentData;
          return null != e && e.brands ? e.brands.map((e => e.brand + "/" + e.version)).join(" ") : navigator.userAgent
        }

        function Nl(e) {
          return e instanceof Dl(e).HTMLElement
        }

        function Ll(e) {
          return e instanceof Dl(e).Element
        }

        function Fl(e) {
          if ("undefined" == typeof ShadowRoot) return !1;
          return e instanceof Dl(e).ShadowRoot || e instanceof ShadowRoot
        }

        function Bl(e) {
          const {
            overflow: t,
            overflowX: n,
            overflowY: r
          } = Il(e);
          return /auto|scroll|overlay|hidden/.test(t + r + n)
        }

        function zl(e) {
          return ["table", "td", "th"].includes(Rl(e))
        }

        function Hl(e) {
          const t = /firefox/i.test(jl()),
            n = Il(e);
          return "none" !== n.transform || "none" !== n.perspective || "paint" === n.contain || ["transform", "perspective"].includes(n.willChange) || t && "filter" === n.willChange || t && !!n.filter && "none" !== n.filter
        }

        function Ul() {
          return !/^((?!chrome|android).)*safari/i.test(jl())
        }
        const Wl = Math.min,
          Vl = Math.max,
          Xl = Math.round;

        function Gl(e, t, n) {
          var r, i, o, a;
          void 0 === t && (t = !1), void 0 === n && (n = !1);
          const s = e.getBoundingClientRect();
          let l = 1,
            c = 1;
          t && Nl(e) && (l = e.offsetWidth > 0 && Xl(s.width) / e.offsetWidth || 1, c = e.offsetHeight > 0 && Xl(s.height) / e.offsetHeight || 1);
          const u = Ll(e) ? Dl(e) : window,
            h = !Ul() && n,
            p = (s.left + (h && null != (r = null == (i = u.visualViewport) ? void 0 : i.offsetLeft) ? r : 0)) / l,
            d = (s.top + (h && null != (o = null == (a = u.visualViewport) ? void 0 : a.offsetTop) ? o : 0)) / c,
            f = s.width / l,
            g = s.height / c;
          return {
            width: f,
            height: g,
            top: d,
            right: p + f,
            bottom: d + g,
            left: p,
            x: p,
            y: d
          }
        }

        function Yl(e) {
          return (t = e, (t instanceof Dl(t).Node ? e.ownerDocument : e.document) || window.document).documentElement;
          var t
        }

        function ql(e) {
          return Ll(e) ? {
            scrollLeft: e.scrollLeft,
            scrollTop: e.scrollTop
          } : {
            scrollLeft: e.pageXOffset,
            scrollTop: e.pageYOffset
          }
        }

        function Kl(e) {
          return Gl(Yl(e)).left + ql(e).scrollLeft
        }

        function Zl(e, t, n) {
          const r = Nl(t),
            i = Yl(t),
            o = Gl(e, r && function(e) {
              const t = Gl(e);
              return Xl(t.width) !== e.offsetWidth || Xl(t.height) !== e.offsetHeight
            }(t), "fixed" === n);
          let a = {
            scrollLeft: 0,
            scrollTop: 0
          };
          const s = {
            x: 0,
            y: 0
          };
          if (r || !r && "fixed" !== n)
            if (("body" !== Rl(t) || Bl(i)) && (a = ql(t)), Nl(t)) {
              const e = Gl(t, !0);
              s.x = e.x + t.clientLeft, s.y = e.y + t.clientTop
            } else i && (s.x = Kl(i));
          return {
            x: o.left + a.scrollLeft - s.x,
            y: o.top + a.scrollTop - s.y,
            width: o.width,
            height: o.height
          }
        }

        function $l(e) {
          return "html" === Rl(e) ? e : e.assignedSlot || e.parentNode || (Fl(e) ? e.host : null) || Yl(e)
        }

        function Jl(e) {
          return Nl(e) && "fixed" !== Il(e).position ? e.offsetParent : null
        }

        function Ql(e) {
          const t = Dl(e);
          let n = Jl(e);
          for (; n && zl(n) && "static" === Il(n).position;) n = Jl(n);
          return n && ("html" === Rl(n) || "body" === Rl(n) && "static" === Il(n).position && !Hl(n)) ? t : n || function(e) {
            let t = $l(e);
            for (Fl(t) && (t = t.host); Nl(t) && !["html", "body"].includes(Rl(t));) {
              if (Hl(t)) return t;
              {
                const e = t.parentNode;
                t = Fl(e) ? e.host : e
              }
            }
            return null
          }(e) || t
        }

        function ec(e) {
          if (Nl(e)) return {
            width: e.offsetWidth,
            height: e.offsetHeight
          };
          const t = Gl(e);
          return {
            width: t.width,
            height: t.height
          }
        }

        function tc(e) {
          const t = $l(e);
          return ["html", "body", "#document"].includes(Rl(t)) ? e.ownerDocument.body : Nl(t) && Bl(t) ? t : tc(t)
        }

        function nc(e, t) {
          var n;
          void 0 === t && (t = []);
          const r = tc(e),
            i = r === (null == (n = e.ownerDocument) ? void 0 : n.body),
            o = Dl(r),
            a = i ? [o].concat(o.visualViewport || [], Bl(r) ? r : []) : r,
            s = t.concat(a);
          return i ? s : s.concat(nc(a))
        }

        function rc(e, t, n) {
          return "viewport" === t ? Cl(function(e, t) {
            const n = Dl(e),
              r = Yl(e),
              i = n.visualViewport;
            let o = r.clientWidth,
              a = r.clientHeight,
              s = 0,
              l = 0;
            if (i) {
              o = i.width, a = i.height;
              const e = Ul();
              (e || !e && "fixed" === t) && (s = i.offsetLeft, l = i.offsetTop)
            }
            return {
              width: o,
              height: a,
              x: s,
              y: l
            }
          }(e, n)) : Ll(t) ? function(e, t) {
            const n = Gl(e, !1, "fixed" === t),
              r = n.top + e.clientTop,
              i = n.left + e.clientLeft;
            return {
              top: r,
              left: i,
              x: i,
              y: r,
              right: i + e.clientWidth,
              bottom: r + e.clientHeight,
              width: e.clientWidth,
              height: e.clientHeight
            }
          }(t, n) : Cl(function(e) {
            var t;
            const n = Yl(e),
              r = ql(e),
              i = null == (t = e.ownerDocument) ? void 0 : t.body,
              o = Vl(n.scrollWidth, n.clientWidth, i ? i.scrollWidth : 0, i ? i.clientWidth : 0),
              a = Vl(n.scrollHeight, n.clientHeight, i ? i.scrollHeight : 0, i ? i.clientHeight : 0);
            let s = -r.scrollLeft + Kl(e);
            const l = -r.scrollTop;
            return "rtl" === Il(i || n).direction && (s += Vl(n.clientWidth, i ? i.clientWidth : 0) - o), {
              width: o,
              height: a,
              x: s,
              y: l
            }
          }(Yl(e)))
        }

        function ic(e) {
          const t = nc(e),
            n = ["absolute", "fixed"].includes(Il(e).position) && Nl(e) ? Ql(e) : e;
          return Ll(n) ? t.filter((e => Ll(e) && function(e, t) {
            const n = null == t.getRootNode ? void 0 : t.getRootNode();
            if (e.contains(t)) return !0;
            if (n && Fl(n)) {
              let n = t;
              do {
                if (n && e === n) return !0;
                n = n.parentNode || n.host
              } while (n)
            }
            return !1
          }(e, n) && "body" !== Rl(e))) : []
        }
        const oc = {
          getClippingRect: function(e) {
            let {
              element: t,
              boundary: n,
              rootBoundary: r,
              strategy: i
            } = e;
            const o = [..."clippingAncestors" === n ? ic(t) : [].concat(n), r],
              a = o[0],
              s = o.reduce(((e, n) => {
                const r = rc(t, n, i);
                return e.top = Vl(r.top, e.top), e.right = Wl(r.right, e.right), e.bottom = Wl(r.bottom, e.bottom), e.left = Vl(r.left, e.left), e
              }), rc(t, a, i));
            return {
              width: s.right - s.left,
              height: s.bottom - s.top,
              x: s.left,
              y: s.top
            }
          },
          convertOffsetParentRelativeRectToViewportRelativeRect: function(e) {
            let {
              rect: t,
              offsetParent: n,
              strategy: r
            } = e;
            const i = Nl(n),
              o = Yl(n);
            if (n === o) return t;
            let a = {
              scrollLeft: 0,
              scrollTop: 0
            };
            const s = {
              x: 0,
              y: 0
            };
            if ((i || !i && "fixed" !== r) && (("body" !== Rl(n) || Bl(o)) && (a = ql(n)), Nl(n))) {
              const e = Gl(n, !0);
              s.x = e.x + n.clientLeft, s.y = e.y + n.clientTop
            }
            return {
              ...t,
              x: t.x - a.scrollLeft + s.x,
              y: t.y - a.scrollTop + s.y
            }
          },
          isElement: Ll,
          getDimensions: ec,
          getOffsetParent: Ql,
          getDocumentElement: Yl,
          getElementRects: e => {
            let {
              reference: t,
              floating: n,
              strategy: r
            } = e;
            return {
              reference: Zl(t, Ql(n), r),
              floating: {
                ...ec(n),
                x: 0,
                y: 0
              }
            }
          },
          getClientRects: e => Array.from(e.getClientRects()),
          isRTL: e => "rtl" === Il(e).direction
        };

        function ac(e, t, n, r) {
          void 0 === r && (r = {});
          const {
            ancestorScroll: i = !0,
            ancestorResize: o = !0,
            elementResize: a = !0,
            animationFrame: s = !1
          } = r, l = i && !s, c = o && !s, u = l || c ? [...Ll(e) ? nc(e) : [], ...nc(t)] : [];
          u.forEach((e => {
            l && e.addEventListener("scroll", n, {
              passive: !0
            }), c && e.addEventListener("resize", n)
          }));
          let h, p = null;
          if (a) {
            let r = !0;
            p = new ResizeObserver((() => {
              r || n(), r = !1
            })), Ll(e) && !s && p.observe(e), p.observe(t)
          }
          let d = s ? Gl(e) : null;
          return s && function t() {
            const r = Gl(e);
            !d || r.x === d.x && r.y === d.y && r.width === d.width && r.height === d.height || n();
            d = r, h = requestAnimationFrame(t)
          }(), n(), () => {
            var e;
            u.forEach((e => {
              l && e.removeEventListener("scroll", n), c && e.removeEventListener("resize", n)
            })), null == (e = p) || e.disconnect(), p = null, s && cancelAnimationFrame(h)
          }
        }
        const sc = (e, t, n) => (async (e, t, n) => {
          const {
            placement: r = "bottom",
            strategy: i = "absolute",
            middleware: o = [],
            platform: a
          } = n, s = await (null == a.isRTL ? void 0 : a.isRTL(t));
          let l = await a.getElementRects({
              reference: e,
              floating: t,
              strategy: i
            }),
            {
              x: c,
              y: u
            } = xl(l, r, s),
            h = r,
            p = {},
            d = 0;
          for (let n = 0; n < o.length; n++) {
            const {
              name: f,
              fn: g
            } = o[n], {
              x: m,
              y: v,
              data: _,
              reset: b
            } = await g({
              x: c,
              y: u,
              initialPlacement: r,
              placement: h,
              strategy: i,
              middlewareData: p,
              rects: l,
              platform: a,
              elements: {
                reference: e,
                floating: t
              }
            });
            c = null != m ? m : c, u = null != v ? v : u, p = {
              ...p,
              [f]: {
                ...p[f],
                ..._
              }
            }, b && d <= 50 && (d++, "object" == typeof b && (b.placement && (h = b.placement), b.rects && (l = !0 === b.rects ? await a.getElementRects({
              reference: e,
              floating: t,
              strategy: i
            }) : b.rects), ({
              x: c,
              y: u
            } = xl(l, h, s))), n = -1)
          }
          return {
            x: c,
            y: u,
            placement: h,
            strategy: i,
            middlewareData: p
          }
        })(e, t, {
          platform: oc,
          ...n
        });
        var lc = "undefined" != typeof document ? $e : Ze;

        function cc(e, t) {
          if (e === t) return !0;
          if (typeof e != typeof t) return !1;
          if ("function" == typeof e && e.toString() === t.toString()) return !0;
          let n, r, i;
          if (e && t && "object" == typeof e) {
            if (Array.isArray(e)) {
              if (n = e.length, n != t.length) return !1;
              for (r = n; 0 != r--;)
                if (!cc(e[r], t[r])) return !1;
              return !0
            }
            if (i = Object.keys(e), n = i.length, n !== Object.keys(t).length) return !1;
            for (r = n; 0 != r--;)
              if (!Object.prototype.hasOwnProperty.call(t, i[r])) return !1;
            for (r = n; 0 != r--;) {
              const n = i[r];
              if (("_owner" !== n || !e.$$typeof) && !cc(e[n], t[n])) return !1
            }
            return !0
          }
          return e != e && t != t
        }

        function uc(e) {
          let {
            middleware: t,
            placement: n = "bottom",
            strategy: r = "absolute",
            whileElementsMounted: i
          } = void 0 === e ? {} : e;
          const [o, a] = qe({
            x: null,
            y: null,
            strategy: r,
            placement: n,
            middlewareData: {}
          }), [s, l] = qe(t);
          cc(null == s ? void 0 : s.map((e => {
            let {
              name: t,
              options: n
            } = e;
            return {
              name: t,
              options: n
            }
          })), null == t ? void 0 : t.map((e => {
            let {
              name: t,
              options: n
            } = e;
            return {
              name: t,
              options: n
            }
          }))) || l(t);
          const c = Je(null),
            u = Je(null),
            h = Je(null),
            p = Je(o),
            d = function(e) {
              const t = Je(e);
              return lc((() => {
                t.current = e
              })), t
            }(i),
            f = tt((() => {
              c.current && u.current && sc(c.current, u.current, {
                middleware: s,
                placement: n,
                strategy: r
              }).then((e => {
                g.current && !cc(p.current, e) && (p.current = e, Zt((() => {
                  a(e)
                })))
              }))
            }), [s, n, r]);
          lc((() => {
            g.current && f()
          }), [f]);
          const g = Je(!1);
          lc((() => (g.current = !0, () => {
            g.current = !1
          })), []);
          const m = tt((() => {
              if ("function" == typeof h.current && (h.current(), h.current = null), c.current && u.current)
                if (d.current) {
                  const e = d.current(c.current, u.current, f);
                  h.current = e
                } else f()
            }), [f, d]),
            v = tt((e => {
              c.current = e, m()
            }), [m]),
            _ = tt((e => {
              u.current = e, m()
            }), [m]),
            b = et((() => ({
              reference: c,
              floating: u
            })), []);
          return et((() => ({
            ...o,
            update: f,
            refs: b,
            reference: v,
            floating: _
          })), [o, f, b, v, _])
        }
        const hc = e => {
          const {
            element: t,
            padding: n
          } = e;
          return {
            name: "arrow",
            options: e,
            fn(e) {
              return r = t, Object.prototype.hasOwnProperty.call(r, "current") ? null != t.current ? Ol({
                element: t.current,
                padding: n
              }).fn(e) : {} : t ? Ol({
                element: t,
                padding: n
              }).fn(e) : {};
              var r
            }
          }
        };
        var pc = "undefined" != typeof document ? $e : Ze;
        const dc = je(null),
          fc = je(null),
          gc = () => nt(fc);

        function mc(e) {
          var t;
          return null != (t = null == e ? void 0 : e.ownerDocument) ? t : document
        }

        function vc(e) {
          return !!e && e instanceof
          function(e) {
            var t;
            return null != (t = mc(e).defaultView) ? t : window
          }(e).Element
        }
        const _c = Qt["useInsertionEffect".toString()];

        function bc(e) {
          let {
            open: t = !1,
            onOpenChange: n,
            whileElementsMounted: r,
            placement: i,
            middleware: o,
            strategy: a,
            nodeId: s
          } = void 0 === e ? {} : e;
          const [l, c] = qe(null), u = gc(), h = Je(null), p = Je({}), d = qe((() => function() {
            const e = new Map;
            return {
              emit(t, n) {
                var r;
                null == (r = e.get(t)) || r.forEach((e => e(n)))
              },
              on(t, n) {
                e.set(t, [...e.get(t) || [], n])
              },
              off(t, n) {
                e.set(t, (e.get(t) || []).filter((e => e !== n)))
              }
            }
          }()))[0], f = uc({
            placement: i,
            middleware: o,
            strategy: a,
            whileElementsMounted: r
          }), g = function(e) {
            const t = Je((() => {}));
            return _c ? _c((() => {
              t.current = e
            })) : t.current = e, tt((function() {
              for (var e = arguments.length, n = new Array(e), r = 0; r < e; r++) n[r] = arguments[r];
              return null == t.current ? void 0 : t.current(...n)
            }), [])
          }(n), m = et((() => ({
            ...f.refs,
            domReference: h
          })), [f.refs]), v = et((() => ({
            ...f,
            refs: m,
            dataRef: p,
            nodeId: s,
            events: d,
            open: t,
            onOpenChange: g,
            _: {
              domReference: l
            }
          })), [f, s, d, t, g, m, l]);
          pc((() => {
            const e = null == u ? void 0 : u.nodesRef.current.find((e => e.id === s));
            e && (e.context = v)
          }));
          const {
            reference: _
          } = f, b = tt((e => {
            (vc(e) || null === e) && (v.refs.domReference.current = e, c(e)), _(e)
          }), [_, v.refs]);
          return et((() => ({
            ...f,
            context: v,
            refs: m,
            reference: b
          })), [f, m, v, b])
        }

        function yc(e, t, n) {
          const r = new Map;
          return {
            ..."floating" === n && {
              tabIndex: -1
            },
            ...e,
            ...t.map((e => e ? e[n] : null)).concat(e).reduce(((e, t) => t ? (Object.entries(t).forEach((t => {
              let [n, i] = t;
              var o;
              0 === n.indexOf("on") ? (r.has(n) || r.set(n, []), "function" == typeof i && (null == (o = r.get(n)) || o.push(i), e[n] = function() {
                for (var e, t = arguments.length, i = new Array(t), o = 0; o < t; o++) i[o] = arguments[o];
                null == (e = r.get(n)) || e.forEach((e => e(...i)))
              })) : e[n] = i
            })), e) : e), {})
          }
        }
        const wc = function(e) {
          return void 0 === e && (e = []), {
            getReferenceProps: t => yc(t, e, "reference"),
            getFloatingProps: t => yc(t, e, "floating"),
            getItemProps: t => yc(t, e, "item")
          }
        };

        function xc(e) {
          const t = Je(e);
          return pc((() => {
            t.current = e
          })), t
        }

        function kc(e, t, n) {
          return n && "mouse" !== n ? 0 : "number" == typeof e ? e : null == e ? void 0 : e[t]
        }
        const Cc = function(e, t) {
          let {
            enabled: n = !0,
            delay: r = 0,
            handleClose: i = null,
            mouseOnly: o = !1,
            restMs: a = 0,
            move: s = !0
          } = void 0 === t ? {} : t;
          const {
            open: l,
            onOpenChange: c,
            dataRef: u,
            events: h,
            refs: p,
            _: d
          } = e, f = gc(), g = null != (m = null == (v = nt(dc)) ? void 0 : v.id) ? m : null;
          var m, v;
          const _ = xc(i),
            b = xc(r),
            y = function(e) {
              const t = Je();
              return pc((() => {
                t.current = e
              }), [e]), t.current
            }(l),
            w = Je(),
            x = Je(),
            k = Je(),
            C = Je(),
            S = Je(!0),
            E = Je(!1),
            T = tt((() => {
              var e;
              const t = null == (e = u.current.openEvent) ? void 0 : e.type;
              return (null == t ? void 0 : t.includes("mouse")) && "mousedown" !== t
            }), [u]);
          Ze((() => {
            if (n) return h.on("dismiss", e), () => {
              h.off("dismiss", e)
            };

            function e() {
              clearTimeout(x.current), clearTimeout(C.current), S.current = !0
            }
          }), [n, h, p]), Ze((() => {
            if (!n || !_.current) return;

            function e() {
              T() && c(!1)
            }
            const t = mc(p.floating.current).documentElement;
            return t.addEventListener("mouseleave", e), () => {
              t.removeEventListener("mouseleave", e)
            }
          }), [p, c, n, _, u, T]);
          const O = tt((function(e) {
              void 0 === e && (e = !0);
              const t = kc(b.current, "close", w.current);
              t && !k.current ? (clearTimeout(x.current), x.current = setTimeout((() => c(!1)), t)) : e && (clearTimeout(x.current), c(!1))
            }), [b, c]),
            A = tt((() => {
              k.current && (mc(p.floating.current).removeEventListener("pointermove", k.current), k.current = void 0)
            }), [p]),
            P = tt((() => {
              mc(p.floating.current).body.style.pointerEvents = "", E.current = !1
            }), [p]);
          if (Ze((() => {
              if (!n) return;

              function t() {
                return !!u.current.openEvent && ["click", "mousedown"].includes(u.current.openEvent.type)
              }

              function r(e) {
                if (clearTimeout(x.current), S.current = !1, o && "mouse" !== w.current || a > 0 && 0 === kc(b.current, "open")) return;
                u.current.openEvent = e;
                const t = kc(b.current, "open", w.current);
                t ? x.current = setTimeout((() => {
                  c(!0)
                }), t) : c(!0)
              }

              function i(n) {
                if (t()) return;
                const r = mc(p.floating.current);
                if (clearTimeout(C.current), _.current) return clearTimeout(x.current), k.current && r.removeEventListener("pointermove", k.current), k.current = _.current({
                  ...e,
                  tree: f,
                  x: n.clientX,
                  y: n.clientY,
                  onClose() {
                    P(), A(), O()
                  }
                }), void r.addEventListener("pointermove", k.current);
                O()
              }

              function h(n) {
                t() || null == _.current || _.current({
                  ...e,
                  tree: f,
                  x: n.clientX,
                  y: n.clientY,
                  leave: !0,
                  onClose() {
                    P(), A(), O()
                  }
                })(n)
              }
              const d = p.floating.current,
                g = p.domReference.current;
              return vc(g) ? (l && g.addEventListener("mouseleave", h), null == d || d.addEventListener("mouseleave", h), s && g.addEventListener("mousemove", r, {
                once: !0
              }), g.addEventListener("mouseenter", r), g.addEventListener("mouseleave", i), () => {
                l && g.removeEventListener("mouseleave", h), null == d || d.removeEventListener("mouseleave", h), s && g.removeEventListener("mousemove", r), g.removeEventListener("mouseenter", r), g.removeEventListener("mouseleave", i)
              }) : void 0
            }), [d.domReference, n, e, o, a, s, O, A, P, c, l, f, p, b, _, u]), pc((() => {
              if (n && l && _.current && _.current.__options.blockPointerEvents && T()) {
                mc(p.floating.current).body.style.pointerEvents = "none", E.current = !0;
                const n = p.domReference.current,
                  r = p.floating.current;
                if (vc(n) && r) {
                  var e, t;
                  const i = null == f || null == (e = f.nodesRef.current.find((e => e.id === g))) || null == (t = e.context) ? void 0 : t.refs.floating.current;
                  return i && (i.style.pointerEvents = ""), n.style.pointerEvents = "auto", r.style.pointerEvents = "auto", () => {
                    n.style.pointerEvents = "", r.style.pointerEvents = ""
                  }
                }
              }
            }), [n, l, g, p, f, _, u, T]), pc((() => {
              y && !l && (w.current = void 0, A(), P())
            })), Ze((() => () => {
              A(), clearTimeout(x.current), clearTimeout(C.current), E.current && P()
            }), [n, A, P]), !n) return {};

          function M(e) {
            w.current = e.pointerType
          }
          return {
            reference: {
              onPointerDown: M,
              onPointerEnter: M,
              onMouseMove() {
                l || 0 === a || (clearTimeout(C.current), C.current = setTimeout((() => {
                  S.current || c(!0)
                }), a))
              }
            },
            floating: {
              onMouseEnter() {
                clearTimeout(x.current)
              },
              onMouseLeave() {
                O(!1)
              }
            }
          }
        };
        var Sc = ["children", "reference", "className", "placement"],
          Ec = e => {
            var {
              children: t = null,
              reference: n = null,
              className: r = "",
              placement: i = "top"
            } = e, o = g(e, Sc), [a, s] = qe(!1), l = Je(null), {
              context: c,
              x: u,
              y: p,
              strategy: d,
              floating: f,
              reference: m,
              placement: v,
              middlewareData: {
                arrow: {
                  x: _,
                  y: b
                } = {}
              }
            } = bc({
              middleware: [Al(10), Pl({
                padding: 8
              }), hc({
                element: l
              })],
              open: a,
              placement: i,
              onOpenChange: s,
              whileElementsMounted: ac
            }), {
              getReferenceProps: y,
              getFloatingProps: w
            } = wc([Cc(c)]), [x, k] = qe(!1);
            al((() => {
              k(!0)
            }));
            var C = {
              top: "bottom",
              bottom: "top"
            } [(v || "").split("-")[0]];
            return x ? gl(de, {
              children: [gl("span", h(h(h({
                ref: m
              }, y()), {}, {
                className: ul("pk-flex pk-justify-center pk-items-center pk-leading-none pk-inline-block", r)
              }, o), {}, {
                children: n || gl(dl, {
                  className: "pk-cursor-pointer"
                })
              })), t && a && gl("div", h(h({
                className: "relative pk-max-w-[50vw] pk-py-2 pk-px-3 pk-bg-white pk-rounded-md pk-shadow-[0px_4px_18px_rgb(0_0_0_/_10%)] pk-transform-[matrix(-1,0,0,1,0,0)] pk-z-[9999] pk-break-words md:pk-max-w-[33vw] !pk-text-[14px]",
                ref: f,
                style: {
                  position: d,
                  top: null != p ? p : 0,
                  left: null != u ? u : 0,
                  hyphens: "auto"
                }
              }, w()), {}, {
                children: [gl(vl, {
                  children: t
                }), gl("div", {
                  className: "pk-absolute pk-border-[5px] pk-border-transparent pk-border-t-white pk-filter-[drop-shadow(0px_4px_18px_rgb(0_0_0_/_10%))]",
                  style: {
                    left: _,
                    top: b,
                    [C]: "-10px"
                  },
                  ref: l
                })]
              }))]
            }) : null
          },
          Tc = {
            large_tooltip: "TooltipIconLarge-module_large_tooltip__gzcyR",
            largeTooltip: "TooltipIconLarge-module_large_tooltip__gzcyR",
            large_tooltip_img: "TooltipIconLarge-module_large_tooltip_img__rpH1F",
            largeTooltipImg: "TooltipIconLarge-module_large_tooltip_img__rpH1F"
          };
        c(
        ".TooltipIconLarge-module_large_tooltip__gzcyR{align-items:center;background:#fff;border-radius:6px;box-shadow:0 4px 36px 0 rgba(51,51,51,.08)!important;box-sizing:border-box;display:flex;flex-direction:column;flex-wrap:wrap;gap:8px!important;padding:8px!important;width:136px}.TooltipIconLarge-module_large_tooltip_img__rpH1F{border-radius:3px;height:120px!important;width:120px!important}@media (max-width:959px){.TooltipIconLarge-module_large_tooltip__gzcyR{width:104px!important}.TooltipIconLarge-module_large_tooltip_img__rpH1F{border-radius:3px;height:88px!important;width:88px!important}}");
        var Oc = ["children", "reference", "className", "placement", "checked"];
        window.touchStartTime = null, window.touchEndTime = null;
        var Ac, Pc, Mc, Dc, Ic = e => {
            var {
              children: t = null,
              reference: n = null,
              className: r = "",
              placement: i = "top",
              checked: o = null
            } = e, a = g(e, Oc), [s, l] = qe(!1), c = Je(null), {
              context: u,
              x: p,
              y: d,
              strategy: f,
              floating: m,
              reference: v,
              placement: _,
              middlewareData: {
                arrow: {
                  x: b,
                  y: y
                } = {}
              }
            } = bc({
              middleware: [Al(10), Pl({
                padding: 8
              }), hc({
                element: c
              })],
              open: s,
              placement: i,
              onOpenChange: l,
              whileElementsMounted: ac
            }), {
              getReferenceProps: w,
              getFloatingProps: x
            } = wc([Cc(u)]), [k, C] = qe(!1);
            al((() => {
              No() || C(!0)
            }));
            var S = {
              top: "bottom",
              bottom: "top"
            } [(_ || "").split("-")[0]];
            return gl(de, k ? {
              children: [gl("span", h(h(h({
                ref: v
              }, w()), {}, {
                className: ul("pk-flex pk-justify-center pk-items-center pk-leading-none pk-inline-block", r)
              }, a), {}, {
                children: n || gl(dl, {
                  className: "pk-cursor-pointer"
                })
              })), t && s && gl("div", h(h({
                className: ul(
                  "relative pk-max-w-[50vw] pk-py-2 pk-px-3 pk-bg-white pk-rounded-md pk-shadow-[0px_4px_18px_rgb(0_0_0_/_10%)] pk-transform-[matrix(-1,0,0,1,0,0)] pk-z-[9999] pk-break-words md:pk-max-w-[33vw] !pk-text-[14px]", Tc
                  .large_tooltip),
                ref: m,
                style: {
                  position: f,
                  top: null != d ? d : 0,
                  left: null != p ? p : 0,
                  hyphens: "auto"
                }
              }, x()), {}, {
                children: [gl(vl, {
                  style: {
                    textAlign: "center",
                    wordBreak: "break-all"
                  },
                  children: t
                }), gl("div", {
                  className: Tc.large_tooltip_img,
                  children: n || gl(dl, {
                    className: "pk-cursor-pointer"
                  })
                }), gl("div", {
                  className: "pk-absolute pk-border-[5px] pk-border-transparent pk-border-t-white pk-filter-[drop-shadow(0px_4px_18px_rgb(0_0_0_/_10%))]",
                  style: {
                    left: b,
                    top: y,
                    [S]: "-10px"
                  },
                  ref: c
                })]
              }))]
            } : {
              children: [gl("span", h(h(h({
                ref: v
              }, w()), {}, {
                className: ul("pk-flex pk-justify-center pk-items-center pk-leading-none pk-inline-block", r, Tc.mobile_switch)
              }, a), {}, {
                children: n || gl(dl, {
                  className: "pk-cursor-pointer"
                })
              })), t && s && o && gl("div", h(h({
                className: ul(
                  "relative pk-max-w-[50vw] pk-py-2 pk-px-3 pk-bg-white pk-rounded-md pk-shadow-[0px_4px_18px_rgb(0_0_0_/_10%)] pk-transform-[matrix(-1,0,0,1,0,0)] pk-z-[9999] pk-break-words md:pk-max-w-[33vw] !pk-text-[14px]", Tc
                  .large_tooltip),
                ref: m,
                style: {
                  position: f,
                  top: null != d ? d : 0,
                  left: null != p ? p : 0,
                  hyphens: "auto"
                }
              }, x()), {}, {
                children: [gl(vl, {
                  style: {
                    textAlign: "center",
                    wordBreak: "break-all"
                  },
                  children: t
                }), gl("div", {
                  className: Tc.large_tooltip_img,
                  children: n || gl(dl, {
                    className: "pk-cursor-pointer"
                  })
                }), gl("div", {
                  className: "pk-absolute pk-border-[5px] pk-border-transparent pk-border-t-white pk-filter-[drop-shadow(0px_4px_18px_rgb(0_0_0_/_10%))]",
                  style: {
                    left: b,
                    top: y,
                    [S]: "-10px"
                  },
                  ref: c
                })]
              }))]
            })
          },
          Rc = window.SHOP_PARAMS.finance_symbol,
          jc = (null === (Ac = window) || void 0 === Ac || null === (Pc = Ac.SHOPLAZZA) || void 0 === Pc || null === (Mc = Pc.market) || void 0 === Mc || null === (Dc = Mc.market_price_setting) || void 0 === Dc ? void 0 : Dc.actual_rate) || 1,
          Nc = 1e5,
          Lc = mt((function(e, t) {
            var n, {
                optionData: r,
                control: i,
                name: o,
                children: a,
                help: s,
                label: l,
                tag: c = "div",
                alwaysShowError: u = !1
              } = e,
              {
                errors: h,
                isSubmitted: p
              } = Da({
                name: o,
                control: i
              }),
              d = (null == s ? void 0 : s.value) && "below" === (null == s ? void 0 : s.type),
              f = null == h || null === (n = h[o]) || void 0 === n ? void 0 : n.message,
              g = () => {
                var e;
                return "boolean" == typeof u ? u : "object" == typeof u ? (null == u ? void 0 : u[null == h || null === (e = h[o]) || void 0 === e ? void 0 : e.type]) || !1 : void 0
              },
              m = () => {
                var t, n = e.control._formValues;
                if (null === (t = n[r.fid]) || void 0 === t || !t.length) return 0;
                if (Number(null == r ? void 0 : r.price)) return Number(r.price) ? (Number(r.price) * Nc * jc / Nc).toFixed(2) : 0;
                var i, o = 0;
                ["swatch", "dropdown", "button", "checkbox"].includes(null == r ? void 0 : r.type) && (null === (i = r.options) || void 0 === i || i.forEach((e => {
                  ("dropdown" === r.type ? n[r.fid] === e.label : n[r.fid].includes(e.label)) && (o += Number(e.price) || 0)
                })));
                return o ? (o * Nc * jc / Nc).toFixed(2) : 0
              };
            return gl(c, {
              ref: t,
              children: [gl("div", {
                className: ul("pk-break-words pk-text-sm md:pk-text-base", {
                  "pk-mb-3": l && "swatch" !== r.type,
                  "pk-mb-2.5": l && "swatch" === r.type
                }),
                style: {
                  hyphens: "auto",
                  wordBreak: "break-word"
                },
                children: ((e, t) => gl("div", {
                  className: ul("pk-flex items-center relative", No() ? "!pk-text-[14px]" : "!pk-text-[15px]"),
                  children: [gl("div", {
                    className: "pk-font-medium appparkeet_form_item_title",
                    children: e
                  }), (null == t ? void 0 : t.value) && "tooltip" === t.type && gl(Ec, {
                    className: "pk-mx-1 pk-text-[14px]",
                    children: t.value
                  }), !!m() && gl("div", {
                    className: "pk-ml-1.5 pk-flex pk-items-center pk-font-semibold",
                    children: [gl("span", {
                      children: "("
                    }), gl("span", {
                      children: "+"
                    }), gl("span", {
                      className: "money",
                      children: "".concat(Rc).concat(m())
                    }), gl("span", {
                      children: ") "
                    })]
                  }), gl("span", {
                    children: ":"
                  })]
                }))(l, s)
              }), a, gl(vl, {
                tagName: "p",
                style: {
                  hyphens: "auto"
                },
                className: ul("pk-text-[#DB393A] pk-text-xs md:pk-text-sm", {
                  "pk-mt-2": (p || g()) && f
                }),
                children: (p || g()) && f
              }, f), gl(vl, {
                tagName: "p",
                style: {
                  hyphens: "auto"
                },
                className: ul("pk-text-[#7A7A7A] pk-text-xs md:pk-text-sm pk-break-words", {
                  "pk-mt-2": d
                }),
                children: d && s.value
              })]
            })
          })),
          Fc = dt(Lc, ((e, t) => e.children === t.children)),
          Bc = e => {
            var {
              value: t,
              onChange: n,
              multiple: r
            } = e, {
              max: i = Number.MAX_SAFE_INTEGER
            } = r || {}, o = Boolean(r && i > 1), a = function(e) {
              const t = Je(e);
              t.current = et((() => e), [e]);
              const n = Je();
              return n.current || (n.current = function(...e) {
                return t.current.apply(this, e)
              }), n.current
            }((e => {
              var {
                value: r,
                checked: a
              } = e, s = {
                true_true: () => [...t, r],
                true_false: () => [r],
                false_true: () => t.filter((e => e !== r)),
                false_false: () => []
              } ["".concat(Boolean(a), "_").concat(o)]();
              if (!(o && s.length > i)) return null == n || n(s), s
            }));
            return {
              toggleOption: a
            }
          };
        var zc = new class {
            constructor() {
              this.bus = {}
            }
            $off(e, t) {
              var n;
              if (this.bus[e]) {
                var r = null === (n = this.bus[e]) || void 0 === n ? void 0 : n.findIndex((e => e === t));
                r >= 0 && this.bus[e].splice(r, 1)
              }
            }
            $on(e, t) {
              var n = this.bus[e];
              this.bus[e] = n ? [...n, t] : [t]
            }
            $emit(e) {
              for (var t, n = arguments.length, r = new Array(n > 1 ? n - 1 : 0), i = 1; i < n; i++) r[i - 1] = arguments[i];
              null === (t = this.bus[e]) || void 0 === t || t.forEach((e => {
                e(...r)
              }))
            }
          },
          Hc = je(),
          Uc = (e, t) => {
            var n, r, i, o = "";
            2 === (null === (n = e.preview_setting) || void 0 === n ? void 0 : n.type) ? o = null === (r = e.preview_setting.data.filter((e => e.variant_id === t))[0]) || void 0 === r ? void 0 : r.bg_image_url : o = null === (i = e
              .preview_setting.data[0]) || void 0 === i ? void 0 : i.bg_image_url;
            return o
          },
          Wc = je({}),
          Vc = e => {
            var {
              size: t,
              optionData: n,
              control: r,
              children: i,
              options: o,
              defaultValue: a = [],
              fieldName: s,
              propertyName: l,
              name: c,
              required: u,
              multiple: p,
              help: d,
              visible: f
            } = e, g = et((() => o || we(i).map((e => e.props)) || []), [i, o]), {
              formatMessage: m
            } = zi(), {
              min: v = 0
            } = p || {}, {
              field: {
                onChange: _,
                onBlur: b,
                value: y,
                ref: w
              }
            } = Fa({
              control: r,
              name: s,
              rules: {
                validate: {
                  min: e => !p || !(null != e && e.length) || (null == e ? void 0 : e.length) >= v || hl(v),
                  required: e => !u || (null == e ? void 0 : e.length) >= 1 || m({
                    id: "required_tip"
                  })
                }
              },
              defaultValue: a
            }), {
              toggleOption: x
            } = Bc({
              value: y,
              multiple: p,
              onChange: _
            }), k = y.join(",");
            return gl(Wc.Provider, {
              value: et((() => ({
                toggleOption: x
              })), [x]),
              children: f ? gl(Lc, {
                optionData: n,
                name: s,
                label: c,
                help: d,
                control: r,
                children: [gl("div", {
                  onBlur: b,
                  className: "pk-flex pk-flex-wrap pk--mt-1.5 pk--ml-2 pk-outline-none",
                  ref: w,
                  tabIndex: "0",
                  children: g.map((n => {
                    var {
                      label: r
                    } = n, i = null == y ? void 0 : y.includes(r);
                    return gl(Xc, h(h({}, n), {}, {
                      checked: i,
                      size: t,
                      optionItem: e
                    }), r)
                  }))
                }), gl("input", {
                  type: "hidden",
                  name: y.length > 0 ? "properties[".concat(l, "]") : "",
                  value: k || ""
                })]
              }) : null
            })
          },
          Xc = dt((function(e) {
            var {
              type: t,
              value: n,
              label: r,
              checked: i = !1,
              size: o,
              optionItem: a
            } = e, {
              toggleOption: s
            } = nt(Wc), l = nt(Hc);
            return "52px" === o && "img" === t ? gl(Ic, {
              checked: i,
              placement: "top",
              className: ul("pk-flex-none pk-relative pk-block pk-cursor-pointer pk-rounded-[3px] pk-mt-3 pk-ml-3 pk-overflow-hidden", {
                "pk-ring-2 pk-ring-offset-2 pk-ring-[#333]": i,
                "pk-w-11 pk-h-11": "52px" === o || !o,
                "pk-w-18 pk-h-18": "80px" === o,
                "pk-w-23 pk-h-23": "100px" === o
              }),
              onClick: () => {
                var e, t = s({
                  checked: !i,
                  value: r
                });
                if (null != a && null !== (e = a.preview_setting) && void 0 !== e && e.preview_open) {
                  var n, o, c, u, h = Uc(a, l);
                  zc.$emit(F, {
                    bg_image_url: h,
                    checked_fids: null == a || null === (n = a.options) || void 0 === n || null === (o = n.filter((e => t.includes(e.label)))) || void 0 === o ? void 0 : o.map((e => e.fid)),
                    un_checked_fids: null == a || null === (c = a.options) || void 0 === c || null === (u = c.filter((e => !t.includes(e.label)))) || void 0 === u ? void 0 : u.map((e => e.fid))
                  })
                }
              },
              style: "color" === t && {
                backgroundColor: n
              },
              reference: "img" === t ? gl("object", {
                data: n,
                className: "pk-w-full pk-h-full pk-object-cover pk-object-center pk-rounded-[3px]",
                children: gl("img", {
                  src: window.SHOP_PARAMS.default_img,
                  alt: r,
                  className: "pk-w-full pk-h-full pk-object-cover pk-object-center pk-rounded-[3px]"
                })
              }) : gl(de, {}),
              children: r && r
            }) : gl(Ec, {
              placement: "top",
              className: ul("pk-flex-none pk-relative pk-block pk-cursor-pointer pk-rounded-[3px] pk-mt-3 pk-ml-3 pk-overflow-hidden", {
                "pk-ring-2 pk-ring-offset-2 pk-ring-[#333]": i,
                "pk-w-11 pk-h-11": "52px" === o || !o,
                "pk-w-18 pk-h-18": "80px" === o,
                "pk-w-23 pk-h-23": "100px" === o
              }),
              onClick: () => {
                var e, t = s({
                  checked: !i,
                  value: r
                });
                if (null != a && null !== (e = a.preview_setting) && void 0 !== e && e.preview_open) {
                  var n, o, c, u, h = Uc(a, l);
                  zc.$emit(F, {
                    bg_image_url: h,
                    checked_fids: null == a || null === (n = a.options) || void 0 === n || null === (o = n.filter((e => t.includes(e.label)))) || void 0 === o ? void 0 : o.map((e => e.fid)),
                    un_checked_fids: null == a || null === (c = a.options) || void 0 === c || null === (u = c.filter((e => !t.includes(e.label)))) || void 0 === u ? void 0 : u.map((e => e.fid))
                  })
                }
              },
              style: "color" === t && {
                backgroundColor: n
              },
              reference: "img" === t ? gl("object", {
                data: n,
                className: "pk-w-full pk-h-full pk-object-cover pk-object-center",
                children: gl("img", {
                  src: window.SHOP_PARAMS.default_img,
                  alt: r,
                  className: "pk-w-full pk-h-full pk-object-cover pk-object-center"
                })
              }) : gl(de, {}),
              children: r && r
            })
          }), ((e, t) => e.checked === t.checked && e.label === t.label && e.value === t.value && e.type === t.type && e.selected_value === t.selected_value));
        Vc.Option = () => null;
        var Gc, Yc = Vc,
          qc = "Dropdown-module_dropdown-label__8sSmb";

        function Kc() {
          return Kc = Object.assign ? Object.assign.bind() : function(e) {
            for (var t = 1; t < arguments.length; t++) {
              var n = arguments[t];
              for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r])
            }
            return e
          }, Kc.apply(this, arguments)
        }
        c(".Dropdown-module_dropdown-label__8sSmb[\\:has\\(select\\:focus\\)]{border:1px solid #333!important}.Dropdown-module_dropdown-label__8sSmb:has(select:focus){border:1px solid #333!important}");
        var Zc = e => ue("svg", Kc({
            width: 16,
            height: 16,
            fill: "none",
            xmlns: "http://www.w3.org/2000/svg"
          }, e), Gc || (Gc = ue("path", {
            fillRule: "evenodd",
            clipRule: "evenodd",
            d: "M3.2 6.4a.8.8 0 0 1 1.366-.566L8 9.27l3.434-3.434a.8.8 0 1 1 1.131 1.13l-4 4a.8.8 0 0 1-1.13 0l-4-4A.798.798 0 0 1 3.2 6.4Z",
            fill: "#6D7175"
          }))),
          $c = function(e) {
            var {
              optionData: t,
              control: n,
              name: r,
              fieldName: i,
              propertyName: o,
              options: a,
              children: s,
              placeholder: l = "",
              defaultValue: c = "",
              required: u,
              help: h,
              visible: p
            } = e, d = et((() => a || we(s).map((e => e.props)) || []), [s, a]), {
              formatMessage: f
            } = zi(), {
              field: {
                onChange: g,
                onBlur: m,
                value: v,
                ref: _
              },
              fieldState: {
                error: b
              },
              formState: {
                isSubmitted: y
              }
            } = Fa({
              control: n,
              name: i,
              rules: {
                required: {
                  value: !!u,
                  message: f({
                    id: "required_tip"
                  })
                }
              },
              defaultValue: c
            });
            return gl(de, {
              children: p ? gl(Lc, {
                optionData: t,
                name: i,
                label: r,
                help: h,
                tag: de,
                control: n,
                children: gl("label", {
                  className: ul("pk-block pk-border pk-border-[#D1D1D1] pk-rounded pk-overflow-hidden pk-relative pk-block pk-bg-white pk-leading-[0px] pk-outline-none pk-my-0", y && null != b && b.message ? "pk-border-[#DB393A]" :
                    "pk-border-[#D1D1D1]", qc),
                  tabIndex: "1",
                  ref: _,
                  children: [gl("div", {
                    className: "pk-absolute pk-top-0 pk-left-0 pk-w-full pk-h-full pk-flex pk-items-center pk-cursor-pointer pk-pointer-events-none",
                    children: [l && !v && gl(vl, {
                      tagName: "span",
                      className: "pk-flex-1 pk-truncate pk-ml-3 pk-select-none pk-text-[#93989D] pk-text-sm pk-leading-5",
                      children: l
                    }), gl(Zc, {
                      className: "pk-ml-auto pk-mr-4 pk-cursor-pointer"
                    })]
                  }), gl("input", {
                    type: "hidden",
                    name: v ? "properties[".concat(o, "]") : "",
                    value: v
                  }), gl("select", {
                    name: Io,
                    onBlur: m,
                    className: ul("pk-w-full pk-py-3.5 pk-pl-4 pk-pr-10.5 pk-cursor-pointer pk-appearance-none pk-text-sm pk-leading-5 pk-outline-none pk-truncate pk-bg-white", {
                      "pk-opacity-0": !v
                    }),
                    value: v,
                    onInput: e => {
                      var t = d.reduce(((t, n) => (n.label === e.target.value && (t = n.redirect_url), t)), "");
                      t ? location.href = t : g(e.target.value)
                    },
                    children: [gl(vl, {
                      tagName: "option",
                      value: "",
                      children: "-No selection-"
                    }), d.map((e => gl(vl, {
                      tagName: "option",
                      value: e.label,
                      children: e.label
                    }, e.label)))]
                  })]
                })
              }) : null
            })
          };
        $c.Option = () => null;
        var Jc, Qc, eu, tu = $c,
          nu = "Text-module_text-label__8sMmT",
          ru = "Text-module_text_preview_contaniner__X8vAR",
          iu = "Text-module_font_color_area__Zch0o",
          ou = "Text-module_font_family_area__BUzEb",
          au = "Text-module_font_size_area__KmeEO",
          su = "Text-module_preview_item_label__akFsR",
          lu = "Text-module_color_block_wrapper__0K3rY",
          cu = "Text-module_color_block__8LhBv",
          uu = "Text-module_font_family_select_wrapper__N-f37",
          hu = "Text-module_font_family_select__otjrz",
          pu = "Text-module_arrow_down_icon__GZiHO",
          du = "Text-module_font_size_wrapper__TRp3a",
          fu = "Text-module_input_up__huYER",
          gu = "Text-module_input_down__g1FF8",
          mu = "Text-module_font_size_input__fMl0u";

        function vu() {
          return vu = Object.assign ? Object.assign.bind() : function(e) {
            for (var t = 1; t < arguments.length; t++) {
              var n = arguments[t];
              for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r])
            }
            return e
          }, vu.apply(this, arguments)
        }
        c(
        ".Text-module_text-label__8sMmT[\\:has\\(input\\:focus\\)]{border:1px solid #333}.Text-module_text-label__8sMmT:has(input:focus){border:1px solid #333}.Text-module_text_preview_contaniner__X8vAR{display:flex;flex-direction:column;flex-wrap:wrap;gap:20px;margin-top:20px}.Text-module_font_color_area__Zch0o,.Text-module_font_family_area__BUzEb,.Text-module_font_size_area__KmeEO{align-items:flex-start;display:flex;flex-direction:column;gap:12px;width:100%}.Text-module_preview_item_label__akFsR{color:rgba(51,51,51,.9);font-size:15px;line-height:130%}.Text-module_color_block_wrapper__0K3rY{align-items:flex-start;align-self:stretch;display:flex;flex-wrap:wrap;gap:4px;width:100%}.Text-module_color_block__8LhBv{align-items:center;border-radius:6px;box-sizing:border-box;cursor:pointer;display:flex;height:52px;justify-content:center;padding:0;width:52px}.Text-module_font_family_select_wrapper__N-f37{border:1px solid rgba(51,51,51,.12)!important;border-radius:4px;overflow:hidden;position:relative;width:100%}.Text-module_font_family_select__otjrz{-webkit-appearance:none;appearance:none;background:#fff;border:none!important;color:#333!important;cursor:pointer;font-size:14px!important;font-weight:500!important;height:100%;line-height:130%!important;overflow:hidden;padding:14px 42px 14px 16px!important;text-overflow:ellipsis;white-space:nowrap;width:100%}.Text-module_arrow_down_icon__GZiHO{cursor:pointer;position:absolute;right:16px;top:16px}.Text-module_font_size_wrapper__TRp3a{-webkit-tap-highlight-color:#fff;align-items:center;background:#fff;border:1px solid rgba(51,51,51,.12)!important;border-radius:4px;box-sizing:border-box;display:flex;gap:10px;height:44px;outline:none;padding:5px 39px 5px 16px;position:relative;width:120px}.Text-module_input_up__huYER{cursor:pointer;position:absolute;right:5px;top:3px}.Text-module_input_up__huYER:hover rect{fill:#dbdddf}.Text-module_input_up__huYER:active rect{fill:#c9ccd0}.Text-module_input_down__g1FF8{cursor:pointer;position:absolute;right:5px;top:23px}.Text-module_input_down__g1FF8:active rect{fill:#c9ccd0}.Text-module_font_size_input__fMl0u{-webkit-appearance:none!important;appearance:none!important;font-size:14px!important;font-weight:500!important;height:100%;line-height:130%!important;outline:none!important;width:100%}");
        var _u, bu, yu, wu = e => ue("svg", vu({
          width: 24,
          height: 16,
          fill: "none",
          xmlns: "http://www.w3.org/2000/svg"
        }, e), Jc || (Jc = ue("rect", {
          width: 24,
          height: 16,
          rx: 2,
          fill: "#E4E5E7"
        })), Qc || (Qc = ue("g", {
          clipPath: "url(#InputUp_svg__a)"
        }, ue("path", {
          fillRule: "evenodd",
          clipRule: "evenodd",
          d: "M15.319 9.75c.39 0 .585-.471.309-.747l-3.319-3.319a.437.437 0 0 0-.618 0l-3.32 3.32a.437.437 0 0 0 .31.746h6.638Z",
          fill: "#6D7175"
        }))), eu || (eu = ue("defs", null, ue("clipPath", {
          id: "InputUp_svg__a"
        }, ue("path", {
          fill: "#fff",
          transform: "translate(5 1)",
          d: "M0 0h14v14H0z"
        })))));

        function xu() {
          return xu = Object.assign ? Object.assign.bind() : function(e) {
            for (var t = 1; t < arguments.length; t++) {
              var n = arguments[t];
              for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r])
            }
            return e
          }, xu.apply(this, arguments)
        }
        var ku, Cu, Su, Eu = e => ue("svg", xu({
            width: 24,
            height: 16,
            fill: "none",
            xmlns: "http://www.w3.org/2000/svg"
          }, e), _u || (_u = ue("rect", {
            width: 24,
            height: 16,
            rx: 2,
            transform: "matrix(1 0 0 -1 0 16)",
            fill: "#E4E5E7"
          })), bu || (bu = ue("g", {
            clipPath: "url(#InputDown_svg__a)"
          }, ue("path", {
            fillRule: "evenodd",
            clipRule: "evenodd",
            d: "M15.319 6.25c.39 0 .585.471.309.747l-3.319 3.319a.437.437 0 0 1-.618 0l-3.32-3.32a.437.437 0 0 1 .31-.746h6.638Z",
            fill: "#6D7175"
          }))), yu || (yu = ue("defs", null, ue("clipPath", {
            id: "InputDown_svg__a"
          }, ue("path", {
            fill: "#fff",
            transform: "matrix(1 0 0 -1 5 15)",
            d: "M0 0h14v14H0z"
          }))))),
          Tu = e => {
            var t, n, {
                control: r,
                defaultValue: i = "",
                fieldName: o,
                propertyName: a,
                name: s,
                required: l,
                help: c,
                placeholder: u,
                optionData: h,
                maximum: p,
                visible: d,
                preview_setting: f = {},
                textStyleChange: g = (() => {})
              } = e,
              [m, v] = qe(!0),
              [_, b] = qe(f.selected_color || (null === (t = f.text_colors) || void 0 === t ? void 0 : t[0]) || "black"),
              [y, w] = qe(null === (n = f.text_families) || void 0 === n ? void 0 : n[0]),
              [x, k] = qe(f.text_size),
              {
                formatMessage: C
              } = zi(),
              S = Mo((e => {
                O(e), null == g || g({
                  textColor: _,
                  textFont: y,
                  textSize: x,
                  isInit: m,
                  textValue: e.target.value
                })
              }), 200),
              E = e => {
                var t = e.target.value;
                /^\d+$/.test(t) ? (t < 10 ? t = 10 : t > 128 && (t = 128), k(t)) : k(f.text_size)
              };
            Ze((() => {
              m ? (v(!1), setTimeout((() => {
                null == g || g({
                  textColor: _,
                  textFont: y,
                  textSize: x,
                  textValue: P,
                  isInit: !0
                })
              }), 500)) : null == g || g({
                textColor: _,
                textFont: y,
                textSize: x,
                textValue: P,
                isInit: !1
              })
            }), [_, y, x]);
            var T = p || 500,
              {
                field: {
                  onChange: O,
                  onBlur: A,
                  value: P,
                  ref: M
                },
                fieldState: {
                  error: D
                },
                formState: {
                  isSubmitted: I
                }
              } = Fa({
                control: r,
                name: o,
                rules: {
                  required: {
                    value: !!l,
                    message: C({
                      id: "required_tip"
                    })
                  }
                },
                defaultValue: i
              }),
              R = I && (null == D ? void 0 : D.message) || "maxLength" === (null == D ? void 0 : D.type);
            return gl(de, {
              children: d ? gl(de, {
                children: [gl(Fc, {
                  optionData: h,
                  label: s,
                  name: o,
                  help: c,
                  control: r,
                  alwaysShowError: {
                    maxLength: !0
                  },
                  children: gl("label", {
                    className: ul("pk-flex pk-w-full pk-py-3.5 pk-px-4 pk-appearance-none pk-rounded pk-text-sm pk-leading-5 pk-outline-none pk-truncate pk-bg-white pk-border pk-cursor-text", R ? "" : nu, R ?
                      "pk-border-[#DB393A]" : "pk-border-[#D1D1D1]"),
                    ref: M,
                    children: [gl("input", {
                      className: ul("pk-flex-1 placeholder:pk-text-[color:#93989D] pk-outline-none", {
                        "pk-bg-transparent": R,
                        "pk-truncate": !P
                      }),
                      maxLength: T,
                      type: "text",
                      autoComplete: "off",
                      placeholder: u,
                      name: "properties[".concat(a, "]"),
                      onBlur: A,
                      onFocus: e => {
                        (e.target.value || 0 === e.target.value) && (null == g || g({
                          textColor: _,
                          textFont: y,
                          textSize: x,
                          textValue: e.target.value
                        }))
                      },
                      onChange: e => {
                        S(e)
                      },
                      value: P
                    }), P.length >= T - 10 && gl("span", {
                      className: "pk-flex-none pk-text-[#93989D] pk-pointer-events-none pk-ml-3",
                      children: [P.length, "/", T]
                    })]
                  })
                }), f && f.preview_open && gl("div", {
                  className: ru,
                  children: [f.text_colors && f.text_colors.length > 1 && gl("div", {
                    className: iu,
                    children: [gl("div", {
                      className: ul(su, "pk-font-medium", No() ? "!pk-text-[14px]" : "!pk-text-[15px]"),
                      children: [C({
                        id: "font_color"
                      }), " :"]
                    }), gl("div", {
                      className: lu,
                      children: f.text_colors && f.text_colors.map((e => gl("div", {
                        className: ul(cu),
                        style: {
                          border: "2px solid ".concat(_ === e ? e : "transparent")
                        },
                        onClick: () => b(e),
                        children: gl("div", {
                          style: {
                            background: e,
                            width: "44px",
                            height: "44px",
                            borderRadius: "3px"
                          }
                        })
                      }, e)))
                    })]
                  }), f.text_families && f.text_families.length > 1 && gl("div", {
                    className: ou,
                    children: [gl("div", {
                      className: ul(su, "pk-font-medium", No() ? "!pk-text-[14px]" : "!pk-text-[15px]"),
                      children: [C({
                        id: "font"
                      }), " :"]
                    }), gl("div", {
                      className: uu,
                      children: [gl("select", {
                        className: hu,
                        value: y,
                        onChange: e => {
                          (e => {
                            w(e.target.value)
                          })(e)
                        },
                        children: f.text_families && f.text_families.map((e => gl("option", {
                          value: e,
                          children: e
                        }, e)))
                      }), gl("div", {
                        className: pu,
                        children: gl(Zc, {})
                      })]
                    })]
                  }), f.adjust_font_size && gl("div", {
                    className: au,
                    children: [gl("div", {
                      className: ul(su, "pk-font-medium", No() ? "!pk-text-[14px]" : "!pk-text-[15px]"),
                      children: [C({
                        id: "font_size"
                      }), " :"]
                    }), gl("div", {
                      className: du,
                      children: [gl("input", {
                        type: "text",
                        className: mu,
                        value: x,
                        onBlur: e => {
                          E(e)
                        },
                        onFocus: e => {
                          E(e)
                        },
                        onChange: e => {
                          (e => {
                            var {
                              value: t
                            } = e.target;
                            k(t)
                          })(e)
                        }
                      }), gl(wu, {
                        onClick: () => {
                          Number(x) >= 128 || k((e => Number(e) + 1))
                        },
                        className: fu
                      }), gl(Eu, {
                        className: gu,
                        onClick: () => {
                          Number(x) <= 10 || k((e => Number(e) - 1))
                        }
                      })]
                    })]
                  })]
                })]
              }) : null
            })
          },
          Ou = e => {
            var {
              optionData: t,
              control: n,
              defaultValue: r = [],
              fieldName: i,
              propertyName: o,
              name: a,
              required: s,
              help: l,
              options: c,
              multiple: u,
              visible: h
            } = e, {
              formatMessage: p
            } = zi(), {
              min: d = 0
            } = u || {}, {
              field: {
                onChange: f,
                onBlur: g,
                value: m,
                ref: v
              }
            } = Fa({
              control: n,
              name: i,
              rules: {
                validate: {
                  min: e => !u || !(null != e && e.length) || (null == e ? void 0 : e.length) >= d || hl(d),
                  required: e => !s || (null == e ? void 0 : e.length) >= 1 || p({
                    id: "required_tip"
                  })
                }
              },
              defaultValue: r
            }), {
              toggleOption: _
            } = Bc({
              value: m,
              multiple: u,
              onChange: f
            }), b = m.join(",");
            return gl(de, {
              children: h && gl(Lc, {
                optionData: t,
                name: i,
                label: a,
                help: l,
                control: n,
                children: [gl("div", {
                  ref: v,
                  className: "pk-flex pk-flex-wrap pk-gap-x-3 pk-gap-y-4",
                  tabIndex: "0",
                  onBlur: g,
                  children: c.map((e => {
                    var {
                      label: t
                    } = e, n = null == m ? void 0 : m.includes(t);
                    return gl("button", {
                      onClick: () => {
                        e.redirect_url ? location.href = e.redirect_url : _({
                          checked: !n,
                          value: t
                        })
                      },
                      type: "button",
                      className: ul("pk-flex pk-items-center pk-justify-center pk-h-11.5 pk-min-w-[46px] pk-px-4 pk-rounded pk-text-[15px] pk-border-solid pk-outline-none", n ?
                        "pk-border-2 pk-border-[#333] focus:pk-border-[#333]" : "pk-text-opacity-80 pk-border pk-border-[#333/12]"),
                      children: t
                    }, t)
                  }))
                }), gl("input", {
                  type: "hidden",
                  name: m.length > 0 ? "properties[".concat(o, "]") : "",
                  value: b || ""
                })]
              })
            })
          };

        function Au() {
          return Au = Object.assign ? Object.assign.bind() : function(e) {
            for (var t = 1; t < arguments.length; t++) {
              var n = arguments[t];
              for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r])
            }
            return e
          }, Au.apply(this, arguments)
        }
        var Pu, Mu, Du = e => ue("svg", Au({
          width: 18,
          height: 18,
          fill: "none",
          xmlns: "http://www.w3.org/2000/svg"
        }, e), ku || (ku = ue("rect", {
          width: 18,
          height: 18,
          rx: 4,
          fill: "#fff"
        })), Cu || (Cu = ue("path", {
          fillRule: "evenodd",
          clipRule: "evenodd",
          d: "M13.85 5.775a.731.731 0 0 1 0 1.034l-5.416 5.417a.731.731 0 0 1-1.034 0L4.69 9.517a.731.731 0 1 1 1.034-1.034l2.192 2.191 4.9-4.9a.731.731 0 0 1 1.033 0Z",
          fill: "#fff"
        })), Su || (Su = ue("rect", {
          x: .5,
          y: .5,
          width: 17,
          height: 17,
          rx: 3.5,
          stroke: "#333",
          strokeOpacity: .12
        })));

        function Iu() {
          return Iu = Object.assign ? Object.assign.bind() : function(e) {
            for (var t = 1; t < arguments.length; t++) {
              var n = arguments[t];
              for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r])
            }
            return e
          }, Iu.apply(this, arguments)
        }
        var Ru, ju, Nu, Lu = e => ue("svg", Iu({
          width: 18,
          height: 18,
          fill: "none",
          xmlns: "http://www.w3.org/2000/svg"
        }, e), Pu || (Pu = ue("rect", {
          width: 18,
          height: 18,
          rx: 4,
          fill: "#333"
        })), Mu || (Mu = ue("path", {
          fillRule: "evenodd",
          clipRule: "evenodd",
          d: "M13.85 5.775a.731.731 0 0 1 0 1.034l-5.416 5.417a.731.731 0 0 1-1.034 0L4.69 9.517a.731.731 0 1 1 1.034-1.034l2.192 2.191 4.9-4.9a.731.731 0 0 1 1.033 0Z",
          fill: "#fff"
        })));

        function Fu() {
          return Fu = Object.assign ? Object.assign.bind() : function(e) {
            for (var t = 1; t < arguments.length; t++) {
              var n = arguments[t];
              for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r])
            }
            return e
          }, Fu.apply(this, arguments)
        }
        var Bu, zu = e => ue("svg", Fu({
          width: 18,
          height: 18,
          fill: "none",
          xmlns: "http://www.w3.org/2000/svg"
        }, e), Ru || (Ru = ue("rect", {
          width: 18,
          height: 18,
          rx: 4,
          fill: "#fff"
        })), ju || (ju = ue("path", {
          fillRule: "evenodd",
          clipRule: "evenodd",
          d: "M13.85 5.775a.731.731 0 0 1 0 1.034l-5.416 5.417a.731.731 0 0 1-1.034 0L4.69 9.517a.731.731 0 1 1 1.034-1.034l2.192 2.191 4.9-4.9a.731.731 0 0 1 1.033 0Z",
          fill: "#fff"
        })), Nu || (Nu = ue("rect", {
          x: .5,
          y: .5,
          width: 17,
          height: 17,
          rx: 3.5,
          stroke: "#333",
          strokeOpacity: .12
        })));

        function Hu() {
          return Hu = Object.assign ? Object.assign.bind() : function(e) {
            for (var t = 1; t < arguments.length; t++) {
              var n = arguments[t];
              for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r])
            }
            return e
          }, Hu.apply(this, arguments)
        }
        var Uu = e => ue("svg", Hu({
            xmlns: "http://www.w3.org/2000/svg",
            width: 18,
            height: 18,
            fill: "none"
          }, e), Bu || (Bu = ue("path", {
            fillRule: "evenodd",
            clipRule: "evenodd",
            d: "M2.352 1.023a1.33 1.33 0 0 0-1.33 1.33v13.295c0 .734.596 1.33 1.33 1.33h13.296a1.33 1.33 0 0 0 1.33-1.33V2.352a1.33 1.33 0 0 0-1.33-1.33H2.352Zm4.432 3.102c.975 0 1.773.798 1.773 1.773 0 .975-.798 1.772-1.773 1.772a1.778 1.778 0 0 1-1.773-1.772c0-.975.798-1.773 1.773-1.773Zm7.977 11.08H3.236a.439.439 0 0 1-.355-.7l3.15-3.591a.442.442 0 0 1 .638-.01l1.445 1.641 2.712-4.237a.443.443 0 0 1 .744.017l3.58 6.215a.45.45 0 0 1-.39.665Z",
            fill: "#BCBCBC"
          }))),
          Wu = "Checkbox-module_checkbox_img__wHiW3",
          Vu = "Checkbox-module_checkbox_img_default__S0ISH",
          Xu = "Checkbox-module_checkbox_row__MJZge",
          Gu = "Checkbox-module_label_checked__YpN49";
        c(
        ".Checkbox-module_checkbox_img__wHiW3{border-radius:3px;height:52px!important;margin-left:8px;width:52px}.Checkbox-module_checkbox_img_default__S0ISH{align-items:center;background-color:#f5f5f5;border-radius:3px;display:flex;height:52px!important;justify-content:center;margin-left:8px;width:52px}.Checkbox-module_checkbox_row__MJZge{align-items:stretch!important;display:flex!important;flex-wrap:wrap!important;gap:12px!important;margin-left:0!important;width:100%!important}.Checkbox-module_checkbox_row__MJZge>label{background:#fff!important;border:1px solid #e6e6e6!important;border-radius:6px!important;box-sizing:border-box!important;display:flex!important;flex-direction:column!important;flex-wrap:wrap!important;margin-bottom:0!important;min-height:125px!important;padding:8px 8px 10px!important;width:118px!important}.Checkbox-module_checkbox_row__MJZge>.Checkbox-module_label_checked__YpN49{background:#fff!important;border:1px solid #333!important;border-radius:6px!important}.Checkbox-module_checkbox_row__MJZge>label *{margin:0!important}.Checkbox-module_checkbox_row__MJZge>label>svg{margin-bottom:8px!important}.Checkbox-module_checkbox_row__MJZge>label>span{margin-top:5px!important}.Checkbox-module_checkbox_row__MJZge .Checkbox-module_checkbox_img__wHiW3,.Checkbox-module_checkbox_row__MJZge .Checkbox-module_checkbox_img_default__S0ISH{height:66px!important;width:66px!important}@media (max-width:959px){.Checkbox-module_checkbox_row__MJZge>label{min-height:111px!important;width:106px!important}.Checkbox-module_checkbox_row__MJZge .Checkbox-module_checkbox_img__wHiW3,.Checkbox-module_checkbox_row__MJZge .Checkbox-module_checkbox_img_default__S0ISH{height:52px!important;width:52px!important}}");
        var Yu = {
            unchecked: Du,
            checked: Lu,
            disabled: zu
          },
          qu = dt((e => {
            var {
              optionData: t,
              control: n,
              defaultValue: r = [],
              fieldName: i,
              propertyName: o,
              name: a,
              required: s,
              help: l,
              options: c,
              multiple: u,
              visible: h
            } = e, {
              min: p = 0,
              max: d = Number.MAX_SAFE_INTEGER
            } = u || {}, {
              formatMessage: f
            } = zi(), {
              field: {
                onChange: g,
                onBlur: m,
                value: v,
                ref: _
              }
            } = Fa({
              control: n,
              name: i,
              rules: {
                validate: {
                  min: e => !u || !(null != e && e.length) || (null == e ? void 0 : e.length) >= p || hl(p),
                  required: e => !s || (null == e ? void 0 : e.length) >= 1 || f({
                    id: "required_tip"
                  })
                }
              },
              defaultValue: r
            }), {
              toggleOption: b
            } = Bc({
              value: v,
              multiple: u,
              onChange: g
            }), y = v.join(",");
            return gl(de, {
              children: h && gl(Lc, {
                optionData: t,
                name: i,
                label: a,
                help: l,
                control: n,
                children: [gl("div", {
                  ref: _,
                  tabIndex: "0",
                  onBlur: m,
                  className: ul("pk-block pk--mt-0.5 pk--mb-1.5 pk--mx-4", "row" === (null == t ? void 0 : t.checkbox_direction) ? Xu : ""),
                  children: c.map((e => {
                    var {
                      label: n
                    } = e, r = null == v ? void 0 : v.includes(n), i = !r && u && v.length >= d, o = Yu[i ? "disabled" : r ? "checked" : "unchecked"];
                    return gl("label", {
                      onClick: () => b({
                        value: n,
                        checked: !r
                      }),
                      className: ul("pk-flex pk-items-center pk-py-1.5 pk-cursor-pointer pk-px-4 !pk-mb-0", r ? Gu : ""),
                      children: [gl(o, {
                        style: {
                          marginRight: "4px"
                        },
                        className: "pk-flex-none pk-self-center"
                      }), null != e && e.image_url ? gl("img", {
                        className: Wu,
                        src: e.image_url
                      }) : "row" === (null == t ? void 0 : t.checkbox_direction) ? gl("div", {
                        className: Vu,
                        children: gl(Uu, {})
                      }) : gl(de, {}), gl("span", {
                        style: {
                          hyphens: "auto",
                          wordBreak: "break-word"
                        },
                        className: ul("pk-ml-2 pk-text-sm pk-leading-5 pk-break-words pk-min-w-0 pk-flex-1", {
                          "pk-text-[#d2d5d8]": i
                        }),
                        children: n
                      })]
                    }, n)
                  }))
                }), gl("input", {
                  type: "hidden",
                  name: v.length > 0 ? "properties[".concat(o, "]") : "",
                  value: y || ""
                })]
              })
            })
          }));

        function Ku() {
          return Ku = Object.assign ? Object.assign.bind() : function(e) {
            for (var t = 1; t < arguments.length; t++) {
              var n = arguments[t];
              for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r])
            }
            return e
          }, Ku.apply(this, arguments)
        }

        function Zu(e, t) {
          if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
        }

        function $u(e) {
          return $u = "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
          }, $u(e)
        }

        function Ju(e) {
          var t = function(e, t) {
            if ("object" !== $u(e) || null === e) return e;
            var n = e[Symbol.toPrimitive];
            if (void 0 !== n) {
              var r = n.call(e, t || "default");
              if ("object" !== $u(r)) return r;
              throw new TypeError("@@toPrimitive must return a primitive value.")
            }
            return ("string" === t ? String : Number)(e)
          }(e, "string");
          return "symbol" === $u(t) ? t : String(t)
        }

        function Qu(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, Ju(r.key), r)
          }
        }

        function eh(e, t, n) {
          return t && Qu(e.prototype, t), n && Qu(e, n), Object.defineProperty(e, "prototype", {
            writable: !1
          }), e
        }

        function th(e, t) {
          return th = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(e, t) {
            return e.__proto__ = t, e
          }, th(e, t)
        }

        function nh(e, t) {
          if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function");
          e.prototype = Object.create(t && t.prototype, {
            constructor: {
              value: e,
              writable: !0,
              configurable: !0
            }
          }), Object.defineProperty(e, "prototype", {
            writable: !1
          }), t && th(e, t)
        }

        function rh(e) {
          return rh = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function(e) {
            return e.__proto__ || Object.getPrototypeOf(e)
          }, rh(e)
        }

        function ih(e) {
          if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
          return e
        }

        function oh(e, t) {
          if (t && ("object" === $u(t) || "function" == typeof t)) return t;
          if (void 0 !== t) throw new TypeError("Derived constructors may only return object or undefined");
          return ih(e)
        }

        function ah(e) {
          var t = function() {
            if ("undefined" == typeof Reflect || !Reflect.construct) return !1;
            if (Reflect.construct.sham) return !1;
            if ("function" == typeof Proxy) return !0;
            try {
              return Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], (function() {}))), !0
            } catch (e) {
              return !1
            }
          }();
          return function() {
            var n, r = rh(e);
            if (t) {
              var i = rh(this).constructor;
              n = Reflect.construct(r, arguments, i)
            } else n = r.apply(this, arguments);
            return oh(this, n)
          }
        }

        function sh(e, t, n) {
          return (t = Ju(t)) in e ? Object.defineProperty(e, t, {
            value: n,
            enumerable: !0,
            configurable: !0,
            writable: !0
          }) : e[t] = n, e
        }

        function lh(e, t) {
          if (null == e) return {};
          var n, r, i = function(e, t) {
            if (null == e) return {};
            var n, r, i = {},
              o = Object.keys(e);
            for (r = 0; r < o.length; r++) n = o[r], t.indexOf(n) >= 0 || (i[n] = e[n]);
            return i
          }(e, t);
          if (Object.getOwnPropertySymbols) {
            var o = Object.getOwnPropertySymbols(e);
            for (r = 0; r < o.length; r++) n = o[r], t.indexOf(n) >= 0 || Object.prototype.propertyIsEnumerable.call(e, n) && (i[n] = e[n])
          }
          return i
        }

        function ch() {
          ch = function() {
            return e
          };
          var e = {},
            t = Object.prototype,
            n = t.hasOwnProperty,
            r = Object.defineProperty || function(e, t, n) {
              e[t] = n.value
            },
            i = "function" == typeof Symbol ? Symbol : {},
            o = i.iterator || "@@iterator",
            a = i.asyncIterator || "@@asyncIterator",
            s = i.toStringTag || "@@toStringTag";

          function l(e, t, n) {
            return Object.defineProperty(e, t, {
              value: n,
              enumerable: !0,
              configurable: !0,
              writable: !0
            }), e[t]
          }
          try {
            l({}, "")
          } catch (e) {
            l = function(e, t, n) {
              return e[t] = n
            }
          }

          function c(e, t, n, i) {
            var o = t && t.prototype instanceof p ? t : p,
              a = Object.create(o.prototype),
              s = new S(i || []);
            return r(a, "_invoke", {
              value: w(e, n, s)
            }), a
          }

          function u(e, t, n) {
            try {
              return {
                type: "normal",
                arg: e.call(t, n)
              }
            } catch (e) {
              return {
                type: "throw",
                arg: e
              }
            }
          }
          e.wrap = c;
          var h = {};

          function p() {}

          function d() {}

          function f() {}
          var g = {};
          l(g, o, (function() {
            return this
          }));
          var m = Object.getPrototypeOf,
            v = m && m(m(E([])));
          v && v !== t && n.call(v, o) && (g = v);
          var _ = f.prototype = p.prototype = Object.create(g);

          function b(e) {
            ["next", "throw", "return"].forEach((function(t) {
              l(e, t, (function(e) {
                return this._invoke(t, e)
              }))
            }))
          }

          function y(e, t) {
            function i(r, o, a, s) {
              var l = u(e[r], e, o);
              if ("throw" !== l.type) {
                var c = l.arg,
                  h = c.value;
                return h && "object" == $u(h) && n.call(h, "__await") ? t.resolve(h.__await).then((function(e) {
                  i("next", e, a, s)
                }), (function(e) {
                  i("throw", e, a, s)
                })) : t.resolve(h).then((function(e) {
                  c.value = e, a(c)
                }), (function(e) {
                  return i("throw", e, a, s)
                }))
              }
              s(l.arg)
            }
            var o;
            r(this, "_invoke", {
              value: function(e, n) {
                function r() {
                  return new t((function(t, r) {
                    i(e, n, t, r)
                  }))
                }
                return o = o ? o.then(r, r) : r()
              }
            })
          }

          function w(e, t, n) {
            var r = "suspendedStart";
            return function(i, o) {
              if ("executing" === r) throw new Error("Generator is already running");
              if ("completed" === r) {
                if ("throw" === i) throw o;
                return T()
              }
              for (n.method = i, n.arg = o;;) {
                var a = n.delegate;
                if (a) {
                  var s = x(a, n);
                  if (s) {
                    if (s === h) continue;
                    return s
                  }
                }
                if ("next" === n.method) n.sent = n._sent = n.arg;
                else if ("throw" === n.method) {
                  if ("suspendedStart" === r) throw r = "completed", n.arg;
                  n.dispatchException(n.arg)
                } else "return" === n.method && n.abrupt("return", n.arg);
                r = "executing";
                var l = u(e, t, n);
                if ("normal" === l.type) {
                  if (r = n.done ? "completed" : "suspendedYield", l.arg === h) continue;
                  return {
                    value: l.arg,
                    done: n.done
                  }
                }
                "throw" === l.type && (r = "completed", n.method = "throw", n.arg = l.arg)
              }
            }
          }

          function x(e, t) {
            var n = t.method,
              r = e.iterator[n];
            if (void 0 === r) return t.delegate = null, "throw" === n && e.iterator.return && (t.method = "return", t.arg = void 0, x(e, t), "throw" === t.method) || "return" !== n && (t.method = "throw", t.arg = new TypeError(
              "The iterator does not provide a '" + n + "' method")), h;
            var i = u(r, e.iterator, t.arg);
            if ("throw" === i.type) return t.method = "throw", t.arg = i.arg, t.delegate = null, h;
            var o = i.arg;
            return o ? o.done ? (t[e.resultName] = o.value, t.next = e.nextLoc, "return" !== t.method && (t.method = "next", t.arg = void 0), t.delegate = null, h) : o : (t.method = "throw", t.arg = new TypeError(
              "iterator result is not an object"), t.delegate = null, h)
          }

          function k(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 C(e) {
            var t = e.completion || {};
            t.type = "normal", delete t.arg, e.completion = t
          }

          function S(e) {
            this.tryEntries = [{
              tryLoc: "root"
            }], e.forEach(k, this), this.reset(!0)
          }

          function E(e) {
            if (e) {
              var t = e[o];
              if (t) return t.call(e);
              if ("function" == typeof e.next) return e;
              if (!isNaN(e.length)) {
                var r = -1,
                  i = function t() {
                    for (; ++r < e.length;)
                      if (n.call(e, r)) return t.value = e[r], t.done = !1, t;
                    return t.value = void 0, t.done = !0, t
                  };
                return i.next = i
              }
            }
            return {
              next: T
            }
          }

          function T() {
            return {
              value: void 0,
              done: !0
            }
          }
          return d.prototype = f, r(_, "constructor", {
            value: f,
            configurable: !0
          }), r(f, "constructor", {
            value: d,
            configurable: !0
          }), d.displayName = l(f, s, "GeneratorFunction"), e.isGeneratorFunction = function(e) {
            var t = "function" == typeof e && e.constructor;
            return !!t && (t === d || "GeneratorFunction" === (t.displayName || t.name))
          }, e.mark = function(e) {
            return Object.setPrototypeOf ? Object.setPrototypeOf(e, f) : (e.__proto__ = f, l(e, s, "GeneratorFunction")), e.prototype = Object.create(_), e
          }, e.awrap = function(e) {
            return {
              __await: e
            }
          }, b(y.prototype), l(y.prototype, a, (function() {
            return this
          })), e.AsyncIterator = y, e.async = function(t, n, r, i, o) {
            void 0 === o && (o = Promise);
            var a = new y(c(t, n, r, i), o);
            return e.isGeneratorFunction(n) ? a : a.next().then((function(e) {
              return e.done ? e.value : a.next()
            }))
          }, b(_), l(_, s, "Generator"), l(_, o, (function() {
            return this
          })), l(_, "toString", (function() {
            return "[object Generator]"
          })), e.keys = function(e) {
            var t = Object(e),
              n = [];
            for (var r in t) n.push(r);
            return n.reverse(),
              function e() {
                for (; n.length;) {
                  var r = n.pop();
                  if (r in t) return e.value = r, e.done = !1, e
                }
                return e.done = !0, e
              }
          }, e.values = E, S.prototype = {
            constructor: S,
            reset: function(e) {
              if (this.prev = 0, this.next = 0, this.sent = this._sent = void 0, this.done = !1, this.delegate = null, this.method = "next", this.arg = void 0, this.tryEntries.forEach(C), !e)
                for (var t in this) "t" === t.charAt(0) && n.call(this, t) && !isNaN(+t.slice(1)) && (this[t] = void 0)
            },
            stop: function() {
              this.done = !0;
              var e = this.tryEntries[0].completion;
              if ("throw" === e.type) throw e.arg;
              return this.rval
            },
            dispatchException: function(e) {
              if (this.done) throw e;
              var t = this;

              function r(n, r) {
                return a.type = "throw", a.arg = e, t.next = n, r && (t.method = "next", t.arg = void 0), !!r
              }
              for (var i = this.tryEntries.length - 1; i >= 0; --i) {
                var o = this.tryEntries[i],
                  a = o.completion;
                if ("root" === o.tryLoc) return r("end");
                if (o.tryLoc <= this.prev) {
                  var s = n.call(o, "catchLoc"),
                    l = n.call(o, "finallyLoc");
                  if (s && l) {
                    if (this.prev < o.catchLoc) return r(o.catchLoc, !0);
                    if (this.prev < o.finallyLoc) return r(o.finallyLoc)
                  } else if (s) {
                    if (this.prev < o.catchLoc) return r(o.catchLoc, !0)
                  } else {
                    if (!l) throw new Error("try statement without catch or finally");
                    if (this.prev < o.finallyLoc) return r(o.finallyLoc)
                  }
                }
              }
            },
            abrupt: function(e, t) {
              for (var r = this.tryEntries.length - 1; r >= 0; --r) {
                var i = this.tryEntries[r];
                if (i.tryLoc <= this.prev && n.call(i, "finallyLoc") && this.prev < i.finallyLoc) {
                  var o = i;
                  break
                }
              }
              o && ("break" === e || "continue" === e) && o.tryLoc <= t && t <= o.finallyLoc && (o = null);
              var a = o ? o.completion : {};
              return a.type = e, a.arg = t, o ? (this.method = "next", this.next = o.finallyLoc, h) : this.complete(a)
            },
            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), h
            },
            finish: function(e) {
              for (var t = this.tryEntries.length - 1; t >= 0; --t) {
                var n = this.tryEntries[t];
                if (n.finallyLoc === e) return this.complete(n.completion, n.afterLoc), C(n), h
              }
            },
            catch: function(e) {
              for (var t = this.tryEntries.length - 1; t >= 0; --t) {
                var n = this.tryEntries[t];
                if (n.tryLoc === e) {
                  var r = n.completion;
                  if ("throw" === r.type) {
                    var i = r.arg;
                    C(n)
                  }
                  return i
                }
              }
              throw new Error("illegal catch attempt")
            },
            delegateYield: function(e, t, n) {
              return this.delegate = {
                iterator: E(e),
                resultName: t,
                nextLoc: n
              }, "next" === this.method && (this.arg = void 0), h
            }
          }, e
        }

        function uh(e, t, n, r, i, o, a) {
          try {
            var s = e[o](a),
              l = s.value
          } catch (e) {
            return void n(e)
          }
          s.done ? t(l) : Promise.resolve(l).then(r, i)
        }

        function hh(e) {
          return function() {
            var t = this,
              n = arguments;
            return new Promise((function(r, i) {
              var o = e.apply(t, n);

              function a(e) {
                uh(o, r, i, a, s, "next", e)
              }

              function s(e) {
                uh(o, r, i, a, s, "throw", e)
              }
              a(void 0)
            }))
          }
        }

        function ph(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 dh(e, t) {
          if (e) {
            if ("string" == typeof e) return ph(e, t);
            var n = Object.prototype.toString.call(e).slice(8, -1);
            return "Object" === n && e.constructor && (n = e.constructor.name), "Map" === n || "Set" === n ? Array.from(e) : "Arguments" === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n) ? ph(e, t) : void 0
          }
        }

        function fh(e) {
          return function(e) {
            if (Array.isArray(e)) return ph(e)
          }(e) || function(e) {
            if ("undefined" != typeof Symbol && null != e[Symbol.iterator] || null != e["@@iterator"]) return Array.from(e)
          }(e) || dh(e) || function() {
            throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")
          }()
        }

        function gh(e, t) {
          var n = Object.keys(e);
          if (Object.getOwnPropertySymbols) {
            var r = Object.getOwnPropertySymbols(e);
            t && (r = r.filter((function(t) {
              return Object.getOwnPropertyDescriptor(e, t).enumerable
            }))), n.push.apply(n, r)
          }
          return n
        }

        function mh(e) {
          for (var t = 1; t < arguments.length; t++) {
            var n = null != arguments[t] ? arguments[t] : {};
            t % 2 ? gh(Object(n), !0).forEach((function(t) {
              sh(e, t, n[t])
            })) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(n)) : gh(Object(n)).forEach((function(t) {
              Object.defineProperty(e, t, Object.getOwnPropertyDescriptor(n, t))
            }))
          }
          return e
        }
        var vh = "".concat(
            "accept acceptCharset accessKey action allowFullScreen allowTransparency\n    alt async autoComplete autoFocus autoPlay capture cellPadding cellSpacing challenge\n    charSet checked classID className colSpan cols content contentEditable contextMenu\n    controls coords crossOrigin data dateTime default defer dir disabled download draggable\n    encType form formAction formEncType formMethod formNoValidate formTarget frameBorder\n    headers height hidden high href hrefLang htmlFor httpEquiv icon id inputMode integrity\n    is keyParams keyType kind label lang list loop low manifest marginHeight marginWidth max maxLength media\n    mediaGroup method min minLength multiple muted name noValidate nonce open\n    optimum pattern placeholder poster preload radioGroup readOnly rel required\n    reversed role rowSpan rows sandbox scope scoped scrolling seamless selected\n    shape size sizes span spellCheck src srcDoc srcLang srcSet start step style\n    summary tabIndex target title type useMap value width wmode wrap",
            " ").concat(
            "onCopy onCut onPaste onCompositionEnd onCompositionStart onCompositionUpdate onKeyDown\n    onKeyPress onKeyUp onFocus onBlur onChange onInput onSubmit onClick onContextMenu onDoubleClick\n    onDrag onDragEnd onDragEnter onDragExit onDragLeave onDragOver onDragStart onDrop onMouseDown\n    onMouseEnter onMouseLeave onMouseMove onMouseOut onMouseOver onMouseUp onSelect onTouchCancel\n    onTouchEnd onTouchMove onTouchStart onScroll onWheel onAbort onCanPlay onCanPlayThrough\n    onDurationChange onEmptied onEncrypted onEnded onError onLoadedData onLoadedMetadata\n    onLoadStart onPause onPlay onPlaying onProgress onRateChange onSeeked onSeeking onStalled onSuspend onTimeUpdate onVolumeChange onWaiting onLoad onError"
            ).split(/[\s\n]+/),
          _h = "aria-",
          bh = "data-";

        function yh(e, t) {
          return 0 === e.indexOf(t)
        }

        function wh(e) {
          var t, n = arguments.length > 1 && void 0 !== arguments[1] && arguments[1];
          t = !1 === n ? {
            aria: !0,
            data: !0,
            attr: !0
          } : !0 === n ? {
            aria: !0
          } : mh({}, n);
          var r = {};
          return Object.keys(e).forEach((function(n) {
            (t.aria && ("role" === n || yh(n, _h)) || t.data && yh(n, bh) || t.attr && vh.includes(n)) && (r[n] = e[n])
          })), r
        }

        function xh(e) {
          var t = e.responseText || e.response;
          if (!t) return t;
          try {
            return JSON.parse(t)
          } catch (e) {
            return t
          }
        }

        function kh(e) {
          var t = new XMLHttpRequest;
          e.onProgress && t.upload && (t.upload.onprogress = function(t) {
            t.total > 0 && (t.percent = t.loaded / t.total * 100), e.onProgress(t)
          });
          var n = new FormData;
          e.data && Object.keys(e.data).forEach((function(t) {
            var r = e.data[t];
            Array.isArray(r) ? r.forEach((function(e) {
              n.append("".concat(t, "[]"), e)
            })) : n.append(t, r)
          })), e.file instanceof Blob ? n.append(e.filename, e.file, e.file.name) : n.append(e.filename, e.file), t.onerror = function(t) {
            e.onError(t)
          }, t.onload = function() {
            return t.status < 200 || t.status >= 300 ? e.onError(function(e, t) {
              var n = "cannot ".concat(e.method, " ").concat(e.action, " ").concat(t.status, "'"),
                r = new Error(n);
              return r.status = t.status, r.method = e.method, r.url = e.action, r
            }(e, t), xh(t)) : e.onSuccess(xh(t), t)
          }, t.open(e.method, e.action, !0), e.withCredentials && "withCredentials" in t && (t.withCredentials = !0);
          var r = e.headers || {};
          return null !== r["X-Requested-With"] && t.setRequestHeader("X-Requested-With", "XMLHttpRequest"), Object.keys(r).forEach((function(e) {
            null !== r[e] && t.setRequestHeader(e, r[e])
          })), t.send(n), {
            abort: function() {
              t.abort()
            }
          }
        }
        var Ch = +new Date,
          Sh = 0;

        function Eh() {
          return "rc-upload-".concat(Ch, "-").concat(++Sh)
        }
        var Th = {};

        function Oh(e, t) {}

        function Ah(e, t) {
          ! function(e, t, n) {
            t || Th[n] || (e(!1, n), Th[n] = !0)
          }(Oh, e, t)
        }
        var Ph = function(e, t) {
          if (e && t) {
            var n = Array.isArray(t) ? t : t.split(","),
              r = e.name || "",
              i = e.type || "",
              o = i.replace(/\/.*$/, "");
            return n.some((function(e) {
              var t = e.trim();
              if (/^\*(\/\*)?$/.test(e)) return !0;
              if ("." === t.charAt(0)) {
                var n = r.toLowerCase(),
                  a = t.toLowerCase(),
                  s = [a];
                return ".jpg" !== a && ".jpeg" !== a || (s = [".jpg", ".jpeg"]), s.some((function(e) {
                  return n.endsWith(e)
                }))
              }
              return /\/\*$/.test(t) ? o === t.replace(/\/.*$/, "") : i === t || !!/^\w+$/.test(t) && (Ah(!1, "Upload takes an invalidate 'accept' type '".concat(t, "'.Skip for check.")), !0)
            }))
          }
          return !0
        };
        var Mh = function(e, t, n) {
            var r = function e(r, i) {
              r.path = i || "", r.isFile ? r.file((function(e) {
                n(e) && (r.fullPath && !e.webkitRelativePath && (Object.defineProperties(e, {
                  webkitRelativePath: {
                    writable: !0
                  }
                }), e.webkitRelativePath = r.fullPath.replace(/^\//, ""), Object.defineProperties(e, {
                  webkitRelativePath: {
                    writable: !1
                  }
                })), t([e]))
              })) : r.isDirectory && function(e, t) {
                var n = e.createReader(),
                  r = [];
                ! function e() {
                  n.readEntries((function(n) {
                    var i = Array.prototype.slice.apply(n);
                    r = r.concat(i), i.length ? e() : t(r)
                  }))
                }()
              }(r, (function(t) {
                t.forEach((function(t) {
                  e(t, "".concat(i).concat(r.name, "/"))
                }))
              }))
            };
            e.forEach((function(e) {
              r(e.webkitGetAsEntry())
            }))
          },
          Dh = ["component", "prefixCls", "className", "disabled", "id", "style", "multiple", "accept", "capture", "children", "directory", "openFileDialogOnClick", "onMouseEnter", "onMouseLeave"],
          Ih = function(e) {
            nh(n, e);
            var t = ah(n);

            function n() {
              var e;
              Zu(this, n);
              for (var r = arguments.length, i = new Array(r), o = 0; o < r; o++) i[o] = arguments[o];
              return (e = t.call.apply(t, [this].concat(i))).state = {
                uid: Eh()
              }, e.reqs = {}, e.fileInput = void 0, e._isMounted = void 0, e.onChange = function(t) {
                var n = e.props,
                  r = n.accept,
                  i = n.directory,
                  o = fh(t.target.files).filter((function(e) {
                    return !i || Ph(e, r)
                  }));
                e.uploadFiles(o), e.reset()
              }, e.onClick = function(t) {
                var n = e.fileInput;
                if (n) {
                  var r = e.props,
                    i = r.children,
                    o = r.onClick;
                  if (i && "button" === i.type) {
                    var a = n.parentNode;
                    a.focus(), a.querySelector("button").blur()
                  }
                  n.click(), o && o(t)
                }
              }, e.onKeyDown = function(t) {
                "Enter" === t.key && e.onClick(t)
              }, e.onFileDrop = function(t) {
                var n = e.props.multiple;
                if (t.preventDefault(), "dragover" !== t.type)
                  if (e.props.directory) Mh(Array.prototype.slice.call(t.dataTransfer.items), e.uploadFiles, (function(t) {
                    return Ph(t, e.props.accept)
                  }));
                  else {
                    var r = fh(t.dataTransfer.files).filter((function(t) {
                      return Ph(t, e.props.accept)
                    }));
                    !1 === n && (r = r.slice(0, 1)), e.uploadFiles(r)
                  }
              }, e.uploadFiles = function(t) {
                var n = fh(t),
                  r = n.map((function(t) {
                    return t.uid = Eh(), e.processFile(t, n)
                  }));
                Promise.all(r).then((function(t) {
                  var n = e.props.onBatchStart;
                  null == n || n(t.map((function(e) {
                    return {
                      file: e.origin,
                      parsedFile: e.parsedFile
                    }
                  }))), t.filter((function(e) {
                    return null !== e.parsedFile
                  })).forEach((function(t) {
                    e.post(t)
                  }))
                }))
              }, e.processFile = function() {
                var t = hh(ch().mark((function t(n, r) {
                  var i, o, a, s, l, c, u, h, p;
                  return ch().wrap((function(t) {
                    for (;;) switch (t.prev = t.next) {
                      case 0:
                        if (i = e.props.beforeUpload, o = n, !i) {
                          t.next = 14;
                          break
                        }
                        return t.prev = 3, t.next = 6, i(n, r);
                      case 6:
                        o = t.sent, t.next = 12;
                        break;
                      case 9:
                        t.prev = 9, t.t0 = t.catch(3), o = !1;
                      case 12:
                        if (!1 !== o) {
                          t.next = 14;
                          break
                        }
                        return t.abrupt("return", {
                          origin: n,
                          parsedFile: null,
                          action: null,
                          data: null
                        });
                      case 14:
                        if ("function" != typeof(a = e.props.action)) {
                          t.next = 21;
                          break
                        }
                        return t.next = 18, a(n);
                      case 18:
                        s = t.sent, t.next = 22;
                        break;
                      case 21:
                        s = a;
                      case 22:
                        if ("function" != typeof(l = e.props.data)) {
                          t.next = 29;
                          break
                        }
                        return t.next = 26, l(n);
                      case 26:
                        c = t.sent, t.next = 30;
                        break;
                      case 29:
                        c = l;
                      case 30:
                        return u = "object" !== $u(o) && "string" != typeof o || !o ? n : o, h = u instanceof File ? u : new File([u], n.name, {
                          type: n.type
                        }), (p = h).uid = n.uid, t.abrupt("return", {
                          origin: n,
                          data: c,
                          parsedFile: p,
                          action: s
                        });
                      case 35:
                      case "end":
                        return t.stop()
                    }
                  }), t, null, [
                    [3, 9]
                  ])
                })));
                return function(e, n) {
                  return t.apply(this, arguments)
                }
              }(), e.saveFileInput = function(t) {
                e.fileInput = t
              }, e
            }
            return eh(n, [{
              key: "componentDidMount",
              value: function() {
                this._isMounted = !0
              }
            }, {
              key: "componentWillUnmount",
              value: function() {
                this._isMounted = !1, this.abort()
              }
            }, {
              key: "post",
              value: function(e) {
                var t = this,
                  n = e.data,
                  r = e.origin,
                  i = e.action,
                  o = e.parsedFile;
                if (this._isMounted) {
                  var a = this.props,
                    s = a.onStart,
                    l = a.customRequest,
                    c = a.name,
                    u = a.headers,
                    h = a.withCredentials,
                    p = a.method,
                    d = r.uid,
                    f = l || kh,
                    g = {
                      action: i,
                      filename: c,
                      data: n,
                      file: o,
                      headers: u,
                      withCredentials: h,
                      method: p || "post",
                      onProgress: function(e) {
                        var n = t.props.onProgress;
                        null == n || n(e, o)
                      },
                      onSuccess: function(e, n) {
                        var r = t.props.onSuccess;
                        null == r || r(e, o, n), delete t.reqs[d]
                      },
                      onError: function(e, n) {
                        var r = t.props.onError;
                        null == r || r(e, n, o), delete t.reqs[d]
                      }
                    };
                  s(r), this.reqs[d] = f(g)
                }
              }
            }, {
              key: "reset",
              value: function() {
                this.setState({
                  uid: Eh()
                })
              }
            }, {
              key: "abort",
              value: function(e) {
                var t = this.reqs;
                if (e) {
                  var n = e.uid ? e.uid : e;
                  t[n] && t[n].abort && t[n].abort(), delete t[n]
                } else Object.keys(t).forEach((function(e) {
                  t[e] && t[e].abort && t[e].abort(), delete t[e]
                }))
              }
            }, {
              key: "render",
              value: function() {
                var e, t = this.props,
                  n = t.component,
                  r = t.prefixCls,
                  i = t.className,
                  o = t.disabled,
                  a = t.id,
                  s = t.style,
                  l = t.multiple,
                  c = t.accept,
                  u = t.capture,
                  h = t.children,
                  p = t.directory,
                  d = t.openFileDialogOnClick,
                  f = t.onMouseEnter,
                  g = t.onMouseLeave,
                  m = lh(t, Dh),
                  v = ul((sh(e = {}, r, !0), sh(e, "".concat(r, "-disabled"), o), sh(e, i, i), e)),
                  _ = p ? {
                    directory: "directory",
                    webkitdirectory: "webkitdirectory"
                  } : {},
                  b = o ? {} : {
                    onClick: d ? this.onClick : function() {},
                    onKeyDown: d ? this.onKeyDown : function() {},
                    onMouseEnter: f,
                    onMouseLeave: g,
                    onDrop: this.onFileDrop,
                    onDragOver: this.onFileDrop,
                    tabIndex: "0"
                  };
                return Jt.createElement(n, Ku({}, b, {
                  className: v,
                  role: "button",
                  style: s
                }), Jt.createElement("input", Ku({}, wh(m, {
                  aria: !0,
                  data: !0
                }), {
                  id: a,
                  type: "file",
                  ref: this.saveFileInput,
                  onClick: function(e) {
                    return e.stopPropagation()
                  },
                  key: this.state.uid,
                  style: {
                    display: "none"
                  },
                  accept: c
                }, _, {
                  multiple: l,
                  onChange: this.onChange
                }, null != u ? {
                  capture: u
                } : {})), h)
              }
            }]), n
          }(fe),
          Rh = Ih;

        function jh() {}
        var Nh = function(e) {
          nh(n, e);
          var t = ah(n);

          function n() {
            var e;
            Zu(this, n);
            for (var r = arguments.length, i = new Array(r), o = 0; o < r; o++) i[o] = arguments[o];
            return (e = t.call.apply(t, [this].concat(i))).uploader = void 0, e.saveUploader = function(t) {
              e.uploader = t
            }, e
          }
          return eh(n, [{
            key: "abort",
            value: function(e) {
              this.uploader.abort(e)
            }
          }, {
            key: "render",
            value: function() {
              return Jt.createElement(Rh, Ku({}, this.props, {
                ref: this.saveUploader
              }))
            }
          }]), n
        }(fe);
        Nh.defaultProps = {
          component: "span",
          prefixCls: "rc-upload",
          data: {},
          headers: {},
          name: "file",
          multipart: !1,
          onStart: jh,
          onError: jh,
          onSuccess: jh,
          multiple: !1,
          beforeUpload: null,
          customRequest: null,
          withCredentials: !1,
          openFileDialogOnClick: !0
        };
        var Lh, Fh = Nh;

        function Bh() {
          return Bh = Object.assign ? Object.assign.bind() : function(e) {
            for (var t = 1; t < arguments.length; t++) {
              var n = arguments[t];
              for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r])
            }
            return e
          }, Bh.apply(this, arguments)
        }
        var zh, Hh, Uh, Wh, Vh, Xh, Gh, Yh, qh, Kh = e => ue("svg", Bh({
          width: 16,
          height: 16,
          fill: "none",
          xmlns: "http://www.w3.org/2000/svg"
        }, e), Lh || (Lh = ue("path", {
          fillRule: "evenodd",
          clipRule: "evenodd",
          d: "M9.429 1.429a1.429 1.429 0 1 0-2.858 0V6.57H1.43a1.429 1.429 0 1 0 0 2.857H6.57v5.143a1.429 1.429 0 1 0 2.858 0V9.428h5.142a1.429 1.429 0 1 0 0-2.857H9.43V1.43Z",
          fill: "#333",
          fillOpacity: .8
        })));

        function Zh() {
          return Zh = Object.assign ? Object.assign.bind() : function(e) {
            for (var t = 1; t < arguments.length; t++) {
              var n = arguments[t];
              for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r])
            }
            return e
          }, Zh.apply(this, arguments)
        }
        var $h, Jh, Qh = e => ue("svg", Zh({
          width: 81,
          height: 80,
          fill: "none",
          xmlns: "http://www.w3.org/2000/svg"
        }, e), zh || (zh = ue("rect", {
          x: 4.5,
          y: 22.576,
          width: 61.538,
          height: 47.724,
          rx: 4,
          transform: "rotate(-8 4.5 22.576)",
          fill: "#EBECED"
        })), Hh || (Hh = ue("g", {
          filter: "url(#uploadLargeAdd_svg__a)"
        }, ue("rect", {
          x: 8.256,
          y: 19.391,
          width: 60.308,
          height: 46.769,
          rx: 4,
          fill: "#fff"
        }))), Uh || (Uh = ue("rect", {
          x: 10.718,
          y: 21.852,
          width: 55.385,
          height: 41.846,
          rx: 3,
          fill: "url(#uploadLargeAdd_svg__b)"
        })), Wh || (Wh = ue("path", {
          d: "M35.94 63.698H12.563a1.846 1.846 0 0 1-1.846-1.846v-5.754l7.778-7.327a2.462 2.462 0 0 1 3.48.104l13.963 14.823Z",
          fill: "url(#uploadLargeAdd_svg__c)"
        })), Vh || (Vh = ue("path", {
          d: "M66.102 55.508v6.344c0 1.02-.826 1.847-1.846 1.847H20.807l18.36-23.216a4.923 4.923 0 0 1 6.914-.808l20.021 15.833Z",
          fill: "url(#uploadLargeAdd_svg__d)"
        })), Xh || (Xh = ue("circle", {
          cx: 18.718,
          cy: 30.468,
          r: 3.692,
          fill: "#D3D3D3"
        })), Gh || (Gh = ue("circle", {
          cx: 67.333,
          cy: 19.391,
          r: 9.231,
          fill: "#333",
          fillOpacity: .9
        })), Yh || (Yh = ue("path", {
          d: "M70.176 18.683H68.04v-2.135a.707.707 0 1 0-1.414 0v2.135H64.49a.707.707 0 1 0 0 1.415h2.136v2.135a.707.707 0 1 0 1.414 0v-2.135h2.136a.707.707 0 1 0 0-1.415Z",
          fill: "#fff"
        })), qh || (qh = ue("defs", null, ue("linearGradient", {
          id: "uploadLargeAdd_svg__b",
          x1: 38.41,
          y1: 21.852,
          x2: 38.41,
          y2: 63.698,
          gradientUnits: "userSpaceOnUse"
        }, ue("stop", {
          stopColor: "#F5F5F5"
        }), ue("stop", {
          offset: 1,
          stopColor: "#F1F1F1"
        }), ue("stop", {
          offset: 1,
          stopColor: "#F1F1F1"
        })), ue("linearGradient", {
          id: "uploadLargeAdd_svg__c",
          x1: 27.096,
          y1: 45.66,
          x2: 27.096,
          y2: 69.852,
          gradientUnits: "userSpaceOnUse"
        }, ue("stop", {
          stopColor: "#E2E2E2"
        }), ue("stop", {
          offset: 1,
          stopColor: "#E1E1E1"
        })), ue("linearGradient", {
          id: "uploadLargeAdd_svg__d",
          x1: 41.695,
          y1: 42.438,
          x2: 41.695,
          y2: 69.792,
          gradientUnits: "userSpaceOnUse"
        }, ue("stop", {
          offset: 0,
          stopColor: "#E5E5E6"
        }), ue("stop", {
          offset: 1,
          stopColor: "#D3D3D3"
        })), ue("filter", {
          id: "uploadLargeAdd_svg__a",
          x: .256,
          y: 15.391,
          width: 76.308,
          height: 62.769,
          filterUnits: "userSpaceOnUse",
          colorInterpolationFilters: "sRGB"
        }, ue("feFlood", {
          floodOpacity: 0,
          result: "BackgroundImageFix"
        }), ue("feColorMatrix", {
          in: "SourceAlpha",
          values: "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0",
          result: "hardAlpha"
        }), ue("feOffset", {
          dy: 4
        }), ue("feGaussianBlur", {
          stdDeviation: 4
        }), ue("feComposite", {
          in2: "hardAlpha",
          operator: "out"
        }), ue("feColorMatrix", {
          values: "0 0 0 0 0.133333 0 0 0 0 0.133333 0 0 0 0 0.133333 0 0 0 0.03 0"
        }), ue("feBlend", {
          in2: "BackgroundImageFix",
          result: "effect1_dropShadow_2338_55382"
        }), ue("feBlend", {
          in: "SourceGraphic",
          in2: "effect1_dropShadow_2338_55382",
          result: "shape"
        })))));

        function ep() {
          return ep = Object.assign ? Object.assign.bind() : function(e) {
            for (var t = 1; t < arguments.length; t++) {
              var n = arguments[t];
              for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r])
            }
            return e
          }, ep.apply(this, arguments)
        }
        var tp, np = e => ue("svg", ep({
            width: 24,
            height: 24,
            fill: "none",
            xmlns: "http://www.w3.org/2000/svg"
          }, e), $h || ($h = ue("rect", {
            width: 24,
            height: 24,
            rx: 12,
            fill: "#E9ECEF"
          })), Jh || (Jh = ue("path", {
            d: "m8.667 8.667 6.667 6.667M8.667 15.334l6.667-6.667",
            stroke: "#333",
            strokeWidth: 1.6,
            strokeLinecap: "round",
            strokeLinejoin: "round"
          }))),
          rp = je({});

        function ip() {
          return ip = Object.assign ? Object.assign.bind() : function(e) {
            for (var t = 1; t < arguments.length; t++) {
              var n = arguments[t];
              for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r])
            }
            return e
          }, ip.apply(this, arguments)
        }
        var op = e => ue("svg", ip({
          xmlns: "http://www.w3.org/2000/svg",
          width: 100,
          height: 100,
          xmlSpace: "preserve"
        }, e), ue("circle", {
          fill: "none",
          stroke: "#D2D3D3",
          strokeWidth: 4,
          cx: 50,
          cy: 50,
          r: 21,
          style: {
            opacity: .5
          }
        }), tp || (tp = ue("path", {
          fill: "#707070",
          d: "M73 50c0-12.7-10.3-23-23-23S27 37.3 27 50m3.9 0c0-10.5 8.5-19.1 19.1-19.1S69.1 39.5 69.1 50"
        }, ue("animateTransform", {
          attributeName: "transform",
          attributeType: "XML",
          type: "rotate",
          dur: "1s",
          from: "0 50 50",
          to: "360 50 50",
          repeatCount: "indefinite"
        }))));

        function ap(e, t) {
          return function(e) {
            if (Array.isArray(e)) return e
          }(e) || function(e, t) {
            var n = null == e ? null : "undefined" != typeof Symbol && e[Symbol.iterator] || e["@@iterator"];
            if (null != n) {
              var r, i, o, a, s = [],
                l = !0,
                c = !1;
              try {
                if (o = (n = n.call(e)).next, 0 === t) {
                  if (Object(n) !== n) return;
                  l = !1
                } else
                  for (; !(l = (r = o.call(n)).done) && (s.push(r.value), s.length !== t); l = !0);
              } catch (e) {
                c = !0, i = e
              } finally {
                try {
                  if (!l && null != n.return && (a = n.return(), Object(a) !== a)) return
                } finally {
                  if (c) throw i
                }
              }
              return s
            }
          }(e, t) || dh(e, t) || function() {
            throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")
          }()
        }

        function sp(e) {
          return e instanceof HTMLElement ? e : e instanceof Jt.Component ? Jt.findDOMNode(e) : null
        }

        function lp(e, t, n) {
          var r = Je({});
          return "value" in r.current && !n(r.current.condition, t) || (r.current.value = e(), r.current.condition = t), r.current.value
        }

        function cp(e, t) {
          "function" == typeof e ? e(t) : "object" === $u(e) && e && "current" in e && (e.current = t)
        }

        function up() {
          for (var e = arguments.length, t = new Array(e), n = 0; n < e; n++) t[n] = arguments[n];
          var r = t.filter((function(e) {
            return e
          }));
          return r.length <= 1 ? r[0] : function(e) {
            t.forEach((function(t) {
              cp(t, e)
            }))
          }
        }

        function hp(e) {
          var t, n, r = an.exports.isMemo(e) ? e.type.type : e.type;
          return !!("function" != typeof r || null !== (t = r.prototype) && void 0 !== t && t.render) && !!("function" != typeof e || null !== (n = e.prototype) && void 0 !== n && n.render)
        }

        function pp() {
          return !("undefined" == typeof window || !window.document || !window.document.createElement)
        }

        function dp(e, t) {
          var n = {};
          return n[e.toLowerCase()] = t.toLowerCase(), n["Webkit".concat(e)] = "webkit".concat(t), n["Moz".concat(e)] = "moz".concat(t), n["ms".concat(e)] = "MS".concat(t), n["O".concat(e)] = "o".concat(t.toLowerCase()), n
        }
        var fp, gp, mp, vp = (fp = pp(), gp = "undefined" != typeof window ? window : {}, mp = {
            animationend: dp("Animation", "AnimationEnd"),
            transitionend: dp("Transition", "TransitionEnd")
          }, fp && ("AnimationEvent" in gp || delete mp.animationend.animation, "TransitionEvent" in gp || delete mp.transitionend.transition), mp),
          _p = {};
        if (pp()) {
          var bp = document.createElement("div");
          _p = bp.style
        }
        var yp = {};

        function wp(e) {
          if (yp[e]) return yp[e];
          var t = vp[e];
          if (t)
            for (var n = Object.keys(t), r = n.length, i = 0; i < r; i += 1) {
              var o = n[i];
              if (Object.prototype.hasOwnProperty.call(t, o) && o in _p) return yp[e] = t[o], yp[e]
            }
          return ""
        }
        var xp = wp("animationend"),
          kp = wp("transitionend"),
          Cp = !(!xp || !kp),
          Sp = xp || "animationend",
          Ep = kp || "transitionend";

        function Tp(e, t) {
          if (!e) return null;
          if ("object" === $u(e)) {
            var n = t.replace(/-\w/g, (function(e) {
              return e[1].toUpperCase()
            }));
            return e[n]
          }
          return "".concat(e, "-").concat(t)
        }
        var Op = "none",
          Ap = "appear",
          Pp = "enter",
          Mp = "leave",
          Dp = "none",
          Ip = "prepare",
          Rp = "start",
          jp = "active",
          Np = "end";

        function Lp(e) {
          var t = Je(!1),
            n = ap(qe(e), 2),
            r = n[0],
            i = n[1];
          return Ze((function() {
            return t.current = !1,
              function() {
                t.current = !0
              }
          }), []), [r, function(e, n) {
            n && t.current || i(e)
          }]
        }
        var Fp = function(e) {
            return +setTimeout(e, 16)
          },
          Bp = function(e) {
            return clearTimeout(e)
          };
        "undefined" != typeof window && "requestAnimationFrame" in window && (Fp = function(e) {
          return window.requestAnimationFrame(e)
        }, Bp = function(e) {
          return window.cancelAnimationFrame(e)
        });
        var zp = 0,
          Hp = new Map;

        function Up(e) {
          Hp.delete(e)
        }
        var Wp = function(e) {
          var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 1,
            n = zp += 1;

          function r(t) {
            if (0 === t) Up(n), e();
            else {
              var i = Fp((function() {
                r(t - 1)
              }));
              Hp.set(n, i)
            }
          }
          return r(t), n
        };
        Wp.cancel = function(e) {
          var t = Hp.get(e);
          return Up(t), Bp(t)
        };
        var Vp = Wp,
          Xp = pp() ? $e : Ze,
          Gp = [Ip, Rp, jp, Np];

        function Yp(e) {
          return e === jp || e === Np
        }
        var qp = function(e, t) {
          var n = ap(Lp(Dp), 2),
            r = n[0],
            i = n[1],
            o = function() {
              var e = Je(null);

              function t() {
                Vp.cancel(e.current)
              }
              return Ze((function() {
                return function() {
                  t()
                }
              }), []), [function n(r) {
                var i = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 2;
                t();
                var o = Vp((function() {
                  i <= 1 ? r({
                    isCanceled: function() {
                      return o !== e.current
                    }
                  }) : n(r, i - 1)
                }));
                e.current = o
              }, t]
            }(),
            a = ap(o, 2),
            s = a[0],
            l = a[1];
          return Xp((function() {
            if (r !== Dp && r !== Np) {
              var e = Gp.indexOf(r),
                n = Gp[e + 1],
                o = t(r);
              false === o ? i(n, !0) : s((function(e) {
                function t() {
                  e.isCanceled() || i(n, !0)
                }!0 === o ? t() : Promise.resolve(o).then(t)
              }))
            }
          }), [e, r]), Ze((function() {
            return function() {
              l()
            }
          }), []), [function() {
            i(Ip, !0)
          }, r]
        };

        function Kp(e, t, n, r) {
          var i = r.motionEnter,
            o = void 0 === i || i,
            a = r.motionAppear,
            s = void 0 === a || a,
            l = r.motionLeave,
            c = void 0 === l || l,
            u = r.motionDeadline,
            h = r.motionLeaveImmediately,
            p = r.onAppearPrepare,
            d = r.onEnterPrepare,
            f = r.onLeavePrepare,
            g = r.onAppearStart,
            m = r.onEnterStart,
            v = r.onLeaveStart,
            _ = r.onAppearActive,
            b = r.onEnterActive,
            y = r.onLeaveActive,
            w = r.onAppearEnd,
            x = r.onEnterEnd,
            k = r.onLeaveEnd,
            C = r.onVisibleChanged,
            S = ap(Lp(), 2),
            E = S[0],
            T = S[1],
            O = ap(Lp(Op), 2),
            A = O[0],
            P = O[1],
            M = ap(Lp(null), 2),
            D = M[0],
            I = M[1],
            R = Je(!1),
            j = Je(null);

          function N() {
            return n()
          }
          var L = Je(!1);

          function F(e) {
            var t = N();
            if (!e || e.deadline || e.target === t) {
              var n, r = L.current;
              A === Ap && r ? n = null == w ? void 0 : w(t, e) : A === Pp && r ? n = null == x ? void 0 : x(t, e) : A === Mp && r && (n = null == k ? void 0 : k(t, e)), A !== Op && r && !1 !== n && (P(Op, !0), I(null, !0))
            }
          }
          var B = function(e) {
              var t = Je(),
                n = Je(e);
              n.current = e;
              var r = tt((function(e) {
                n.current(e)
              }), []);

              function i(e) {
                e && (e.removeEventListener(Ep, r), e.removeEventListener(Sp, r))
              }
              return Ze((function() {
                return function() {
                  i(t.current)
                }
              }), []), [function(e) {
                t.current && t.current !== e && i(t.current), e && e !== t.current && (e.addEventListener(Ep, r), e.addEventListener(Sp, r), t.current = e)
              }, i]
            }(F),
            z = ap(B, 1)[0],
            H = et((function() {
              var e, t, n;
              switch (A) {
                case Ap:
                  return sh(e = {}, Ip, p), sh(e, Rp, g), sh(e, jp, _), e;
                case Pp:
                  return sh(t = {}, Ip, d), sh(t, Rp, m), sh(t, jp, b), t;
                case Mp:
                  return sh(n = {}, Ip, f), sh(n, Rp, v), sh(n, jp, y), n;
                default:
                  return {}
              }
            }), [A]),
            U = ap(qp(A, (function(e) {
              if (e === Ip) {
                var t = H.prepare;
                return !!t && t(N())
              }
              var n;
              V in H && I((null === (n = H[V]) || void 0 === n ? void 0 : n.call(H, N(), null)) || null);
              return V === jp && (z(N()), u > 0 && (clearTimeout(j.current), j.current = setTimeout((function() {
                F({
                  deadline: !0
                })
              }), u))), true
            })), 2),
            W = U[0],
            V = U[1],
            X = Yp(V);
          L.current = X, Xp((function() {
            T(t);
            var n, r = R.current;
            (R.current = !0, e) && (!r && t && s && (n = Ap), r && t && o && (n = Pp), (r && !t && c || !r && h && !t && c) && (n = Mp), n && (P(n), W()))
          }), [t]), Ze((function() {
            (A === Ap && !s || A === Pp && !o || A === Mp && !c) && P(Op)
          }), [s, o, c]), Ze((function() {
            return function() {
              R.current = !1, clearTimeout(j.current)
            }
          }), []);
          var G = Je(!1);
          Ze((function() {
            E && (G.current = !0), void 0 !== E && A === Op && ((G.current || E) && (null == C || C(E)), G.current = !0)
          }), [E, A]);
          var Y = D;
          return H.prepare && V === Rp && (Y = mh({
            transition: "none"
          }, Y)), [A, V, Y, null != E ? E : t]
        }
        var Zp = function(e) {
            nh(n, e);
            var t = ah(n);

            function n() {
              return Zu(this, n), t.apply(this, arguments)
            }
            return eh(n, [{
              key: "render",
              value: function() {
                return this.props.children
              }
            }]), n
          }(fe),
          $p = Zp;
        var Jp = function(e) {
            var t = e;

            function n(e) {
              return !(!e.motionName || !t)
            }
            "object" === $u(e) && (t = e.transitionSupport);
            var r = mt((function(e, t) {
              var r = e.visible,
                i = void 0 === r || r,
                o = e.removeOnLeave,
                a = void 0 === o || o,
                s = e.forceRender,
                l = e.children,
                c = e.motionName,
                u = e.leavedClassName,
                h = e.eventProps,
                p = n(e),
                d = Je(),
                f = Je();
              var g = ap(Kp(p, i, (function() {
                  try {
                    return d.current instanceof HTMLElement ? d.current : sp(f.current)
                  } catch (e) {
                    return null
                  }
                }), e), 4),
                m = g[0],
                v = g[1],
                _ = g[2],
                b = g[3],
                y = Je(b);
              b && (y.current = !0);
              var w, x = tt((function(e) {
                  d.current = e, cp(t, e)
                }), [t]),
                k = mh(mh({}, h), {}, {
                  visible: i
                });
              if (l)
                if (m !== Op && n(e)) {
                  var C, S;
                  v === Ip ? S = "prepare" : Yp(v) ? S = "active" : v === Rp && (S = "start"), w = l(mh(mh({}, k), {}, {
                    className: ul(Tp(c, m), (C = {}, sh(C, Tp(c, "".concat(m, "-").concat(S)), S), sh(C, c, "string" == typeof c), C)),
                    style: _
                  }), x)
                } else w = b ? l(mh({}, k), x) : !a && y.current && u ? l(mh(mh({}, k), {}, {
                  className: u
                }), x) : s || !a && !u ? l(mh(mh({}, k), {}, {
                  style: {
                    display: "none"
                  }
                }), x) : null;
              else w = null;
              Xt(w) && hp(w) && (w.ref || (w = Gt(w, {
                ref: x
              })));
              return ue($p, {
                ref: f
              }, w)
            }));
            return r.displayName = "CSSMotion", r
          }(Cp),
          Qp = "add",
          ed = "keep",
          td = "remove",
          nd = "removed";

        function rd(e) {
          var t;
          return mh(mh({}, t = e && "object" === $u(e) && "key" in e ? e : {
            key: e
          }), {}, {
            key: String(t.key)
          })
        }

        function id() {
          var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : [];
          return e.map(rd)
        }

        function od() {
          var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : [],
            t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : [],
            n = [],
            r = 0,
            i = t.length,
            o = id(e),
            a = id(t);
          o.forEach((function(e) {
            for (var t = !1, o = r; o < i; o += 1) {
              var s = a[o];
              if (s.key === e.key) {
                r < o && (n = n.concat(a.slice(r, o).map((function(e) {
                  return mh(mh({}, e), {}, {
                    status: Qp
                  })
                }))), r = o), n.push(mh(mh({}, s), {}, {
                  status: ed
                })), r += 1, t = !0;
                break
              }
            }
            t || n.push(mh(mh({}, e), {}, {
              status: td
            }))
          })), r < i && (n = n.concat(a.slice(r).map((function(e) {
            return mh(mh({}, e), {}, {
              status: Qp
            })
          }))));
          var s = {};
          n.forEach((function(e) {
            var t = e.key;
            s[t] = (s[t] || 0) + 1
          }));
          var l = Object.keys(s).filter((function(e) {
            return s[e] > 1
          }));
          return l.forEach((function(e) {
            (n = n.filter((function(t) {
              var n = t.key,
                r = t.status;
              return n !== e || r !== td
            }))).forEach((function(t) {
              t.key === e && (t.status = ed)
            }))
          })), n
        }
        var ad = ["component", "children", "onVisibleChanged", "onAllRemoved"],
          sd = ["status"],
          ld = ["eventProps", "visible", "children", "motionName", "motionAppear", "motionEnter", "motionLeave", "motionLeaveImmediately", "motionDeadline", "removeOnLeave", "leavedClassName", "onAppearStart", "onAppearActive", "onAppearEnd",
            "onEnterStart", "onEnterActive", "onEnterEnd", "onLeaveStart", "onLeaveActive", "onLeaveEnd"
          ];
        var cd = function(e) {
            var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : Jp,
              n = function(e) {
                nh(r, e);
                var n = ah(r);

                function r() {
                  var e;
                  Zu(this, r);
                  for (var t = arguments.length, i = new Array(t), o = 0; o < t; o++) i[o] = arguments[o];
                  return sh(ih(e = n.call.apply(n, [this].concat(i))), "state", {
                    keyEntities: []
                  }), sh(ih(e), "removeKey", (function(t) {
                    var n = e.state.keyEntities.map((function(e) {
                      return e.key !== t ? e : mh(mh({}, e), {}, {
                        status: nd
                      })
                    }));
                    return e.setState({
                      keyEntities: n
                    }), n.filter((function(e) {
                      return e.status !== nd
                    })).length
                  })), e
                }
                return eh(r, [{
                  key: "render",
                  value: function() {
                    var e = this,
                      n = this.state.keyEntities,
                      r = this.props,
                      i = r.component,
                      o = r.children,
                      a = r.onVisibleChanged,
                      s = r.onAllRemoved,
                      l = lh(r, ad),
                      c = i || de,
                      u = {};
                    return ld.forEach((function(e) {
                      u[e] = l[e], delete l[e]
                    })), delete l.keys, ue(c, l, n.map((function(n) {
                      var r = n.status,
                        i = lh(n, sd),
                        l = r === Qp || r === ed;
                      return ue(t, Ku({}, u, {
                        key: i.key,
                        visible: l,
                        eventProps: i,
                        onVisibleChanged: function(t) {
                          (null == a || a(t, {
                            key: i.key
                          }), t) || 0 === e.removeKey(i.key) && s && s()
                        }
                      }), o)
                    })))
                  }
                }], [{
                  key: "getDerivedStateFromProps",
                  value: function(e, t) {
                    var n = e.keys,
                      r = t.keyEntities,
                      i = id(n);
                    return {
                      keyEntities: od(r, i).filter((function(e) {
                        var t = r.find((function(t) {
                          var n = t.key;
                          return e.key === n
                        }));
                        return !t || t.status !== nd || e.status !== td
                      }))
                    }
                  }
                }]), r
              }(fe);
            return sh(n, "defaultProps", {
              component: "div"
            }), n
          }(Cp),
          ud = mt((function(e, t) {
            var n = e.prefixCls,
              r = e.style,
              i = e.className,
              o = e.duration,
              a = void 0 === o ? 4.5 : o,
              s = e.eventKey,
              l = e.content,
              c = e.closable,
              u = e.closeIcon,
              h = void 0 === u ? "x" : u,
              p = e.props,
              d = e.onClick,
              f = e.onNoticeClose,
              g = e.times,
              m = ap(qe(!1), 2),
              v = m[0],
              _ = m[1],
              b = function() {
                f(s)
              };
            Ze((function() {
              if (!v && a > 0) {
                var e = setTimeout((function() {
                  b()
                }), 1e3 * a);
                return function() {
                  clearTimeout(e)
                }
              }
            }), [a, v, g]);
            var y = "".concat(n, "-notice");
            return ue("div", Ku({}, p, {
              ref: t,
              className: ul(y, i, sh({}, "".concat(y, "-closable"), c)),
              style: r,
              onMouseEnter: function() {
                _(!0)
              },
              onMouseLeave: function() {
                _(!1)
              },
              onClick: d
            }), ue("div", {
              className: "".concat(y, "-content")
            }, l), c && ue("a", {
              tabIndex: 0,
              className: "".concat(y, "-close"),
              onClick: function(e) {
                e.preventDefault(), e.stopPropagation(), b()
              }
            }, h))
          })),
          hd = ud,
          pd = mt((function(e, t) {
            var n = e.prefixCls,
              r = void 0 === n ? "rc-notification" : n,
              i = e.container,
              o = e.motion,
              a = e.maxCount,
              s = e.className,
              l = e.style,
              c = e.onAllRemoved,
              u = ap(qe([]), 2),
              h = u[0],
              p = u[1],
              d = function(e) {
                var t, n = h.find((function(t) {
                  return t.key === e
                }));
                null == n || null === (t = n.onClose) || void 0 === t || t.call(n), p((function(t) {
                  return t.filter((function(t) {
                    return t.key !== e
                  }))
                }))
              };
            Qe(t, (function() {
              return {
                open: function(e) {
                  p((function(t) {
                    var n, r = fh(t),
                      i = r.findIndex((function(t) {
                        return t.key === e.key
                      })),
                      o = mh({}, e);
                    i >= 0 ? (o.times = ((null === (n = t[i]) || void 0 === n ? void 0 : n.times) || 0) + 1, r[i] = o) : (o.times = 0, r.push(o));
                    return a > 0 && r.length > a && (r = r.slice(-a)), r
                  }))
                },
                close: function(e) {
                  d(e)
                },
                destroy: function() {
                  p([])
                }
              }
            }));
            var f = ap(qe({}), 2),
              g = f[0],
              m = f[1];
            Ze((function() {
              var e = {};
              h.forEach((function(t) {
                var n = t.placement,
                  r = void 0 === n ? "topRight" : n;
                r && (e[r] = e[r] || [], e[r].push(t))
              })), Object.keys(g).forEach((function(t) {
                e[t] = e[t] || []
              })), m(e)
            }), [h]);
            var v = Je(!1);
            return Ze((function() {
              Object.keys(g).length > 0 ? v.current = !0 : v.current && (null == c || c(), v.current = !1)
            }), [g]), i ? Ot(ue(de, null, Object.keys(g).map((function(e) {
              var t = g[e].map((function(e) {
                  return {
                    config: e,
                    key: e.key
                  }
                })),
                n = "function" == typeof o ? o(e) : o;
              return ue(cd, Ku({
                key: e,
                className: ul(r, "".concat(r, "-").concat(e), null == s ? void 0 : s(e)),
                style: null == l ? void 0 : l(e),
                keys: t,
                motionAppear: !0
              }, n, {
                onAllRemoved: function() {
                  ! function(e) {
                    m((function(t) {
                      var n = mh({}, t);
                      return (n[e] || []).length || delete n[e], n
                    }))
                  }(e)
                }
              }), (function(e, t) {
                var n = e.config,
                  i = e.className,
                  o = e.style,
                  a = n.key,
                  s = n.times,
                  l = n.className,
                  c = n.style;
                return ue(hd, Ku({}, n, {
                  ref: t,
                  prefixCls: r,
                  className: ul(i, l),
                  style: mh(mh({}, o), c),
                  times: s,
                  key: a,
                  eventKey: a,
                  onNoticeClose: d
                }))
              }))
            }))), i) : null
          })),
          dd = pd,
          fd = ["getContainer", "motion", "prefixCls", "maxCount", "className", "style", "onAllRemoved"],
          gd = function() {
            return document.body
          },
          md = 0;

        function vd() {
          for (var e = {}, t = arguments.length, n = new Array(t), r = 0; r < t; r++) n[r] = arguments[r];
          return n.forEach((function(t) {
            t && Object.keys(t).forEach((function(n) {
              var r = t[n];
              void 0 !== r && (e[n] = r)
            }))
          })), e
        }
        var _d = "common-module_flex_center_y__ZWb6u",
          bd = "common-module_toast__WjP9V",
          yd = "common-module_app-parakeet-dialog__UWDmu",
          wd = "common-module_ap-dialog-title__-GIOw",
          xd = "common-module_ap-dialog-body__5yegi",
          kd = "common-module_app-dialog-footer__qYGkd",
          Cd = "common-module_ap-button__RhZvx",
          Sd = "common-module_app-parakeet-dialog--wrapper__YIL3t",
          Ed = "common-module_ap-button-no__f3AQV",
          Td = "common-module_ap-button-ok__-Dglc";
        c(
        ".common-module_flex__7RXvG{display:flex}.common-module_flex_center_y__ZWb6u{align-items:center;display:flex}.common-module_toast__WjP9V{background:rgba(51,51,51,.9)!important;border-radius:8px;display:inline-block!important;max-width:263px;padding:20px 24px!important;right:50%!important;text-align:center;transform:translate(50%,120px);width:-webkit-max-content!important;width:max-content!important;z-index:10000!important}.common-module_toast__WjP9V .rc-notification-notice{background:none!important;box-shadow:none;margin:0;padding:0}.common-module_toast__WjP9V .rc-notification-notice-content{background:none!important;color:#fff;font-size:14px;font-weight:500;line-height:18px;padding:0}.common-module_app-parakeet-dialog__UWDmu .rc-dialog-body{padding:24px}.common-module_ap-dialog-title__-GIOw{color:#222;font-size:24px;font-weight:600;line-height:130%}.common-module_ap-dialog-body__5yegi{color:#222;font-family:inherit;font-size:15px;font-weight:400;line-height:130%;margin-top:16px}.common-module_app-dialog-footer__qYGkd{display:flex;justify-content:flex-end;margin-top:40px}.common-module_ap-button__RhZvx{border:1px solid rgba(51,51,51,.12);border-radius:6px;cursor:pointer;font-family:inherit;font-size:15px;min-width:84px;outline:none!important;padding:8px 16px}.common-module_app-parakeet-dialog--wrapper__YIL3t{align-items:center;display:flex;justify-content:center}.common-module_ap-button-no__f3AQV{background:#fff;color:#333}.common-module_ap-button-ok__-Dglc{background:#333;color:#fff;margin-left:12px}.common-module_app-parakeet-dialog__UWDmu .rc-dialog-close{opacity:1!important;padding:0!important;top:24px}@media (min-width:768px){.common-module_app-parakeet-dialog__UWDmu{width:580px!important}.common-module_app-parakeet-dialog__UWDmu .rc-dialog-content{border-radius:8px}}@media (max-width:767px){.common-module_app-parakeet-dialog__UWDmu{margin:0 16px!important;width:100%!important}.common-module_app-parakeet-dialog__UWDmu .rc-dialog-body{padding:16px}.common-module_ap-button__RhZvx{font-size:15px}.common-module_app-parakeet-dialog__UWDmu .rc-dialog-close{right:16px!important;top:16px}.common-module_toast__WjP9V{left:50%!important;top:50%!important;transform:translateY(-50%) translateX(-50%)!important}}");
        var Od = () => {
          var [e, t] = function() {
            var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
              t = e.getContainer,
              n = void 0 === t ? gd : t,
              r = e.motion,
              i = e.prefixCls,
              o = e.maxCount,
              a = e.className,
              s = e.style,
              l = e.onAllRemoved,
              c = lh(e, fd),
              u = ap(qe(), 2),
              h = u[0],
              p = u[1],
              d = Je(),
              f = ue(dd, {
                container: h,
                ref: d,
                prefixCls: i,
                motion: r,
                maxCount: o,
                className: a,
                style: s,
                onAllRemoved: l
              }),
              g = ap(qe([]), 2),
              m = g[0],
              v = g[1],
              _ = et((function() {
                return {
                  open: function(e) {
                    var t = vd(c, e);
                    null !== t.key && void 0 !== t.key || (t.key = "rc-notification-".concat(md), md += 1), v((function(e) {
                      return [].concat(fh(e), [{
                        type: "open",
                        config: t
                      }])
                    }))
                  },
                  close: function(e) {
                    v((function(t) {
                      return [].concat(fh(t), [{
                        type: "close",
                        key: e
                      }])
                    }))
                  },
                  destroy: function() {
                    v((function(e) {
                      return [].concat(fh(e), [{
                        type: "destroy"
                      }])
                    }))
                  }
                }
              }), []);
            return Ze((function() {
              p(n())
            })), Ze((function() {
              d.current && m.length && (m.forEach((function(e) {
                switch (e.type) {
                  case "open":
                    d.current.open(e.config);
                    break;
                  case "close":
                    d.current.close(e.key);
                    break;
                  case "destroy":
                    d.current.destroy()
                }
              })), v([]))
            }), [m]), [_, f]
          }({
            duration: 3,
            className: () => "".concat(bd, " notranslate")
          });
          return [e, t]
        };

        function Ad(e, t) {
          var n, r;
          return e && t ? (n = "" + e + t[0].toUpperCase() + t.slice(1), r = e + "-" + t) : (n = e || t, r = e || t), {
            camelCase: n,
            snakeCase: r
          }
        }

        function Pd(e) {
          return /^blob:/.test(e)
        }

        function Md(e) {
          return Pd(e) || function(e) {
            return /^data:/.test(e)
          }(e)
        }

        function Dd(e) {
          if (Md(e)) return !1;
          var t = window.location,
            n = /(\w+:)?(?:\/\/)([\w.-]+)?(?::(\d+))?\/?/.exec(e) || [],
            r = {
              protocol: n[1] || "",
              host: n[2] || "",
              port: n[3] || ""
            },
            i = function(e) {
              return e.port || ("http" === (e.protocol || t.protocol) ? 80 : 433)
            };
          return !(!r.protocol && !r.host && !r.port || Boolean(r.protocol && r.protocol == t.protocol && r.host && r.host == t.host && r.host && i(r) == i(t)))
        }

        function Id(e) {
          return "function" == typeof e
        }

        function Rd(e) {
          return void 0 === e
        }
        var jd = function(e) {
          return null !== e && "object" == typeof e
        };

        function Nd(e, t, n) {
          void 0 === n && (n = {});
          var r = {};
          return jd(e) ? (Object.keys(t).forEach((function(i) {
            Rd(e[i]) ? r[i] = t[i] : jd(t[i]) ? jd(e[i]) ? r[i] = Nd(e[i], t[i], n[i]) : r[i] = e[i] ? t[i] : n[i] : !0 === t[i] || !1 === t[i] ? r[i] = Boolean(e[i]) : r[i] = e[i]
          })), r) : e ? t : n
        }

        function Ld(e) {
          var t = Number(e);
          return Number.isNaN(t) ? e : t
        }

        function Fd(e) {
          return !0 === e || !1 === e
        }

        function Bd(e) {
          return "number" == typeof e
        }

        function zd(e) {
          return e != e
        }

        function Hd(e) {
          return Bd(e) && !zd(e) || function(e) {
            return "string" == typeof e
          }(e) && !Number.isNaN(parseFloat(e)) && isFinite(parseFloat(e))
        }

        function Ud(e, t) {
          return Math.sqrt(Math.pow(e.left - t.left, 2) + Math.pow(e.top - t.top, 2))
        }

        function Wd(e, t, n) {
          return void 0 === n && (n = .001), Math.abs(t - e) < n
        }

        function Vd(e, t, n) {
          return !Wd(e, t, n) && e > t
        }

        function Xd(e, t, n) {
          return !Wd(e, t, n) && e < t
        }

        function Gd(e) {
          return new Promise((function(t) {
            setTimeout((function() {
              t()
            }), e)
          }))
        }

        function Yd(e) {
          if (!jd(e)) return e;
          var t = {};
          return Array.isArray(e) ? t = e.map((function(e) {
            return Yd(e)
          })) : Object.keys(e).forEach((function(n) {
            return t[n] = Yd(e[n])
          })), t
        }

        function qd(e, t, n) {
          if (void 0 === n && (n = .001), Bd(e) && Bd(t) && Wd(e, t, n)) return !0;
          if (e === t) return !0;
          if (e && t && "object" == typeof e && "object" == typeof t) {
            if (e.constructor !== t.constructor) return !1;
            var r, i = void 0;
            if (Array.isArray(e)) {
              if ((r = e.length) != t.length) return !1;
              for (i = r; 0 != i--;)
                if (!qd(e[i], t[i], n)) return !1;
              return !0
            }
            if (e.valueOf !== Object.prototype.valueOf) return e.valueOf() === t.valueOf();
            if (e.toString !== Object.prototype.toString) return e.toString() === t.toString();
            var o = Object.keys(e);
            if ((r = o.length) !== Object.keys(t).length) return !1;
            for (i = r; 0 != i--;)
              if (!Object.prototype.hasOwnProperty.call(t, o[i])) return !1;
            for (i = r; 0 != i--;) {
              var a = o[i];
              if (!qd(e[a], t[a], n)) return !1
            }
            return !0
          }
          return e != e && t != t
        }

        function Kd(e, t) {
          var n, r;

          function i() {
            for (var o = [], a = 0; a < arguments.length; a++) o[a] = arguments[a];
            var s = Date.now() - n,
              l = Id(t) ? t() : t || 0;
            s < l && s >= 0 ? r = setTimeout((function() {
              return i.apply(void 0, o)
            }), l - s) : e.apply(void 0, o)
          }

          function o() {
            for (var e = [], o = 0; o < arguments.length; o++) e[o] = arguments[o];
            n = Date.now(), r = setTimeout((function() {
              return i.apply(void 0, e)
            }), Id(t) ? t() : t || 0)
          }
          return o.clear = function() {
            clearTimeout(r)
          }, o
        }
        var Zd, $d, Jd, Qd = ["left", "right", "top", "bottom"],
          ef = ["left", "right"],
          tf = ["top", "bottom"];

        function nf(e, t) {
          return {
            left: e.left - t.left,
            top: e.top - t.top
          }
        }

        function rf(e) {
          return {
            left: e.left + e.width / 2,
            top: e.top + e.height / 2
          }
        }

        function of(e, t) {
          return Math.pow(e.width - t.width, 2) + Math.pow(e.height - t.height, 2)
        }

        function af(e, t) {
          return {
            left: e.left - t.left,
            top: e.top - t.top,
            width: e.width + t.left + t.right,
            height: e.height + t.top + t.bottom
          }
        }

        function sf(e) {
          return {
            left: -e.left,
            top: -e.top
          }
        }

        function lf(e, t) {
          return G(G({}, e), {
            left: e.left + t.left,
            top: e.top + t.top
          })
        }

        function cf(e) {
          return {
            left: e.left,
            top: e.top,
            right: e.left + e.width,
            bottom: e.top + e.height
          }
        }

        function uf(e, t, n, r) {
          if (1 !== t) {
            if ("left" in e || "top" in e) {
              if (n) {
                var i = rf(e);
                return {
                  width: e.width * t,
                  height: e.height * t,
                  left: e.left + e.width * (1 - t) / 2 + (n.left - i.left) * (r || 1 - t),
                  top: e.top + e.height * (1 - t) / 2 + (n.top - i.top) * (r || 1 - t)
                }
              }
              return {
                width: e.width * t,
                height: e.height * t,
                left: e.left + e.width * (1 - t) / 2,
                top: e.top + e.height * (1 - t) / 2
              }
            }
            return {
              width: e.width * t,
              height: e.height * t
            }
          }
          return e
        }

        function hf(e) {
          return e.width / e.height
        }

        function pf(e, t) {
          return Math.min(t.maxWidth ? t.maxWidth / e.width : 1 / 0, t.maxHeight ? t.maxHeight / e.height : 1 / 0)
        }

        function df(e, t) {
          return Math.max(t.minWidth ? t.minWidth / e.width : 0, t.minHeight ? t.minHeight / e.height : 0)
        }

        function ff(e, t) {
          var n;
          return t.minimum && Xd(e, t.minimum) ? n = t.minimum : t.maximum && Vd(e, t.maximum) && (n = t.maximum), n
        }

        function gf(e, t) {
          var n = hf(e),
            r = 1;
          return t.minWidth > 0 && t.minHeight > 0 ? n > t.minWidth / t.minHeight ? e.height < t.minHeight && (r = t.minHeight / e.height) : e.width < t.minWidth && (r = t.minWidth / e.width) : t.minWidth > 0 ? e.width < t.minWidth && (r = t
              .minWidth / e.width) : t.minHeight > 0 && e.height < t.minHeight && (r = t.minHeight / e.height), t.maxWidth < 1 / 0 && t.maxHeight < 1 / 0 ? n > t.maxWidth / t.maxHeight ? e.width > t.maxWidth && (r = t.maxWidth / e.width) : e
            .height > t.maxHeight && (r = t.maxHeight / e.height) : t.maxWidth < 1 / 0 ? e.width > t.maxWidth && (r = t.maxWidth / e.width) : t.maxHeight < 1 / 0 && e.height > t.maxHeight && (r = t.maxHeight / e.height), r
        }

        function mf(e, t) {
          var n = {
            left: 0,
            top: 0,
            right: 0,
            bottom: 0
          };
          return Qd.forEach((function(r) {
            var i = t[r],
              o = cf(e)[r];
            n[r] = void 0 !== i && void 0 !== o ? "left" === r || "top" === r ? Math.max(0, i - o) : Math.max(0, o - i) : 0
          })), n
        }

        function vf(e, t) {
          return uf(e, gf(e, t))
        }

        function _f(e, t) {
          var n = t * Math.PI / 180;
          return {
            width: Math.abs(e.width * Math.cos(n)) + Math.abs(e.height * Math.sin(n)),
            height: Math.abs(e.width * Math.sin(n)) + Math.abs(e.height * Math.cos(n))
          }
        }

        function bf(e, t, n) {
          var r = t * Math.PI / 180;
          return n ? {
            left: (e.left - n.left) * Math.cos(r) - (e.top - n.top) * Math.sin(r) + n.left,
            top: (e.left - n.left) * Math.sin(r) + (e.top - n.top) * Math.cos(r) + n.top
          } : {
            left: e.left * Math.cos(r) - e.top * Math.sin(r),
            top: e.left * Math.sin(r) + e.top * Math.cos(r)
          }
        }

        function yf(e) {
          return {
            minWidth: 0,
            minHeight: 0,
            maxWidth: void 0 !== e.right && void 0 !== e.left ? e.right - e.left : 1 / 0,
            maxHeight: void 0 !== e.bottom && void 0 !== e.top ? e.bottom - e.top : 1 / 0
          }
        }

        function wf(e, t) {
          var n = {};
          return Qd.forEach((function(r) {
            var i = e[r],
              o = t[r];
            void 0 !== i && void 0 !== o ? n[r] = "left" === r || "top" === r ? Math.max(i, o) : Math.min(i, o) : void 0 !== o ? n[r] = o : void 0 !== i && (n[r] = i)
          })), n
        }

        function xf(e, t) {
          var n = {
              left: 0,
              top: 0
            },
            r = mf(e, t);
          return r.left && r.left > 0 ? n.left = r.left : r.right && r.right > 0 && (n.left = -r.right), r.top && r.top > 0 ? n.top = r.top : r.bottom && r.bottom > 0 && (n.top = -r.bottom), n
        }

        function kf(e, t) {
          return lf(e, xf(e, t))
        }

        function Cf(e) {
          return void 0 === e && (e = {}), Bd(e) ? {
            minimum: e,
            maximum: e
          } : {
            minimum: Hd(e.minimum) ? e.minimum : 0,
            maximum: Hd(e.maximum) ? e.maximum : 1 / 0
          }
        }

        function Sf(e, t) {
          return (Rd(t.maxWidth) || !Vd(e.width, t.maxWidth)) && (Rd(t.maxHeight) || !Vd(e.height, t.maxHeight)) && (Rd(t.minHeight) || !Xd(e.height, t.minHeight)) && (Rd(t.minWidth) || !Xd(e.width, t.minWidth))
        }

        function Ef(e, t) {
          return (Rd(t.left) || !Xd(e.left, t.left)) && (Rd(t.top) || !Xd(e.top, t.top)) && (Rd(t.right) || !Vd(e.left + e.width, t.right)) && (Rd(t.bottom) || !Vd(e.top + e.height, t.bottom))
        }

        function Tf(e) {
          return Boolean(e && e.visibleArea && e.coordinates)
        }

        function Of(e, t) {
          return function(e, t) {
            var n = Id(t.areaSizeRestrictions) ? t.areaSizeRestrictions(e, t) : t.areaSizeRestrictions;
            n.maxWidth < 1 / 0 && n.maxHeight < 1 / 0 && (hf(e.boundary) > n.maxWidth / n.maxHeight ? n.maxHeight = n.maxWidth / hf(e.boundary) : n.maxWidth = n.maxHeight * hf(e.boundary));
            return Bf(n)
          }(e, t)
        }

        function Af(e, t) {
          return Id(t.areaPositionRestrictions) ? t.areaPositionRestrictions(e, t) : t.areaPositionRestrictions
        }

        function Pf(e, t) {
          return function(e, t) {
            var n = Id(t.sizeRestrictions) ? t.sizeRestrictions(e, t) : t.sizeRestrictions,
              r = Mf(e, t),
              i = {
                minWidth: Hd(n.minWidth) ? Ld(n.minWidth) : 0,
                minHeight: Hd(n.minHeight) ? Ld(n.minHeight) : 0,
                maxWidth: Hd(n.maxWidth) ? Ld(n.maxWidth) : 1 / 0,
                maxHeight: Hd(n.maxHeight) ? Ld(n.maxHeight) : 1 / 0
              };
            void 0 !== r.left && void 0 !== r.right && (i.maxWidth = Math.min(i.maxWidth, r.right - r.left));
            void 0 !== r.bottom && void 0 !== r.top && (i.maxHeight = Math.min(i.maxHeight, r.bottom - r.top));
            return Bf(i)
          }(e, t)
        }

        function Mf(e, t) {
          return Id(t.positionRestrictions) ? t.positionRestrictions(e, t) : t.positionRestrictions
        }

        function Df(e) {
          return e.visibleArea ? e.visibleArea.width / e.boundary.width : 0
        }

        function If(e) {
          if (Tf(e)) {
            var t = e.coordinates,
              n = t.width,
              r = t.height,
              i = t.left,
              o = t.top,
              a = Df(e);
            return {
              width: n / a,
              height: r / a,
              left: (i - e.visibleArea.left) / a,
              top: (o - e.visibleArea.top) / a
            }
          }
          return {
            left: 0,
            top: 0,
            width: 0,
            height: 0
          }
        }

        function Rf(e, t) {
          return Cf(Id(t.aspectRatio) ? t.aspectRatio(e, t) : t.aspectRatio)
        }

        function jf(e, t) {
          return Id(t.defaultCoordinates) ? t.defaultCoordinates(e, t) : t.defaultCoordinates
        }

        function Nf(e, t) {
          return Id(t.defaultVisibleArea) ? t.defaultVisibleArea(e, t) : t.defaultVisibleArea
        }

        function Lf(e) {
          return e.imageSize && e.imageSize.width && e.imageSize.height ? _f(e.imageSize, e.transforms.rotate) : {
            width: 0,
            height: 0
          }
        }

        function Ff(e, t) {
          return !Tf(e) || !ff(hf(e.coordinates), Rf(e, t)) && Sf(e.visibleArea, Of(e, t)) && Sf(e.coordinates, Pf(e, t)) && Ef(e.visibleArea, Af(e, t)) && Ef(e.coordinates, Mf(e, t))
        }

        function Bf(e) {
          var t = G({}, e);
          return t.minWidth > t.maxWidth && (t.minWidth = t.maxWidth), t.minHeight > t.maxHeight && (t.minHeight = t.maxHeight), t
        }

        function zf(e, t) {
          var n = e,
            r = G({
              minWidth: 0,
              minHeight: 0,
              maxWidth: 1 / 0,
              maxHeight: 1 / 0
            }, t);
          return Bf({
            maxHeight: Math.min(n.maxHeight, r.maxHeight),
            minHeight: Math.max(n.minHeight, r.minHeight),
            maxWidth: Math.min(n.maxWidth, r.maxWidth),
            minWidth: Math.max(n.minWidth, r.minWidth)
          })
        }

        function Hf(e) {
          return Yd(e)
        }

        function Uf(e) {
          var t = e.width,
            n = e.height,
            r = e.sizeRestrictions || {
              minWidth: 0,
              minHeight: 0,
              maxWidth: 1 / 0,
              maxHeight: 1 / 0
            },
            i = Cf(e.aspectRatio),
            o = {
              width: Math.max(r.minWidth, Math.min(r.maxWidth, t)),
              height: Math.max(r.minHeight, Math.min(r.maxHeight, n))
            },
            a = [o];
          return i && [i.minimum, i.maximum].forEach((function(e) {
              e && a.push({
                width: o.width,
                height: o.width / e
              }, {
                width: o.height * e,
                height: o.height
              })
            })),
            function(e, t, n, r) {
              var i = function(i) {
                return e.reduce((function(e, o) {
                  var a = Id(n) ? n(o) : n,
                    s = a.maxHeight,
                    l = a.maxWidth,
                    c = a.minWidth,
                    u = a.minHeight,
                    h = Cf(Id(r) ? r(o) : r);
                  return Sf(o, i ? {
                    maxWidth: l,
                    maxHeight: s
                  } : {
                    maxWidth: l,
                    maxHeight: s,
                    minWidth: c,
                    minHeight: u
                  }) && !ff(hf(o), h) && o.width && o.height && (!e || Xd(of(o, t), of(e, t))) ? o : e
                }), null)
              };
              return i() || i(!0)
            }(a = a.map((function(e) {
              return vf(e, r)
            })), {
              width: t,
              height: n
            }, r, i)
        }

        function Wf(e, t) {
          var n = Hf(e);
          if (e.visibleArea) {
            var r = Of(e, t);
            n.visibleArea = G(G({}, e.visibleArea), Uf({
              width: e.visibleArea.width,
              height: e.visibleArea.height,
              aspectRatio: {
                minimum: hf(n.boundary),
                maximum: hf(n.boundary)
              },
              sizeRestrictions: r
            })), n.visibleArea = lf(n.visibleArea, nf(rf(e.visibleArea), rf(n.visibleArea))), n.visibleArea = kf(n.visibleArea, Af(n, t))
          }
          return n
        }

        function Vf(e, t, n) {
          var r = lf(e, t);
          return n ? kf(r, n) : r
        }

        function Xf(e, t, n, r) {
          void 0 === r && (r = !0);
          var i = !1 === r ? Jd.unsafe : !0 === r ? Jd.zoom : r,
            o = Rf(e, t),
            a = Pf(e, t);
          e.visibleArea && i === Jd.limit && (a = G(G({}, a), {
            minWidth: Math.min(e.visibleArea.width, a.minWidth),
            minHeight: Math.min(e.visibleArea.height, a.minHeight),
            maxWidth: Math.min(e.visibleArea.width, a.maxWidth),
            maxHeight: Math.min(e.visibleArea.height, a.maxHeight)
          }));
          var s = Mf(e, t);
          e.visibleArea && i === Jd.limit && (s = wf(s, cf(e.visibleArea)));
          var l = function(e, t) {
              return Vf(e, {
                left: t.left - (e.left || 0),
                top: t.top - (e.top || 0)
              }, s)
            },
            c = e.coordinates ? G({}, e.coordinates) : {
              left: 0,
              top: 0,
              width: 0,
              height: 0
            };
          (Array.isArray(n) ? n : [n]).forEach((function(n) {
            var r;
            (r = "function" == typeof n ? n(G(G({}, e), {
              coordinates: c
            }), t) : n) && (Rd(r.width) && Rd(r.height) || (c = function(e, t) {
              var n = G(G(G({}, e), Uf({
                width: t.width,
                height: t.height,
                sizeRestrictions: a,
                aspectRatio: o
              })), {
                left: 0,
                top: 0
              });
              return l(n, {
                left: e.left || 0,
                top: e.top || 0
              })
            }(c, G(G({}, c), r))), Rd(r.left) && Rd(r.top) || (c = l(c, G(G({}, c), r))))
          }));
          var u = G(G({}, Hf(e)), {
            coordinates: c
          });
          if (u.visibleArea && i === Jd.zoom) {
            var h = Math.max(0, u.coordinates.width - u.visibleArea.width),
              p = Math.max(0, u.coordinates.height - u.visibleArea.height),
              d = Of(e, t),
              f = h > p ? u.coordinates.width / u.visibleArea.width : u.coordinates.height / u.visibleArea.height;
            return f > 1 && (u.visibleArea = uf(u.visibleArea, Math.min(f, pf(u.visibleArea, d)))), u.visibleArea = lf(u.visibleArea, sf(xf(u.coordinates, cf(u.visibleArea)))), Wf(u, t)
          }
          return u
        }

        function Gf(e, t) {
          if (e.coordinates) {
            var n = Hf(e),
              r = Rf(e, t),
              i = Pf(e, t);
            return n.coordinates = G(G({}, e.coordinates), Uf({
              width: e.coordinates.width,
              height: e.coordinates.height,
              aspectRatio: r,
              sizeRestrictions: e.visibleArea ? {
                maxWidth: Math.min(e.visibleArea.width, i.maxWidth),
                maxHeight: Math.min(e.visibleArea.height, i.maxHeight),
                minHeight: Math.min(e.visibleArea.height, i.minHeight),
                minWidth: Math.min(e.visibleArea.width, i.minWidth)
              } : i
            })), n.coordinates = lf(n.coordinates, nf(rf(e.coordinates), rf(n.coordinates))), n.coordinates = kf(n.coordinates, e.visibleArea ? wf(cf(e.visibleArea), Mf(n, t)) : Mf(n, t)), n
          }
          return e
        }

        function Yf(e, t, n, r) {
          void 0 === r && (r = !0);
          var i = G(G({}, Hf(e)), {
            visibleArea: n
          });
          return i = Wf(i, t), r && (i = Gf(i, t)), i
        }

        function qf(e, t) {
          var n, r, i, o, a, s = e.boundary,
            l = e.image,
            c = {
              boundary: {
                width: s.width,
                height: s.height
              },
              imageSize: {
                width: l.width,
                height: l.height
              },
              transforms: {
                rotate: (null === (n = l.transforms) || void 0 === n ? void 0 : n.rotate) || 0,
                flip: {
                  horizontal: (null === (i = null === (r = l.transforms) || void 0 === r ? void 0 : r.flip) || void 0 === i ? void 0 : i.horizontal) || !1,
                  vertical: (null === (a = null === (o = l.transforms) || void 0 === o ? void 0 : o.flip) || void 0 === a ? void 0 : a.vertical) || !1
                }
              },
              visibleArea: null,
              coordinates: null
            };
          return t.defaultTransforms && (c.transforms = function(e, t) {
            var n = G(G({}, e.transforms), {
              flip: G({}, e.transforms.flip)
            });
            if (t.defaultTransforms) {
              var r = Id(t.defaultTransforms) ? t.defaultTransforms(e, t) : t.defaultTransforms;
              Bd(r.rotate) && (n.rotate = r.rotate), r.flip && (Fd(r.flip.horizontal) && (n.flip.horizontal = r.flip.horizontal), Fd(r.flip.vertical) && (n.flip.vertical = r.flip.vertical))
            }
            return n
          }(c, t)), c = t.priority === $d.visibleArea ? Xf(c = Yf(c, t, Nf(c, t), !1), t, jf(c, t), Jd.limit) : Yf(c = Xf(c, t, jf(c, t), Jd.unsafe), t, Nf(c, t), !0)
        }

        function Kf(e, t, n) {
          if (Tf(e)) {
            var r = Hf(e);
            return r.coordinates = lf(r.coordinates, n), r.coordinates = kf(r.coordinates, wf(cf(r.visibleArea), Mf(r, t))), r
          }
          return e
        }

        function Zf(e) {
          var t = e.coordinates,
            n = e.directions,
            r = e.positionRestrictions,
            i = e.sizeRestrictions,
            o = e.preserveRatio,
            a = e.allowedDirections,
            s = e.compensate,
            l = void 0 === s || s,
            c = G({}, n),
            u = af(t, c).width,
            h = af(t, c).height;
          u < 0 && (c.left < 0 && c.right < 0 ? (c.left = -(t.width - i.minWidth) / (c.left / c.right), c.right = -(t.width - i.minWidth) / (c.right / c.left)) : c.left < 0 ? c.left = -(t.width - i.minWidth) : c.right < 0 && (c.right = -(t
            .width - i.minWidth))), h < 0 && (c.top < 0 && c.bottom < 0 ? (c.top = -(t.height - i.minHeight) / (c.top / c.bottom), c.bottom = -(t.height - i.minHeight) / (c.bottom / c.top)) : c.top < 0 ? c.top = -(t.height - i.minHeight) : c
            .bottom < 0 && (c.bottom = -(t.height - i.minHeight)));
          var p = mf(af(t, c), r),
            d = Qd.every((function(e) {
              return !Vd(p[(t = e, {
                left: "right",
                top: "bottom",
                right: "left",
                bottom: "top"
              } [t])], 0) || a[e];
              var t
            }));
          l && d && (p.left && p.left > 0 && 0 === p.right ? (c.right += p.left, c.left -= p.left) : p.right && p.right > 0 && 0 === p.left && (c.left += p.right, c.right -= p.right), p.top && p.top > 0 && 0 === p.bottom ? (c.bottom += p.top, c
            .top -= p.top) : p.bottom && p.bottom > 0 && 0 === p.top && (c.top += p.bottom, c.bottom -= p.bottom), p = mf(af(t, c), r));
          var f = {
            width: 1 / 0,
            height: 1 / 0,
            left: 1 / 0,
            right: 1 / 0,
            top: 1 / 0,
            bottom: 1 / 0
          };
          if (Qd.forEach((function(e) {
              var t = p[e];
              t && c[e] && (f[e] = Math.max(0, 1 - t / c[e]))
            })), o) {
            var g = Math.min.apply(Math, Qd.map((function(e) {
              return f[e]
            })));
            g !== 1 / 0 && Qd.forEach((function(e) {
              c[e] *= g
            }))
          } else Qd.forEach((function(e) {
            f[e] !== 1 / 0 && (c[e] *= f[e])
          }));
          if (u = af(t, c).width, h = af(t, c).height, c.right + c.left && (u > i.maxWidth ? f.width = (i.maxWidth - t.width) / (c.right + c.left) : u < i.minWidth && (f.width = (i.minWidth - t.width) / (c.right + c.left))), c.bottom + c.top && (
              h > i.maxHeight ? f.height = (i.maxHeight - t.height) / (c.bottom + c.top) : h < i.minHeight && (f.height = (i.minHeight - t.height) / (c.bottom + c.top))), o) {
            var m = Math.min(f.width, f.height);
            m !== 1 / 0 && Qd.forEach((function(e) {
              c[e] *= m
            }))
          } else f.width !== 1 / 0 && ef.forEach((function(e) {
            c[e] *= f.width
          })), f.height !== 1 / 0 && tf.forEach((function(e) {
            c[e] *= f.height
          }));
          return c
        }

        function $f(e, t, n) {
          return Wd(t + n, 0) ? e / 2 : Wd(t, 0) ? 0 : Wd(n, 0) ? e : e * Math.abs(t / (t + n))
        }

        function Jf(e, t) {
          var n = t.toLowerCase();
          return {
            left: e.left + e.width * (-1 !== n.indexOf("west") ? 1 : -1 !== n.indexOf("east") ? 0 : .5),
            top: e.top + e.height * (-1 !== n.indexOf("north") ? 1 : -1 !== n.indexOf("south") ? 0 : .5)
          }
        }

        function Qf(e) {
          var t = e.toLowerCase();
          return {
            left: -1 === t.indexOf("east"),
            top: -1 === t.indexOf("south"),
            right: -1 === t.indexOf("west"),
            bottom: -1 === t.indexOf("north")
          }
        }

        function eg(e, t, n, r, i) {
          var o = r.reference,
            a = function(e, t) {
              var n = e.toLowerCase(),
                r = {
                  left: -1 === n.indexOf("west") ? t.left : -t.left,
                  top: -t.top,
                  right: t.left,
                  bottom: t.top
                };
              ["north", "south", "center"].every((function(e) {
                return -1 === n.indexOf(e)
              })) && (r.top = 0, r.bottom = 0), ["west", "east", "center"].every((function(e) {
                return -1 === n.indexOf(e)
              })) && (r.left = 0, r.right = 0);
              var i = Qf(e);
              return Qd.forEach((function(e) {
                i[e] || (r[e] = 0)
              })), r
            }(t, n),
            s = Qf(t),
            l = function(e, t, n, r) {
              var i = r.aspectRatio,
                o = r.positionRestrictions,
                a = r.sizeRestrictions,
                s = G({}, e);
              t = G({}, t);
              var l = n.allowedDirections || {
                left: !0,
                right: !0,
                bottom: !0,
                top: !0
              };
              e.width < a.minWidth && (t.left = 0, t.right = 0), e.height < a.minHeight && (t.top = 0, t.bottom = 0), Qd.forEach((function(e) {
                l[e] || (t[e] = 0)
              }));
              var c = af(s, t = Zf({
                  coordinates: s,
                  directions: t,
                  sizeRestrictions: a,
                  positionRestrictions: o,
                  allowedDirections: l
                })).width,
                u = af(s, t).height,
                h = n.preserveAspectRatio ? hf(s) : ff(c / u, i);
              if (h) {
                var p = n.respectDirection;
                if ("width" !== p && "height" !== p && (p = s.width >= s.height || 1 === h ? "width" : "height"), "width" === p) {
                  var d = c / h - s.height;
                  if (l.top && l.bottom) {
                    var f = t.top,
                      g = t.bottom;
                    t.bottom = $f(d, g, f), t.top = $f(d, f, g)
                  } else l.bottom ? t.bottom = d : l.top ? t.top = d : l.right ? t.right = 0 : l.left && (t.left = 0)
                } else if ("height" === p) {
                  var m = s.width - u * h;
                  if (l.left && l.right) {
                    var v = t.left,
                      _ = t.right;
                    t.left = -$f(m, v, _), t.right = -$f(m, _, v)
                  } else l.left ? t.left = -m : l.right ? t.right = -m : l.top ? t.top = 0 : l.bottom && (t.bottom = 0)
                }
                t = Zf({
                  directions: t,
                  coordinates: s,
                  sizeRestrictions: a,
                  positionRestrictions: o,
                  preserveRatio: !0,
                  compensate: n.compensate,
                  allowedDirections: l
                })
              }
              return c = af(s, t).width, u = af(s, t).height, (h = n.preserveAspectRatio ? hf(s) : ff(c / u, i)) && Vd(Math.abs(h - c / u), 0) && Qd.forEach((function(e) {
                t[e] = 0
              })), Vf({
                width: e.width + t.right + t.left,
                height: e.height + t.top + t.bottom,
                left: e.left,
                top: e.top
              }, {
                left: -t.left,
                top: -t.top
              }, o)
            }(e, a, G(G({}, r), {
              allowedDirections: s
            }), i);
          return o && (l = lf(l, nf(Jf(o, t), Jf(l, t)))), kf(l, i.positionRestrictions)
        }

        function tg(e, t, n, r, i) {
          var o = function(e) {
              return e.coordinates ? Math.min(e.coordinates.width, e.coordinates.height, 20 * Df(e)) : 1
            }(e),
            a = Pf(e, t);
          return Tf(e) ? G(G({}, Hf(e)), {
            coordinates: eg(e.coordinates, n, r, i, {
              positionRestrictions: wf(Mf(e, t), cf(e.visibleArea)),
              sizeRestrictions: {
                maxWidth: Math.min(a.maxWidth, e.visibleArea.width),
                maxHeight: Math.min(a.maxHeight, e.visibleArea.height),
                minWidth: Math.max(Math.min(a.minWidth, e.visibleArea.width), o),
                minHeight: Math.max(Math.min(a.minHeight, e.visibleArea.height), o)
              },
              aspectRatio: Rf(e, t)
            })
          }) : e
        }

        function ng(e, t, n) {
          var r = G(G({}, Hf(e)), {
            boundary: n
          });
          if (r.visibleArea && r.coordinates && e.visibleArea) {
            r.visibleArea.height = r.visibleArea.width / hf(n), r.visibleArea.top += (e.visibleArea.height - r.visibleArea.height) / 2;
            var i = Pf(r, t);
            (Math.max(i.minHeight, r.coordinates.height) - r.visibleArea.height > 0 || Math.max(i.minWidth, r.coordinates.width) - r.visibleArea.width > 0) && (r.visibleArea = uf(r.visibleArea, Math.max(Math.max(i.minHeight, r.coordinates
              .height) / r.visibleArea.height, Math.max(i.minWidth, r.coordinates.width) / r.visibleArea.width))), r.visibleArea = vf(r.visibleArea, Of(r, t));
            var o = sf(xf(r.coordinates, cf(r.visibleArea)));
            r.visibleArea.width < r.coordinates.width && (o.left = 0), r.visibleArea.height < r.coordinates.height && (o.top = 0), r.visibleArea = lf(r.visibleArea, o), r.visibleArea = kf(r.visibleArea, Af(r, t)), r = Gf(r, t)
          }
          return r
        }

        function rg(e, t, n) {
          return n.rotate && (e = function(e, t, n) {
            if (Tf(e)) {
              var r = Hf(e),
                i = Bd(n) ? n : n.angle,
                o = bf(rf(G({
                  left: 0,
                  top: 0
                }, Lf(e))), i);
              r.transforms.rotate += i, r.coordinates = G(G({}, Uf({
                sizeRestrictions: Pf(r, t),
                aspectRatio: Rf(r, t),
                width: r.coordinates.width,
                height: r.coordinates.height
              })), bf(rf(r.coordinates), i));
              var a = !Bd(n) && n.center ? n.center : rf(e.coordinates),
                s = nf(rf(e.coordinates), bf(rf(e.coordinates), i, a)),
                l = Lf(r);
              return r.coordinates.left -= o.left - l.width / 2 + r.coordinates.width / 2 - s.left, r.coordinates.top -= o.top - l.height / 2 + r.coordinates.height / 2 - s.top, r.visibleArea = vf(r.visibleArea, zf(Of(r, t), {
                minWidth: r.coordinates.width,
                minHeight: r.coordinates.height
              })), r.coordinates = kf(r.coordinates, Mf(r, t)), r.visibleArea = lf(r.visibleArea, nf(rf(r.coordinates), rf(e.coordinates))), r.visibleArea = kf(r.visibleArea, Af(r, t)), r
            }
            return e
          }(e, t, n.rotate)), n.flip && (e = function(e, t, n, r) {
            if (Tf(e)) {
              var i = Hf(e),
                o = e.transforms.rotate,
                a = Lf(e),
                s = {
                  horizontal: n,
                  vertical: r
                };
              if (s.horizontal || s.vertical) {
                var l = bf({
                    left: a.width / 2,
                    top: a.height / 2
                  }, -o),
                  c = bf(rf(i.coordinates), -o),
                  u = bf({
                    left: s.horizontal ? l.left - (c.left - l.left) : c.left,
                    top: s.vertical ? l.top - (c.top - l.top) : c.top
                  }, o);
                i.coordinates = lf(i.coordinates, nf(u, rf(i.coordinates))), c = bf(rf(i.visibleArea), -o), u = bf({
                  left: s.horizontal ? l.left - (c.left - l.left) : c.left,
                  top: s.vertical ? l.top - (c.top - l.top) : c.top
                }, o), i.visibleArea = lf(i.visibleArea, nf(u, rf(i.visibleArea))), i.visibleArea = kf(i.visibleArea, Af(i, t))
              }
              return s.horizontal && (i.transforms.flip.horizontal = !e.transforms.flip.horizontal), s.vertical && (i.transforms.flip.vertical = !e.transforms.flip.vertical), i
            }
            return e
          }(e, t, n.flip.horizontal, n.flip.vertical)), (n.move || n.scale) && (e = function(e, t, n) {
            var r, i = n.scale,
              o = void 0 === i ? 1 : i,
              a = n.move,
              s = void 0 === a ? {} : a;
            if (Tf(e)) {
              var l = Hf(e),
                c = 1 / (Bd(o) ? o : o.factor),
                u = Bd(o) ? void 0 : o.center,
                h = !Wd(c, 1),
                p = 1,
                d = 1;
              l.visibleArea = lf(l.visibleArea, {
                left: s.left || 0,
                top: s.top || 0
              });
              var f = Pf(l, t),
                g = Mf(l, t),
                m = Of(l, t),
                v = {
                  stencil: {
                    minimum: Math.max(f.minWidth ? f.minWidth / l.coordinates.width : 0, f.minHeight ? f.minHeight / l.coordinates.height : 0),
                    maximum: Math.min(f.maxWidth ? f.maxWidth / l.coordinates.width : 1 / 0, f.maxHeight ? f.maxHeight / l.coordinates.height : 1 / 0, pf(l.coordinates, yf(g)))
                  },
                  area: {
                    maximum: pf(l.visibleArea, m),
                    minimum: df(l.visibleArea, m)
                  }
                };
              c && h && (c < 1 ? (d = Math.max(c, Math.max(v.area.minimum, v.stencil.minimum))) > 1 && (d = 1) : c > 1 && (d = Math.min(c, Math.min(v.area.maximum, v.stencil.maximum))) < 1 && (d = 1)), d && (l.visibleArea = uf(l.visibleArea,
                d, u));
              var _ = {
                left: e.coordinates.left - e.visibleArea.left,
                right: e.visibleArea.width + e.visibleArea.left - (e.coordinates.width + e.coordinates.left),
                top: e.coordinates.top - e.visibleArea.top,
                bottom: e.visibleArea.height + e.visibleArea.top - (e.coordinates.height + e.coordinates.top)
              };
              return l.visibleArea = kf(l.visibleArea, {
                  left: void 0 !== g.left ? g.left - _.left * d : void 0,
                  top: void 0 !== g.top ? g.top - _.top * d : void 0,
                  bottom: void 0 !== g.bottom ? g.bottom + _.bottom * d : void 0,
                  right: void 0 !== g.right ? g.right + _.right * d : void 0
                }), l.visibleArea = kf(l.visibleArea, Af(l, t)), l.coordinates.width = l.coordinates.width * d, l.coordinates.height = l.coordinates.height * d, l.coordinates.left = l.visibleArea.left + _.left * d, l.coordinates.top = l
                .visibleArea.top + _.top * d, l.coordinates = kf(l.coordinates, wf(cf(l.visibleArea), g)), h && c && (null === (r = t.transformImage) || void 0 === r ? void 0 : r.adjustStencil) && (c > 1 ? p = Math.min(v.area.maximum, c) /
                  d : c < 1 && (p = Math.max(l.coordinates.height / l.visibleArea.height, l.coordinates.width / l.visibleArea.width, c / d)), 1 !== p && (l.visibleArea = uf(l.visibleArea, p, c > 1 ? u : rf(l.coordinates)), l.visibleArea = kf(
                    l.visibleArea, Af(l, t)), l.visibleArea = lf(l.visibleArea, sf(xf(l.coordinates, cf(l.visibleArea)))))), l
            }
            return e
          }(e, t, n)), e
        }

        function ig(e, t) {
          if (Tf(e)) {
            var n = Hf(e),
              r = Rf(e, t),
              i = Pf(e, t),
              o = Of(e, t),
              a = ff(hf(e.coordinates), r),
              s = a ? {
                height: e.coordinates.height,
                width: e.coordinates.height * a
              } : e.coordinates;
            n.coordinates = G(G({}, n.coordinates), Uf({
              width: s.width,
              height: s.height,
              aspectRatio: r,
              sizeRestrictions: zf(o, i)
            })), n.coordinates = lf(n.coordinates, nf(rf(e.coordinates), rf(n.coordinates)));
            var l = Math.max(n.coordinates.width / n.visibleArea.width, n.coordinates.height / n.visibleArea.height, 1);
            return n.visibleArea = G(G({}, e.visibleArea), Uf({
              width: e.visibleArea.width * l,
              height: e.visibleArea.height * l,
              aspectRatio: {
                minimum: hf(n.boundary),
                maximum: hf(n.boundary)
              },
              sizeRestrictions: o
            })), n.visibleArea = lf(n.visibleArea, nf(rf(e.visibleArea), rf(n.visibleArea))), n.visibleArea = kf(n.visibleArea, Af(n, t)), n.coordinates = kf(n.coordinates, wf(cf(n.visibleArea), Mf(n, t))), n
          }
          return e
        }

        function og(e, t) {
          var n = Df(e);
          return e.visibleArea ? {
            left: t.left * n + e.visibleArea.left,
            top: t.top * n + e.visibleArea.top
          } : t
        }

        function ag(e, t) {
          if (e) {
            var n = Math.abs(e.transforms.rotate % 180);
            return n <= 45 || n >= 135 ? t : {
              horizontal: t.vertical,
              vertical: t.horizontal
            }
          }
          return t
        }

        function sg(e, t) {
          var n = Df(e);
          return {
            left: Bd(t.left) ? t.left * n : 0,
            top: Bd(t.top) ? t.top * n : 0
          }
        }

        function lg(e, t) {
          var n = t.getBoundingClientRect(),
            r = n.left,
            i = n.top,
            o = {
              left: 0,
              top: 0
            },
            a = 0;
          return e.forEach((function(t) {
            o.left += (t.clientX - r) / e.length, o.top += (t.clientY - i) / e.length
          })), e.forEach((function(e) {
            a += Ud({
              left: o.left,
              top: o.top
            }, {
              left: e.clientX - r,
              top: e.clientY - i
            })
          })), {
            centerMass: o,
            spread: a,
            count: e.length
          }
        }

        function cg(e, t, n) {
          void 0 === n && (n = .1);
          var r, i, o = t.getBoundingClientRect(),
            a = o.left,
            s = o.top;
          return {
            scale: {
              factor: 1 - n * (r = e.deltaY || e.detail || e.wheelDelta, 0 === (i = +r) || zd(i) ? i : i > 0 ? 1 : -1),
              center: {
                left: e.clientX - a,
                top: e.clientY - s
              }
            }
          }
        }

        function ug(e) {
          return e.moveCoordinates || e.resizeCoordinates || e.transformImage.move || e.transformImage.rotate || e.transformImage.flip || e.transformImage.scale
        }

        function hg(e, t) {
          var n, r = e.imageSize,
            i = e.visibleArea,
            o = Pf(e, t),
            a = Rf(e, t);
          if (i) n = i;
          else {
            var s = yf(Mf(e, t));
            n = {
              width: Math.max(s.minWidth, Math.min(s.maxWidth, r.width)),
              height: Math.max(s.minHeight, Math.min(s.maxHeight, r.height))
            }
          }
          var l = Math.min(a.maximum || 1 / 0, Math.max(a.minimum || 0, hf(n))),
            c = n.width < n.height ? {
              width: .8 * n.width,
              height: .8 * n.width / l
            } : {
              height: .8 * n.height,
              width: .8 * n.height * l
            };
          return Uf(G(G({}, c), {
            aspectRatio: a,
            sizeRestrictions: o
          }))
        }

        function pg(e, t) {
          return function(e) {
            return {
              minWidth: Hd(e.minWidth) ? Ld(e.minWidth) : 0,
              minHeight: Hd(e.minHeight) ? Ld(e.minHeight) : 0,
              maxWidth: Hd(e.maxWidth) ? Ld(e.maxWidth) : 1 / 0,
              maxHeight: Hd(e.maxHeight) ? Ld(e.maxHeight) : 1 / 0
            }
          }(t)
        }

        function dg(e) {
          var t = e.visibleArea,
            n = e.coordinates,
            r = t || Lf(e);
          return {
            left: (t ? t.left : 0) + r.width / 2 - (n ? n.width / 2 : 0),
            top: (t ? t.top : 0) + r.height / 2 - (n ? n.height / 2 : 0)
          }
        }

        function fg(e) {
          var t = e.getBoundingClientRect();
          return {
            width: t.width,
            height: t.height
          }
        }

        function gg(e, t) {
          return e.aspectRatio ? {} : {
            aspectRatio: Cf(Id(t.aspectRatio) ? t.aspectRatio() : t.aspectRatio)
          }
        }

        function mg(e) {
          return function(t, n) {
            var r = Id(e) ? e(t, n) : e;
            return zf(pg(0, n), r)
          }
        }

        function vg(e) {
          return G(G({}, e), {
            sizeRestrictions: function(t, n) {
              return e.sizeRestrictions ? Id(e.sizeRestrictions) ? e.sizeRestrictions(t, n) : e.sizeRestrictions : pg(0, n)
            },
            areaPositionRestrictions: function(t, n) {
              return e.areaPositionRestrictions ? Id(e.areaPositionRestrictions) ? e.areaPositionRestrictions(t, n) : e.areaPositionRestrictions : function(e, t) {
                var n = e.visibleArea,
                  r = e.boundary,
                  i = t.imageRestriction,
                  o = Lf(e),
                  a = {};
                return i === Zd.fillArea ? a = {
                  left: 0,
                  top: 0,
                  right: o.width,
                  bottom: o.height
                } : i === Zd.fitArea && (hf(r) > hf(o) ? (a = {
                  top: 0,
                  bottom: o.height
                }, n && (n.width > o.width ? (a.left = -(n.width - o.width) / 2, a.right = o.width - a.left) : (a.left = 0, a.right = o.width))) : (a = {
                  left: 0,
                  right: o.width
                }, n && (n.height > o.height ? (a.top = -(n.height - o.height) / 2, a.bottom = o.height - a.top) : (a.top = 0, a.bottom = o.height)))), a
              }(t, n)
            },
            areaSizeRestrictions: function(t, n) {
              return e.areaSizeRestrictions ? Id(e.areaSizeRestrictions) ? e.areaSizeRestrictions(t, n) : e.areaSizeRestrictions : function(e, t) {
                var n = e.boundary,
                  r = t.imageRestriction,
                  i = Lf(e),
                  o = {
                    minWidth: 0,
                    minHeight: 0,
                    maxWidth: 1 / 0,
                    maxHeight: 1 / 0
                  };
                return r === Zd.fillArea ? (o.maxWidth = i.width, o.maxHeight = i.height) : r === Zd.fitArea && (hf(n) > hf(i) ? (o.maxHeight = i.height, o.maxWidth = i.height * hf(n)) : (o.maxWidth = i.width, o.maxHeight = i.width / hf(
                  n))), o
              }(t, n)
            },
            positionRestrictions: function(t, n) {
              return e.positionRestrictions ? Id(e.positionRestrictions) ? e.positionRestrictions(t, n) : e.positionRestrictions : function(e, t) {
                var n = Lf(e),
                  r = {};
                return t.imageRestriction && "none" !== t.imageRestriction && (r = {
                  left: 0,
                  top: 0,
                  right: n.width,
                  bottom: n.height
                }), r
              }(t, n)
            },
            defaultCoordinates: function(t, n) {
              if (e.defaultCoordinates) return Id(e.defaultCoordinates) ? e.defaultCoordinates(t, n) : e.defaultCoordinates;
              var r = e.defaultSize;
              r || (r = hg);
              var i = Id(r) ? r(t, n) : r,
                o = e.defaultPosition || dg;
              return [i, function(e) {
                return G({}, Id(o) ? o(e, n) : o)
              }]
            },
            defaultVisibleArea: function(t, n) {
              return e.defaultVisibleArea ? Id(e.defaultVisibleArea) ? e.defaultVisibleArea(t, n) : e.defaultVisibleArea : function(e, t) {
                var n = e.coordinates,
                  r = e.boundary,
                  i = Lf(e),
                  o = hf(r);
                if (n) {
                  var a = {
                      height: Math.max(n.height, i.height),
                      width: Math.max(n.width, i.width)
                    },
                    s = {
                      left: 0,
                      top: 0,
                      width: hf(a) > o ? a.width : a.height * o,
                      height: hf(a) > o ? a.width / o : a.height
                    };
                  (s = vf(s, Of(e, t))).left = n.left + n.width / 2 - s.width / 2, s.top = n.top + n.height / 2 - s.height / 2;
                  var l = mf(n, cf(G({
                      left: 0,
                      top: 0
                    }, i))),
                    c = {};
                  return !l.left && !l.right && s.width <= i.width && (c.left = 0, c.right = i.width), !l.top && !l.bottom && s.height <= i.height && (c.top = 0, c.bottom = i.height), kf(s, c)
                }
                var u = hf(i),
                  h = {
                    height: u < o ? i.height : i.width / o,
                    width: u < o ? i.height * o : i.width
                  };
                return {
                  left: i.width / 2 - h.width / 2,
                  top: i.height / 2 - h.height / 2,
                  width: h.width,
                  height: h.height
                }
              }(t, n)
            },
            aspectRatio: function(t, n) {
              return Cf(Id(e.aspectRatio) ? e.aspectRatio(t, n) : e.aspectRatio)
            }
          })
        }

        function _g(e, t) {
          if (e && t) {
            var n = t();
            n && e(n)
          }
        }

        function bg(e, t) {
          e.forEach((function(e) {
            _g(e, t)
          }))
        }! function(e) {
          e.fillArea = "fillArea", e.fitArea = "fitArea", e.stencil = "stencil", e.none = "none"
        }(Zd || (Zd = {})),
        function(e) {
          e.coordinates = "coordinates", e.visibleArea = "visibleArea"
        }($d || ($d = {})),
        function(e) {
          e.limit = "limit", e.zoom = "zoom", e.unsafe = "unsafe"
        }(Jd || (Jd = {}));
        var yg = function() {
            var e = this;
            this.getTransitions = function() {
              var t = e.getData(),
                n = e.getProps().transitions;
              return G(G({}, Nd(n, {
                timingFunction: "ease-in-out",
                duration: 350
              })), {
                active: t.transitions
              })
            }, this.getInteractions = function() {
              return Yd(e.getData().interactions)
            }, this.hasInteractions = function() {
              return ug(e.getData().interactions)
            }, this.startTransitions = function() {
              var t = e.getProps(),
                n = t.onTransitionsStart,
                r = t.onUpdate,
                i = t.getInstance,
                o = e.getData(),
                a = o.transitions,
                s = Y(o, ["transitions"]);
              e.setData(G(G({}, s), {
                transitions: !0
              })), a || bg([n, r], i), e.endTransitions()
            }, this.endTransitions = Kd((function() {
              var t = e.getProps(),
                n = t.onTransitionsEnd,
                r = t.onUpdate,
                i = t.getInstance;
              e.setData(G(G({}, e.getData()), {
                transitions: !1
              })), bg([n, r], i)
            }), (function() {
              return e.getTransitions().duration
            })), this.applyPostProcess = function(t, n) {
              var r, i = e.getProps(),
                o = i.settings,
                a = i.postProcess,
                s = t.name,
                l = t.interaction,
                c = void 0 !== l && l,
                u = t.transitions,
                h = void 0 !== u && u,
                p = t.immediately,
                d = {
                  name: s,
                  interaction: c,
                  transitions: h,
                  immediately: void 0 !== p && p
                };
              return r = a, Array.isArray(r) ? a.reduce((function(e, t) {
                return t(e, o, d)
              }), n) : Id(a) ? a(n, o, d) : n
            }, this.updateState = function(t, n, r) {
              void 0 === n && (n = {}), void 0 === r && (r = []);
              var i = n.transitions,
                o = void 0 !== i && i,
                a = e.getProps(),
                s = a.onTransitionsStart,
                l = a.getInstance,
                c = a.onChange,
                u = a.onUpdate,
                h = a.settings,
                p = e.getData(),
                d = Id(t) ? t(p.state, h) : t,
                f = d ? .001 * Df(d) : .001,
                g = !qd(p.state, d, f),
                m = ["coordinates", "boundary", "visibleArea", "imageSize", "transforms"].some((function(e) {
                  var t;
                  return !qd(null === (t = p.state) || void 0 === t ? void 0 : t[e], null == d ? void 0 : d[e], f)
                })),
                v = p;
              g && (o && m && e.endTransitions(), v = G(G({}, v), {
                state: Hf(d),
                transitions: o && m
              }), e.setData(v), _g(c, l)), v.transitions && !p.transitions && _g(s, l), bg(function() {
                for (var e = 0, t = 0, n = arguments.length; t < n; t++) e += arguments[t].length;
                var r = Array(e),
                  i = 0;
                for (t = 0; t < n; t++)
                  for (var o = arguments[t], a = 0, s = o.length; a < s; a++, i++) r[i] = o[a];
                return r
              }(r, [u]), l)
            }, this.setInteractions = function(t) {
              var n = e.getProps(),
                r = n.onInteractionStart,
                i = n.onInteractionEnd,
                o = n.getInstance,
                a = e.getInteractions(),
                s = G(G({}, a), t);
              if (qd(a, s) || e.setData(G(G({}, e.getData()), {
                  interactions: s
                })), ug(a) !== ug(s))
                if (ug(a)) {
                  var l = e.getData().state;
                  e.updateState((function() {
                    return l && e.applyPostProcess({
                      name: "interactionEnd",
                      immediately: !0,
                      transitions: !0
                    }, l)
                  }), {
                    transitions: !0
                  }, [i])
                } else _g(r, o)
            }, this.resetState = function(t, n) {
              e.updateState(e.createDefaultState(t, n))
            }, this.clear = function() {
              e.updateState(null)
            }, this.reconcileState = function(t) {
              void 0 === t && (t = {});
              var n = e.getProps(),
                r = n.reconcileStateAlgorithm,
                i = n.settings,
                o = e.getData().state,
                a = t.transitions,
                s = void 0 !== a && a;
              if (o && !Ff(o, i)) {
                var l = (r || ig)(o, i);
                l = e.applyPostProcess({
                  name: "reconcileState",
                  immediately: !0,
                  transitions: s
                }, l), e.updateState(l, {
                  transitions: s
                })
              }
            }, this.transformImage = function(t, n) {
              void 0 === n && (n = {});
              var r = n.transitions,
                i = void 0 === r || r,
                o = n.interaction,
                a = void 0 === o || o,
                s = n.immediately,
                l = void 0 !== s && s,
                c = n.normalize,
                u = void 0 === c || c,
                h = e.getProps(),
                p = h.transformImageAlgorithm,
                d = h.onTransformImage,
                f = h.onTransformImageEnd,
                g = h.settings,
                m = e.getData().state,
                v = [];
              if (m) {
                u && (t = function(e, t) {
                  return t.scale && (t.scale = {
                    factor: Bd(t.scale) ? t.scale : t.scale.factor,
                    center: !Bd(t.scale) && t.scale.center ? og(e, t.scale.center) : void 0
                  }), t.rotate && (t.rotate = {
                    angle: Bd(t.rotate) ? t.rotate : t.rotate.angle,
                    center: !Bd(t.rotate) && t.rotate.center ? og(e, t.rotate.center) : void 0
                  }), t.move && (t.move = sg(e, t.move)), t
                }(m, t));
                var _ = e.applyPostProcess({
                  name: "transformImage",
                  transitions: i,
                  immediately: l
                }, (p || rg)(m, g, t));
                v.push(d), a ? e.setInteractions({
                  transformImage: {
                    rotate: !Rd(t.rotate),
                    flip: !Rd(t.flip),
                    scale: !Rd(t.scale),
                    move: !Rd(t.move)
                  }
                }) : (_ = e.applyPostProcess({
                  name: "transformImageEnd",
                  transitions: i,
                  immediately: !0
                }, _), v.push(f)), e.updateState(_, {
                  transitions: l && i
                }, v)
              }
            }, this.transformImageEnd = function(t) {
              void 0 === t && (t = {});
              var n = t.immediately,
                r = void 0 === n || n,
                i = t.transitions,
                o = void 0 === i || i,
                a = e.getData().state,
                s = e.getProps().onTransformImageEnd;
              e.updateState((function() {
                return a && e.applyPostProcess({
                  name: "transformImageEnd",
                  immediately: r,
                  transitions: o
                }, a)
              }), {
                transitions: o
              }, [s]), e.setInteractions({
                transformImage: {
                  rotate: !1,
                  flip: !1,
                  scale: !1,
                  move: !1
                }
              })
            }, this.zoomImage = function(t, n) {
              void 0 === n && (n = {});
              var r = n.interaction,
                i = void 0 !== r && r,
                o = n.immediately,
                a = void 0 === o || o,
                s = n.transitions,
                l = void 0 === s || s,
                c = n.normalize,
                u = void 0 !== c && c;
              e.transformImage({
                scale: t
              }, {
                interaction: i,
                immediately: a,
                transitions: l,
                normalize: u
              })
            }, this.moveImage = function(t, n, r) {
              void 0 === r && (r = {});
              var i = r.interaction,
                o = void 0 !== i && i,
                a = r.immediately,
                s = void 0 === a || a,
                l = r.transitions,
                c = void 0 === l || l,
                u = r.normalize,
                h = void 0 !== u && u;
              e.transformImage({
                move: {
                  left: t,
                  top: n
                }
              }, {
                interaction: o,
                immediately: s,
                transitions: c,
                normalize: h
              })
            }, this.flipImage = function(t, n, r) {
              void 0 === r && (r = {});
              var i = r.interaction,
                o = void 0 !== i && i,
                a = r.immediately,
                s = void 0 === a || a,
                l = r.transitions,
                c = void 0 === l || l,
                u = r.normalize,
                h = void 0 === u || u,
                p = e.getState(),
                d = {
                  horizontal: t,
                  vertical: n
                };
              e.transformImage({
                flip: p && h ? ag(p, d) : d
              }, {
                interaction: o,
                immediately: s,
                transitions: c
              })
            }, this.rotateImage = function(t, n) {
              void 0 === n && (n = {});
              var r = n.interaction,
                i = void 0 !== r && r,
                o = n.immediately,
                a = void 0 === o || o,
                s = n.transitions,
                l = void 0 === s || s,
                c = n.normalize,
                u = void 0 !== c && c;
              e.transformImage({
                rotate: t
              }, {
                interaction: i,
                immediately: a,
                transitions: l,
                normalize: u
              })
            }, this.reset = function(t, n) {
              e.resetState(t, n)
            }, this.setState = function(t, n) {
              void 0 === n && (n = {});
              var r = e.getSettings(),
                i = e.getData().state,
                o = n.transitions,
                a = void 0 === o || o,
                s = n.immediately,
                l = void 0 !== s && s,
                c = n.interaction,
                u = void 0 !== c && c,
                h = n.postprocess,
                p = void 0 !== h && h,
                d = t && (Id(t) ? t(i, r) : G(G({}, i), t));
              e.updateState((function() {
                return p ? d && e.applyPostProcess({
                  name: "setState",
                  immediately: l,
                  transitions: a,
                  interaction: u
                }, d) : d
              }), {
                transitions: a
              })
            }, this.setCoordinates = function(t, n) {
              void 0 === n && (n = {});
              var r = e.getData().state,
                i = e.getProps(),
                o = i.setCoordinatesAlgorithm,
                a = i.settings,
                s = n.transitions,
                l = void 0 === s || s,
                c = n.immediately,
                u = void 0 === c || c;
              e.updateState((function() {
                return r && e.applyPostProcess({
                  name: "setCoordinates",
                  immediately: u,
                  transitions: l
                }, (o || Xf)(r, a, t, Jd.zoom))
              }), {
                transitions: l
              })
            }, this.setVisibleArea = function(t, n) {
              void 0 === n && (n = {});
              var r = n.transitions,
                i = void 0 === r || r,
                o = n.immediately,
                a = void 0 === o || o,
                s = e.getData().state,
                l = e.getProps(),
                c = l.setVisibleAreaAlgorithm,
                u = l.settings;
              e.updateState((function() {
                return s && e.applyPostProcess({
                  name: "setVisibleArea",
                  immediately: a,
                  transitions: i
                }, (c || Yf)(s, u, t))
              }), {
                transitions: i
              })
            }, this.setBoundary = function(t, n) {
              void 0 === n && (n = {});
              var r = e.getData().state,
                i = e.getProps(),
                o = i.setBoundaryAlgorithm,
                a = i.settings,
                s = n.transitions,
                l = void 0 !== s && s,
                c = n.immediately,
                u = void 0 === c || c;
              t ? e.updateState((function() {
                return r && e.applyPostProcess({
                  name: "setBoundary",
                  immediately: u,
                  transitions: l
                }, (o || ng)(r, a, t))
              })) : e.updateState(null)
            }, this.moveCoordinates = function(t, n) {
              void 0 === n && (n = {});
              var r = e.getData(),
                i = e.getProps(),
                o = i.moveCoordinatesAlgorithm,
                a = i.onMove,
                s = i.onMoveEnd,
                l = i.settings,
                c = n.interaction,
                u = void 0 === c || c,
                h = n.transitions,
                p = void 0 !== h && h,
                d = n.immediately,
                f = void 0 !== d && d,
                g = n.normalize,
                m = void 0 === g || g,
                v = [];
              if (!r.transitions && r.state) {
                var _ = m ? sg(r.state, t) : function(e) {
                    return {
                      left: Bd(e.left) ? e.left : 0,
                      top: Bd(e.top) ? e.top : 0
                    }
                  }(t),
                  b = e.applyPostProcess({
                    name: "moveCoordinates",
                    interaction: u,
                    immediately: f,
                    transitions: p
                  }, (o || Kf)(r.state, l, _));
                v.push(a), u ? e.setInteractions({
                  moveCoordinates: !0
                }) : (b = e.applyPostProcess({
                  name: "moveCoordinatesEnd",
                  interaction: u,
                  immediately: f,
                  transitions: p
                }, b), v.push(s)), e.updateState(b, {
                  transitions: f && p
                }, v)
              }
            }, this.moveCoordinatesEnd = function(t) {
              void 0 === t && (t = {});
              var n = e.getData().state,
                r = e.getProps().onMoveEnd,
                i = t.transitions,
                o = void 0 === i || i,
                a = t.immediately,
                s = void 0 !== a && a;
              e.updateState((function() {
                return n && e.applyPostProcess({
                  name: "moveCoordinatesEnd",
                  transitions: o,
                  immediately: s
                }, n)
              }), {
                transitions: o
              }, [r]), e.setInteractions({
                moveCoordinates: !1
              })
            }, this.resizeCoordinates = function(t, n, r, i) {
              void 0 === i && (i = {});
              var o = e.getData().state,
                a = e.getProps(),
                s = a.resizeCoordinatesAlgorithm,
                l = a.onResize,
                c = a.onResizeEnd,
                u = a.settings,
                h = i.interaction,
                p = void 0 === h || h,
                d = i.transitions,
                f = void 0 !== d && d,
                g = i.immediately,
                m = void 0 !== g && g,
                v = i.normalize,
                _ = void 0 === v || v;
              if (!e.getTransitions().active && o) {
                var b = [],
                  y = _ ? function(e, t) {
                    var n = Df(e);
                    return {
                      left: Bd(t.left) ? t.left * n : 0,
                      top: Bd(t.top) ? t.top * n : 0,
                      right: Bd(t.right) ? t.right * n : 0,
                      bottom: Bd(t.bottom) ? t.bottom * n : 0
                    }
                  }(o, n) : function(e) {
                    return {
                      left: Bd(e.left) ? e.left : 0,
                      top: Bd(e.top) ? e.top : 0,
                      right: Bd(e.right) ? e.right : 0,
                      bottom: Bd(e.bottom) ? e.bottom : 0
                    }
                  }(n),
                  w = e.applyPostProcess({
                    name: "resizeCoordinates",
                    interaction: p,
                    immediately: m,
                    transitions: f
                  }, (s || tg)(o, u, t, y, jd(r) ? r : {}));
                b.push(l), p ? e.setInteractions({
                  resizeCoordinates: !0
                }) : (w = e.applyPostProcess({
                  name: "resizeCoordinatesEnd",
                  interaction: p,
                  immediately: m,
                  transitions: f
                }, w), b.push(c)), e.updateState(w, {
                  transitions: m && f
                }, b)
              }
            }, this.resizeCoordinatesEnd = function(t) {
              void 0 === t && (t = {});
              var n = e.getProps().onResizeEnd,
                r = e.getData().state,
                i = t.transitions,
                o = void 0 === i || i,
                a = t.immediately,
                s = void 0 !== a && a;
              e.updateState((function() {
                return r && e.applyPostProcess({
                  name: "resizeCoordinatesEnd",
                  transitions: o,
                  immediately: s
                }, r)
              }), {
                transitions: o
              }, [n]), e.setInteractions({
                resizeCoordinates: !1
              })
            }, this.getStencilCoordinates = function() {
              return If(e.getData().state)
            }, this.getCoordinates = function(t) {
              void 0 === t && (t = {});
              var n = e.getData().state,
                r = e.getProps().settings;
              if (n && n.coordinates) {
                var i = t.round;
                return void 0 === i || i ? function(e, t) {
                  if (Tf(e)) {
                    var n = Pf(e, t),
                      r = Mf(e, t),
                      i = {
                        width: Math.round(e.coordinates.width),
                        height: Math.round(e.coordinates.height),
                        left: Math.round(e.coordinates.left),
                        top: Math.round(e.coordinates.top)
                      };
                    return i.width > n.maxWidth ? i.width = Math.floor(e.coordinates.width) : i.width < n.minWidth && (i.width = Math.ceil(e.coordinates.width)), i.height > n.maxHeight ? i.height = Math.floor(e.coordinates.height) : i
                      .height < n.minHeight && (i.height = Math.ceil(e.coordinates.height)), kf(i, r)
                  }
                  return null
                }(n, r) : G({}, n.coordinates)
              }
              return null
            }, this.getVisibleArea = function() {
              var t = e.getData().state;
              return (null == t ? void 0 : t.visibleArea) ? G({}, t.visibleArea) : null
            }, this.getSettings = function() {
              var t = e.getProps().settings;
              return G({}, t)
            }, this.getState = function() {
              return Hf(e.getData().state)
            }, this.getTransforms = function() {
              var t = e.getData().state;
              return t ? Yd(t.transforms) : {
                rotate: 0,
                flip: {
                  horizontal: !1,
                  vertical: !1
                }
              }
            }, this.createDefaultState = function(t, n) {
              var r = e.getProps(),
                i = r.createStateAlgorithm,
                o = r.settings;
              return e.applyPostProcess({
                name: "createState",
                immediately: !0,
                transitions: !1
              }, (i || qf)({
                image: n,
                boundary: t
              }, o))
            }, this.isConsistent = function() {
              var t = e.getData().state,
                n = e.getProps().settings;
              return !t || Ff(t, n)
            }
          },
          wg = {
            linear: function(e) {
              return e
            },
            "ease-in": function(e) {
              return Math.pow(e, 1.675)
            },
            "ease-out": function(e) {
              return 1 - Math.pow(1 - e, 1.675)
            },
            "ease-in-out": function(e) {
              return .5 * (Math.sin((e - .5) * Math.PI) + 1)
            }
          },
          xg = function() {
            function e() {
              this.active = !1
            }
            return e.prototype.start = function(e) {
              var t;
              this.onStart = e.onStart, this.onProgress = e.onProgress, this.onStop = e.onStop, this.active || null === (t = this.onStart) || void 0 === t || t.call(this), this.id && window.cancelAnimationFrame(this.id), this.startTime =
                performance.now(), this.timingFunction = e.timingFunction, this.endTime = this.startTime + e.duration, this.active = !0, this.animate()
            }, e.prototype.animate = function() {
              var e = this;
              if (this.startTime && this.endTime) {
                var t = wg[this.timingFunction];
                t || (t = wg["ease-out"]);
                var n = 1 - (this.endTime - performance.now()) / (this.endTime - this.startTime),
                  r = Math.min(1, t(n));
                this.onProgress && this.onProgress(r), n < 1 ? this.id = window.requestAnimationFrame((function() {
                  return e.animate()
                })) : this.stop()
              } else this.stop()
            }, e.prototype.stop = function() {
              this.active = !1, this.id && window.cancelAnimationFrame(this.id), this.onStop && this.onStop()
            }, e
          }();

        function kg(e, t, n, r, i) {
          if (Tf(e)) {
            var o = e.transforms,
              a = e.coordinates,
              s = 0 !== o.rotate || o.flip.horizontal || o.flip.vertical ? function(e, t, n) {
                var r = n.rotate,
                  i = n.flip,
                  o = {
                    width: "naturalWidth" in t ? t.naturalWidth : t.width,
                    height: "naturalHeight" in t ? t.naturalHeight : t.height
                  },
                  a = _f(o, r),
                  s = e.getContext("2d");
                if (e.height = a.height, e.width = a.width, s) {
                  s.save();
                  var l = bf(rf(G({
                    left: 0,
                    top: 0
                  }, o)), r);
                  s.translate(-(l.left - a.width / 2), -(l.top - a.height / 2)), s.rotate(r * Math.PI / 180), s.translate(i.horizontal ? o.width : 0, i.vertical ? o.height : 0), s.scale(i.horizontal ? -1 : 1, i.vertical ? -1 : 1), s.drawImage(t,
                    0, 0, o.width, o.height), s.restore()
                }
                return e
              }(r, t, o) : t,
              l = G({
                minWidth: 0,
                minHeight: 0,
                maxWidth: 1 / 0,
                maxHeight: 1 / 0,
                maxArea: 1 / 0,
                imageSmoothingEnabled: !0,
                imageSmoothingQuality: "high",
                fillColor: "transparent"
              }, i),
              c = function(e) {
                return e.find((function(e) {
                  return Hd(e)
                }))
              },
              u = Uf({
                sizeRestrictions: {
                  minWidth: c([l.width, l.minWidth]) || 0,
                  minHeight: c([l.height, l.minHeight]) || 0,
                  maxWidth: c([l.width, l.maxWidth]) || 1 / 0,
                  maxHeight: c([l.height, l.maxHeight]) || 1 / 0
                },
                width: a.width,
                height: a.height,
                aspectRatio: {
                  minimum: a.width / a.height,
                  maximum: a.width / a.height
                }
              });
            if (l.maxArea && u.width * u.height > l.maxArea) {
              var h = Math.sqrt(l.maxArea / (u.width * u.height));
              u = {
                width: Math.round(h * u.width),
                height: Math.round(h * u.height)
              }
            }
            return function(e, t, n, r, i) {
              e.width = r ? r.width : n.width, e.height = r ? r.height : n.height;
              var o = e.getContext("2d");
              if (o) {
                o.clearRect(0, 0, e.width, e.height), i && (i.imageSmoothingEnabled && (o.imageSmoothingEnabled = i.imageSmoothingEnabled), i.imageSmoothingQuality && (o.imageSmoothingQuality = i.imageSmoothingQuality), i.fillColor && (o
                  .fillStyle = i.fillColor, o.fillRect(0, 0, e.width, e.height), o.save()));
                var a = n.left < 0 ? -n.left : 0,
                  s = n.top < 0 ? -n.top : 0;
                o.drawImage(t, n.left + a, n.top + s, n.width, n.height, a, s, e.width, e.height)
              }
              return e
            }(n, s, a, u, l)
          }
          return null
        }

        function Cg(e, t, n) {
          t.style.width = "0px", t.style.height = "0px", t.style.width = Math.max(e.clientWidth, n.width) + "px";
          var r = n.width / n.height;
          t.style.height = Math.max(e.clientHeight, t.clientWidth / r) + "px", t.style.width = t.clientHeight * r + "px"
        }

        function Sg(e, t, n) {
          t.style.width = "0px", t.style.height = "0px", t.style.width = Math.max(e.getBoundingClientRect().width, n.width) + "px";
          var r = n.width / n.height;
          t.style.height = Math.max(e.getBoundingClientRect().height, t.getBoundingClientRect().width / r) + "px", t.style.width = t.getBoundingClientRect().height * r + "px", t.clientWidth / t.clientHeight > e.clientWidth / e.clientHeight ? t
            .clientWidth > e.clientWidth && (t.style.width = e.clientWidth + "px", t.style.height = e.clientWidth / r + "px") : t.clientHeight > e.clientHeight && (t.style.height = e.clientHeight + "px", t.style.width = e.clientHeight * r + "px")
        }

        function Eg(e) {
          return new Promise((function(t, n) {
            try {
              if (e)
                if (/^data:/i.test(e)) t(function(e) {
                  e = e.replace(/^data:([^;]+);base64,/gim, "");
                  for (var t = atob(e), n = t.length, r = new ArrayBuffer(n), i = new Uint8Array(r), o = 0; o < n; o++) i[o] = t.charCodeAt(o);
                  return r
                }(e));
                else if (/^blob:/i.test(e)) {
                var r = new FileReader;
                r.onload = function(e) {
                  var n;
                  t(null === (n = e.target) || void 0 === n ? void 0 : n.result)
                }, o = e, a = function(e) {
                  r.readAsArrayBuffer(e)
                }, (s = new XMLHttpRequest).open("GET", o, !0), s.responseType = "blob", s.onload = function() {
                  200 != this.status && 0 !== this.status || a(this.response)
                }, s.send()
              } else {
                var i = new XMLHttpRequest;
                i.onreadystatechange = function() {
                  4 === i.readyState && (200 === i.status || 0 === i.status ? t(i.response) : n("Warning: could not load an image to parse its orientation"))
                }, i.onprogress = function() {
                  "image/jpeg" !== i.getResponseHeader("content-type") && i.abort()
                }, i.withCredentials = !1, i.open("GET", e, !0), i.responseType = "arraybuffer", i.send(null)
              } else n("Error: the image is empty")
            } catch (e) {
              n(e)
            }
            var o, a, s
          }))
        }

        function Tg(e) {
          var t = e.rotate,
            n = void 0 === t ? 0 : t,
            r = e.flip,
            i = void 0 === r ? {
              horizontal: !1,
              vertical: !1
            } : r,
            o = e.scale,
            a = void 0 === o ? 1 : o;
          return " rotate(" + n + "deg) scaleX(" + a * (i.horizontal ? -1 : 1) + ") scaleY(" + a * (i.vertical ? -1 : 1) + ")"
        }

        function Og(e) {
          try {
            var t, n = new DataView(e),
              r = void 0,
              i = void 0,
              o = void 0,
              a = void 0;
            if (255 === n.getUint8(0) && 216 === n.getUint8(1))
              for (var s = n.byteLength, l = 2; l + 1 < s;) {
                if (255 === n.getUint8(l) && 225 === n.getUint8(l + 1)) {
                  o = l;
                  break
                }
                l++
              }
            if (o && (r = o + 10, "Exif" === function(e, t, n) {
                var r, i = "";
                for (r = t, n += t; r < n; r++) i += String.fromCharCode(e.getUint8(r));
                return i
              }(n, o + 4, 4))) {
              var c = n.getUint16(r);
              if (((i = 18761 === c) || 19789 === c) && 42 === n.getUint16(r + 2, i)) {
                var u = n.getUint32(r + 4, i);
                u >= 8 && (a = r + u)
              }
            }
            if (a)
              for (var h = n.getUint16(a, i), p = 0; p < h; p++) {
                l = a + 12 * p + 2;
                if (274 === n.getUint16(l, i)) {
                  l += 8, t = n.getUint16(l, i), n.setUint16(l, 1, i);
                  break
                }
              }
            return t
          } catch (e) {
            return null
          }
        }

        function Ag(e) {
          var t = e.src,
            n = e.arrayBuffer,
            r = void 0 === n ? null : n,
            i = e.orientation,
            o = void 0 === i ? null : i,
            a = {
              src: t,
              arrayBuffer: r,
              revoke: !1,
              transforms: {
                flip: {
                  horizontal: !1,
                  vertical: !1
                },
                rotate: 0
              }
            };
          return r && o && o > 1 ? Pd(t) || !Md(t) ? (a.src = URL.createObjectURL(new Blob([r])), a.revoke = !0) : a.src = function(e) {
            for (var t = [], n = new Uint8Array(e); n.length > 0;) {
              var r = n.subarray(0, 8192);
              t.push(String.fromCharCode.apply(null, Array.from ? Array.from(r) : r.slice())), n = n.subarray(8192)
            }
            return "data:image/jpeg;base64," + btoa(t.join(""))
          }(r) : a.src = t, o && (a.transforms = function(e) {
            var t = {
              flip: {
                horizontal: !1,
                vertical: !1
              },
              rotate: 0
            };
            if (e) switch (e) {
              case 2:
                t.flip.horizontal = !0;
                break;
              case 3:
                t.rotate = -180;
                break;
              case 4:
                t.flip.vertical = !0;
                break;
              case 5:
                t.rotate = 90, t.flip.vertical = !0;
                break;
              case 6:
                t.rotate = 90;
                break;
              case 7:
                t.rotate = 90, t.flip.horizontal = !0;
                break;
              case 8:
                t.rotate = -90
            }
            return t
          }(o)), a
        }

        function Pg(e, t) {
          return void 0 === t && (t = {}),
            function(e, t) {
              void 0 === t && (t = {});
              var n = t.checkOrientation,
                r = t.parse;
              return new Promise((function(t) {
                n || r ? Eg(e).then((function(n) {
                  var r = Og(n);
                  t(Ag(n ? {
                    src: e,
                    arrayBuffer: n,
                    orientation: r
                  } : {
                    src: e,
                    arrayBuffer: null,
                    orientation: null
                  }))
                })).catch((function(n) {
                  t(Ag({
                    src: e
                  }))
                })) : t(Ag({
                  src: e
                }))
              }))
            }(e, G(G({}, t), {
              crossOrigin: Dd(e) && t.crossOrigin
            })).then((function(e) {
              return new Promise((function(n, r) {
                (function(e, t) {
                  return void 0 === t && (t = {}), new Promise((function(n, r) {
                    var i = document.createElement("img");
                    t.crossOrigin && (i.crossOrigin = !0 !== t.crossOrigin ? t.crossOrigin : "anonymous"), i.src = e, i.style.visibility = "hidden", i.style.position = "fixed", document.body.appendChild(i), i.complete ? (n(i),
                      document.body.removeChild(i)) : (i.addEventListener("load", (function() {
                      n(i), document.body.removeChild(i)
                    })), i.addEventListener("error", (function() {
                      r(null), document.body.removeChild(i)
                    })))
                  }))
                })(e.src, t).then((function(t) {
                  n(G(G({}, e), {
                    width: t.naturalWidth,
                    height: t.naturalHeight
                  }))
                })).catch((function() {
                  r(null)
                }))
              }))
            }))
        }

        function Mg(e, t, n, r, i) {
          void 0 === i && (i = null);
          var o = e.width > e.height ? {
              width: Math.min(512, e.width),
              height: Math.min(512, e.width) / (e.width / e.height)
            } : {
              height: Math.min(512, e.height),
              width: Math.min(512, e.height) * (e.width / e.height)
            },
            a = Lf(t),
            s = {
              rotate: t.transforms.rotate,
              flip: {
                horizontal: t.transforms.flip.horizontal,
                vertical: t.transforms.flip.vertical
              },
              translateX: n.left / r,
              translateY: n.top / r,
              scale: 1 / r
            },
            l = {
              left: (o.width - a.width) / (2 * r),
              top: (o.height - a.height) / (2 * r)
            },
            c = {
              left: (1 - 1 / r) * o.width / 2,
              top: (1 - 1 / r) * o.height / 2
            },
            u = G(G({}, s), {
              scale: s.scale * (e.width / o.width)
            }),
            h = {
              width: o.width + "px",
              height: o.height + "px",
              left: "0px",
              top: "0px",
              transition: "none",
              transform: "translate3d(" + (-l.left - c.left - s.translateX) + "px, " + (-l.top - c.top - s.translateY) + "px, 0px)" + Tg(u),
              willChange: "none"
            };
          return i && i.active && (h.willChange = "transform", h.transition = i.duration + "ms " + i.timingFunction), h
        }

        function Dg(e, t, n) {
          return n.immediately ? function(e, t) {
            if (Tf(e)) {
              var n = Hf(e),
                r = {
                  width: 0,
                  height: 0
                };
              hf(n.boundary) > hf(n.coordinates) ? (r.height = .8 * n.boundary.height, r.width = r.height * hf(n.coordinates)) : (r.width = .8 * n.boundary.width, r.height = r.width * hf(n.coordinates)), n.visibleArea = uf(n.visibleArea, n
                .coordinates.width * n.boundary.width / (n.visibleArea.width * r.width));
              var i = gf(n.visibleArea, Of(n, t));
              return n.visibleArea = uf(n.visibleArea, i), 1 !== i && (r.height /= i, r.width /= i), n.visibleArea = lf(n.visibleArea, nf(rf(n.coordinates), rf(n.visibleArea))), n.visibleArea = kf(n.visibleArea, Af(n, t)), n.coordinates = kf(n
                .coordinates, wf(cf(n.visibleArea), Mf(n, t))), n
            }
            return e
          }(e, t) : e
        }
        var Ig = function(e, t) {
          var n, r = (n = Je(!0)).current ? (n.current = !1, !0) : n.current;
          Ze((function() {
            if (!r) return e()
          }), t)
        };
        var Rg = function(e) {
          function t(t, n) {
            var r = e.call(this) || this;
            return r.props = t, r.notify = n, r.data = {
              state: null,
              transitions: !1,
              interactions: {
                moveCoordinates: !1,
                resizeCoordinates: !1,
                transformImage: {
                  rotate: !1,
                  move: !1,
                  scale: !1,
                  flip: !1
                }
              }
            }, r
          }
          return X(t, e), t.prototype.getProps = function() {
            return this.props()
          }, t.prototype.setData = function(e) {
            this.data = e, this.notify()
          }, t.prototype.getData = function() {
            return this.data
          }, t
        }(yg);

        function jg() {
          var e = Z(qe({}), 2)[1];
          return function() {
            e({})
          }
        }

        function Ng(e) {
          var t = jg(),
            n = function(e) {
              var t = Je(e);
              return t.current = e,
                function() {
                  for (var e = [], n = 0; n < arguments.length; n++) e[n] = arguments[n];
                  return t.current.apply(t, $([], Z(e), !1))
                }
            }((function() {
              var t = e(),
                n = t.settings,
                r = Y(t, ["settings"]),
                i = G({
                  imageRestriction: Zd.fitArea,
                  transformImage: {
                    adjustStencil: !0
                  }
                }, n),
                o = G({
                  transitions: !0
                }, r);
              return G({
                settings: G(G({}, i), vg(i))
              }, o)
            }));
          return Je(new Rg(n, t)).current
        }
        var Lg = function(e) {
          var t = Je(e),
            n = function() {
              t.current && t.current()
            };
          Ze((function() {
            t.current = e
          }), [e]), Ze((function() {
            return window.addEventListener("resize", n), window.addEventListener("orientationchange", n),
              function() {
                window.removeEventListener("resize", n), window.removeEventListener("orientationchange", n)
              }
          }), [])
        };

        function Fg(e) {
          var t = this,
            n = e(),
            r = n.src,
            i = n.onReady,
            o = n.onError,
            a = n.onUpdate,
            s = n.canvas,
            l = void 0 === s || s,
            c = n.unloadTime,
            u = void 0 === c ? 500 : c,
            h = n.crossOrigin,
            p = void 0 === h || h,
            d = n.checkOrientation,
            f = void 0 === d || d,
            g = n.autoReconcileState,
            m = void 0 === g || g,
            v = Je(null),
            _ = Je(null),
            b = Je(null),
            y = Je(null),
            w = Z(function(e) {
              var t = Z(qe(e), 2),
                n = t[0],
                r = t[1],
                i = Z(qe(null), 2),
                o = i[0],
                a = i[1],
                s = Je(e);
              return Ig((function() {
                o && o(n, s.current)
              }), [o]), [n, function(e, t) {
                s.current = n, r(e), a((function() {
                  return t
                }))
              }]
            }(null), 2),
            x = w[0],
            k = w[1],
            C = Ng((function() {
              return G(G({}, e()), {
                getInstance: function() {
                  return y.current
                }
              })
            })),
            S = function(e) {
              var t = e.src,
                n = e.onLoadingStart,
                r = e.onLoadingEnd,
                i = e.onError,
                o = e.onLoad,
                a = e.crossOrigin,
                s = e.checkOrientation,
                l = e.canvas,
                c = e.unloadTime,
                u = Z(qe(!1), 2),
                h = u[0],
                p = u[1],
                d = Z(qe(!1), 2),
                f = d[0],
                g = d[1],
                m = Z(qe(null), 2),
                v = m[0],
                _ = m[1],
                b = Je(null);
              return Ze((function() {
                if (b.current !== t)
                  if (b.current = t || null, g(!1), t) {
                    p(!0), null == n || n();
                    var e = [Pg(t, {
                      crossOrigin: Rd(a) ? l : a,
                      checkOrientation: s
                    })];
                    f && c && e.push(Gd(c)), Promise.all(e).then((function(e) {
                      var n = Z(e, 1)[0];
                      b.current === t && (_(n), null == o || o(n))
                    })).catch((function() {
                      b.current === t && (null == i || i())
                    })).finally((function() {
                      b.current === t && (null == r || r(), p(!1))
                    }))
                  } else c ? Gd(c).then((function() {
                    _(null)
                  })) : _(null)
              }), [t]), Ze((function() {
                v && g(!0)
              }), [v]), {
                isLoading: function() {
                  return h
                },
                isLoaded: function() {
                  return f
                },
                getImage: function() {
                  return v
                },
                setImage: _
              }
            }({
              src: r,
              crossOrigin: p,
              checkOrientation: f,
              unloadTime: u,
              canvas: l,
              onLoad: function() {
                y.current && (null == i || i(y.current))
              },
              onError: function() {
                y.current && (null == o || o(y.current))
              }
            }),
            E = function(e, t) {
              void 0 === t && (t = !0);
              var n = Z(qe(t), 2),
                r = n[0],
                i = n[1];
              return $e((function() {
                r && !e.hasInteractions() && e.reconcileState()
              })), {
                pause: function() {
                  i(!1)
                },
                resume: function() {
                  i(!0)
                }
              }
            }(C, m),
            T = function() {
              return q(t, void 0, void 0, (function() {
                var e, t, n;
                return K(this, (function(r) {
                  switch (r.label) {
                    case 0:
                      return _.current ? (E.pause(), e = S.getImage(), [4, null === (n = _.current) || void 0 === n ? void 0 : n.stretchTo(e)]) : [3, 2];
                    case 1:
                      t = r.sent(), k(e, (function() {
                        t && e ? C.reset(t, e) : C.clear()
                      })), E.resume(), r.label = 2;
                    case 2:
                      return [2]
                  }
                }))
              }))
            },
            O = function() {
              return q(t, void 0, void 0, (function() {
                var e, t, n, r;
                return K(this, (function(i) {
                  switch (i.label) {
                    case 0:
                      return _.current ? (E.pause(), e = S.getImage(), [4, null === (r = _.current) || void 0 === r ? void 0 : r.stretchTo(e)]) : [3, 2];
                    case 1:
                      (t = i.sent()) && e ? (n = C.getState()) ? t.width === n.boundary.width && t.height === n.boundary.height || (C.setBoundary(t), C.reconcileState()) : C.reset(t, e) : C.clear(), E.resume(), i.label = 2;
                    case 2:
                      return [2]
                  }
                }))
              }))
            },
            A = {
              reset: function() {
                return T()
              },
              refresh: function() {
                return O()
              },
              setImage: function(e) {
                return k(e)
              },
              reconcileState: C.reconcileState,
              moveCoordinates: C.moveCoordinates,
              moveCoordinatesEnd: C.moveCoordinatesEnd,
              resizeCoordinates: C.resizeCoordinates,
              clear: C.clear,
              resizeCoordinatesEnd: C.resizeCoordinatesEnd,
              moveImage: C.moveImage,
              flipImage: C.flipImage,
              zoomImage: C.zoomImage,
              rotateImage: C.rotateImage,
              transformImage: C.transformImage,
              transformImageEnd: C.transformImageEnd,
              setCoordinates: C.setCoordinates,
              setVisibleArea: C.setVisibleArea,
              startTransitions: C.startTransitions,
              setState: C.setState,
              hasInteractions: C.hasInteractions,
              getStencilCoordinates: C.getStencilCoordinates,
              getCoordinates: C.getCoordinates,
              getVisibleArea: C.getVisibleArea,
              getTransforms: C.getTransforms,
              getTransitions: C.getTransitions,
              getInteractions: C.getInteractions,
              getSettings: C.getSettings,
              getState: C.getState,
              getDefaultState: function() {
                var e = C.getState(),
                  t = S.getImage();
                return e && t ? C.createDefaultState(e.boundary, t) : null
              },
              getCanvas: function(e) {
                var t = C.getState();
                return v.current && b.current && t ? b.current.draw(t, v.current, e) : null
              },
              getImage: function() {
                return x ? G({}, x) : null
              },
              isLoading: S.isLoading,
              isLoaded: S.isLoaded
            };
          return Lg((function() {
            O()
          })), Ig((function() {
            T()
          }), [S.getImage()]), Ig((function() {
            y.current && (null == a || a(y.current))
          }), [S.isLoaded(), S.isLoading()]), Qe(y, (function() {
            return A
          })), {
            cropper: A,
            refs: {
              image: v,
              boundary: _,
              canvas: b
            },
            image: x
          }
        }
        var Bg = mt((function(e, t) {
          var n = e.className,
            r = e.style,
            i = e.stretcherClassName,
            o = e.contentClassName,
            a = e.stretchAlgorithm,
            s = void 0 === a ? Cg : a,
            l = e.sizeAlgorithm,
            c = void 0 === l ? fg : l,
            u = e.children,
            h = Je(null),
            p = Je(null);
          return Qe(t, (function() {
            return {
              reset: function() {
                var e = h.current;
                e && (e.style.height = "", e.style.width = "")
              },
              stretchTo: function(e) {
                var t = h.current,
                  n = p.current;
                if ((null == e ? void 0 : e.width) && (null == e ? void 0 : e.height) && t && n) {
                  s(n, t, e);
                  var r = c(n, e);
                  return Promise.resolve(r.width && r.height ? r : null)
                }
                return t && (t.style.height = "", t.style.width = ""), Promise.resolve(null)
              }
            }
          })), Jt.createElement("div", {
            ref: p,
            style: r,
            className: ul("advanced-cropper-boundary", n)
          }, Jt.createElement("div", {
            ref: h,
            className: ul(["advanced-cropper-boundary__stretcher", i])
          }), Jt.createElement("div", {
            className: ul(["advanced-cropper-boundary__content", o])
          }, u))
        }));
        Bg.displayName = "StretchableBoundary";
        var zg = function(e) {
            var t = e.visible,
              n = e.className,
              r = e.style,
              i = e.children;
            return Jt.createElement("div", {
              style: r,
              className: ul(n, "advanced-cropper-fade", Boolean(t) && "advanced-cropper-fade--visible")
            }, i)
          },
          Hg = function(e) {
            var t = e.cropper,
              n = e.children,
              r = e.className,
              i = e.style,
              o = t ? t.getState() : null,
              a = !!t && t.isLoaded();
            return Jt.createElement("div", {
              className: ul(r, "advanced-cropper-wrapper"),
              style: i
            }, Jt.createElement(zg, {
              visible: o && a,
              className: "advanced-cropper-wrapper__fade"
            }, n))
          };

        function Ug(e) {
          e.preventDefault()
        }
        var Wg = mt((function(e, t) {
          var n = e.className,
            r = e.cropper,
            i = e.crossOrigin,
            o = void 0 === i || i,
            a = r.getState(),
            s = r.getTransitions(),
            l = r.getImage(),
            c = l && a ? function(e, t, n) {
              return void 0 === n && (n = null), e && t && t.visibleArea ? Mg(e, t, t.visibleArea, Df(t), n) : {}
            }(l, a, s) : {},
            u = l ? l.src : void 0;
          return u ? Jt.createElement("img", {
            key: u,
            ref: t,
            className: ul("advanced-cropper-background-image", n),
            src: u,
            crossOrigin: !0 === o ? "anonymous" : o || void 0,
            style: c,
            onMouseDown: Ug
          }) : null
        }));
        Wg.displayName = "CropperBackgroundImage";
        var Vg = mt((function(e, t) {
          var n = Je(null),
            r = Je(null);
          return Qe(t, (function() {
            return {
              draw: function(e, t, i) {
                return void 0 === i && (i = {}), t && n.current && r.current ? kg(e, t, n.current, r.current, i) : null
              }
            }
          })), Jt.createElement(Jt.Fragment, null, Jt.createElement("canvas", {
            className: "advanced-cropper-canvas",
            ref: n
          }), Jt.createElement("canvas", {
            className: "advanced-cropper-canvas",
            ref: r
          }))
        }));
        Vg.displayName = "CropperCanvas";
        var Xg = function(e) {
            function t(t) {
              var n = e.call(this, t) || this;
              return n.processMove = function(e, t) {
                var r, i = n.container.current;
                if (i && n.touches.length) {
                  var o = i.getBoundingClientRect(),
                    a = o.left,
                    s = o.top;
                  if (1 === n.touches.length && 1 === t.length && n.props.onMove) {
                    var l = {
                        left: Math.abs(t[0].clientX - n.anchor.left - a) < Math.abs(n.touches[0].clientX - n.anchor.left - a),
                        top: Math.abs(t[0].clientY - n.anchor.top - s) < Math.abs(n.touches[0].clientY - n.anchor.top - s)
                      },
                      c = {
                        left: 0,
                        top: 0
                      };
                    n.props.useAnchor && l.left || (c.left = t[0].clientX - n.touches[0].clientX), n.props.useAnchor && l.top || (c.top = t[0].clientY - n.touches[0].clientY), null === (r = n.props) || void 0 === r || r.onMove(c, e), n
                      .touches = $([], Z(t), !1)
                  }
                }
              }, n.processEnd = function() {
                var e = n.props,
                  t = e.onMoveEnd,
                  r = e.onLeave;
                !n.props.disabled && n.touches.length && (null == t || t()), n.hovered && (null == r || r(), n.hovered = !1), n.touches = []
              }, n.initAnchor = function(e) {
                var t = n.container.current;
                if (t) {
                  var r = t.getBoundingClientRect(),
                    i = r.left,
                    o = r.top;
                  n.anchor = {
                    left: e.clientX - i,
                    top: e.clientY - o
                  }
                }
              }, n.onMouseOver = function() {
                var e = n.props,
                  t = e.onEnter,
                  r = e.disabled;
                n.hovered || r || (n.hovered = !0, null == t || t())
              }, n.onMouseLeave = function() {
                var e = n.props.onLeave;
                n.hovered && !n.touches.length && (n.hovered = !1, null == e || e())
              }, n.onTouchStart = function(e) {
                var t = n.props,
                  r = t.onEnter,
                  i = t.onMoveStart,
                  o = t.disabled;
                if (e.cancelable) {
                  n.touches = Array.from(e.touches);
                  var a = !o && 1 === e.touches.length;
                  a && (n.touches = Array.from(e.touches), null == i || i()), n.hovered || o || (n.hovered = !0, null == r || r()), (n.started || a) && (e.preventDefault(), e.stopPropagation())
                }
              }, n.onTouchEnd = function() {
                n.started = !1, n.processEnd()
              }, n.onTouchMove = function(e) {
                n.touches.length >= 1 && (n.started ? (n.processMove(e, Array.from(e.touches)), e.preventDefault(), e.stopPropagation()) : Ud({
                  left: n.touches[0].clientX,
                  top: n.touches[0].clientY
                }, {
                  left: e.touches[0].clientX,
                  top: e.touches[0].clientY
                }) > (n.props.activationDistance || 0) && (n.initAnchor({
                  clientX: e.touches[0].clientX,
                  clientY: e.touches[0].clientY
                }), n.started = !0))
              }, n.onMouseDown = function(e) {
                var t = n.props,
                  r = t.onMoveStart;
                if (!t.disabled && 0 === e.button) {
                  var i = {
                    clientX: e.clientX,
                    clientY: e.clientY
                  };
                  n.touches = [i], n.initAnchor(i), e.stopPropagation(), null == r || r()
                }
              }, n.onMouseMove = function(e) {
                !n.props.disabled && n.touches.length && (n.processMove(e, [{
                  clientX: e.clientX,
                  clientY: e.clientY
                }]), e.preventDefault && e.cancelable && e.preventDefault(), e.stopPropagation())
              }, n.onMouseUp = function() {
                n.processEnd()
              }, n.touches = [], n.hovered = !1, n.started = !1, n.anchor = {
                left: 0,
                top: 0
              }, n.container = {
                current: null
              }, n
            }
            return X(t, e), t.prototype.componentWillUnmount = function() {
              window.removeEventListener("mouseup", this.onMouseUp), window.removeEventListener("mousemove", this.onMouseMove), window.removeEventListener("touchmove", this.onTouchMove), window.removeEventListener("touchend", this.onTouchEnd);
              var e = this.container.current;
              e && (e.removeEventListener("touchstart", this.onTouchStart), e.removeEventListener("mousedown", this.onMouseDown))
            }, t.prototype.componentDidMount = function() {
              window.addEventListener("mouseup", this.onMouseUp, {
                passive: !1
              }), window.addEventListener("mousemove", this.onMouseMove, {
                passive: !1
              }), window.addEventListener("touchmove", this.onTouchMove, {
                passive: !1
              }), window.addEventListener("touchend", this.onTouchEnd, {
                passive: !1
              });
              var e = this.container.current;
              e && (e.addEventListener("touchstart", this.onTouchStart, {
                passive: !1
              }), e.addEventListener("mousedown", this.onMouseDown, {
                passive: !1
              }))
            }, t.prototype.componentDidUpdate = function(e) {
              this.props.disabled && !e.disabled && (this.touches = [])
            }, t.prototype.render = function() {
              var e = this.props,
                t = e.children,
                n = e.className;
              return Jt.createElement("div", {
                className: ul("advanced-cropper-draggable-element", n),
                ref: this.container,
                onMouseOver: this.onMouseOver,
                onMouseLeave: this.onMouseLeave
              }, t)
            }, t.defaultProps = {
              disabled: !1,
              activationDistance: 30,
              useAnchor: !0,
              rerender: !0
            }, t
          }(fe),
          Gg = function(e) {
            var t = e.position,
              n = e.className,
              r = e.disabled,
              i = e.onDrag,
              o = e.onDragEnd,
              a = e.onLeave,
              s = e.onEnter,
              l = e.children;
            return Jt.createElement(Xg, {
              className: ul(["advanced-cropper-line-wrapper", t && "advanced-cropper-line-wrapper--".concat(t), n]),
              disabled: r,
              onMove: i,
              onMoveEnd: o,
              onLeave: a,
              onEnter: s,
              activationDistance: 0
            }, Jt.createElement("div", {
              className: ul(["advanced-cropper-line-wrapper__content", t && "advanced-cropper-line-wrapper__content--".concat(t)])
            }, l))
          },
          Yg = function(e) {
            var t, n, r = e.position,
              i = e.hoverClassName,
              o = e.wrapperClassName,
              a = e.defaultClassName,
              s = e.disabled,
              l = e.onMove,
              c = e.onMoveEnd,
              u = Z(qe(!1), 2),
              h = u[0],
              p = u[1];
            return Jt.createElement(Gg, {
              className: ul("advanced-cropper-simple-line-wrapper", o, (t = {}, t["advanced-cropper-simple-line-wrapper--".concat(r)] = !!r, t)),
              position: r,
              disabled: s,
              onDrag: l,
              onDragEnd: c,
              onLeave: function() {
                p(!1)
              },
              onEnter: function() {
                p(!0)
              }
            }, Jt.createElement("div", {
              className: ul("advanced-cropper-simple-line", h && "advanced-cropper-simple-line--hover", a, h && i, (n = {}, n["advanced-cropper-simple-line--".concat(r)] = !!r, n))
            }))
          },
          qg = function(e) {
            var t = e.horizontalPosition,
              n = e.verticalPosition,
              r = e.className,
              i = e.disabled,
              o = e.onDrag,
              a = e.onDragEnd,
              s = e.onLeave,
              l = e.onEnter,
              c = e.children,
              u = e.style,
              h = t || n ? Ad(t, n).snakeCase : null;
            return Jt.createElement("div", {
              style: u,
              className: ul(r, "advanced-cropper-handler-wrapper", h && "advanced-cropper-handler-wrapper--".concat(h), i && "advanced-cropper-handler-wrapper--disabled")
            }, Jt.createElement(Xg, {
              className: "advanced-cropper-handler-wrapper__draggable",
              disabled: i,
              onMove: o,
              onMoveEnd: a,
              onLeave: s,
              onEnter: l,
              activationDistance: 0
            }, c))
          },
          Kg = function(e) {
            var t, n = e.verticalPosition,
              r = e.horizontalPosition,
              i = e.hoverClassName,
              o = e.wrapperClassName,
              a = e.defaultClassName,
              s = e.wrapperStyle,
              l = e.disabled,
              c = e.onMove,
              u = e.onMoveEnd,
              h = Z(qe(!1), 2),
              p = h[0],
              d = h[1];
            return Jt.createElement(qg, {
              style: s,
              className: ul("advanced-cropper-simple-handler-wrapper", o, n && "advanced-cropper-simple-handler-wrapper--".concat(n), r && "advanced-cropper-simple-handler-wrapper--".concat(r), r && n &&
                "advanced-cropper-simple-handler-wrapper--".concat(r, "-").concat(n), p && "advanced-cropper-simple-handler-wrapper--hover"),
              verticalPosition: n,
              horizontalPosition: r,
              disabled: l,
              onDrag: c,
              onDragEnd: u,
              onLeave: function() {
                d(!1)
              },
              onEnter: function() {
                d(!0)
              }
            }, Jt.createElement("div", {
              className: ul("advanced-cropper-simple-handler", p && "advanced-cropper-simple-handler--hover", a, p && i, (t = {}, t["advanced-cropper-simple-handler--".concat(n)] = !!n, t["advanced-cropper-simple-handler--".concat(r)] = !!
                r, t["advanced-cropper-simple-handler--".concat(r, "-").concat(n)] = r && n, t))
            }))
          },
          Zg = ["east", "west", null],
          $g = ["south", "north", null],
          Jg = function(e) {
            var t = e.style,
              n = e.className,
              r = e.children,
              i = e.onResize,
              o = e.onResizeEnd,
              a = e.handlerComponent,
              s = void 0 === a ? Kg : a,
              l = e.handlers,
              c = void 0 === l ? {
                eastNorth: !0,
                north: !0,
                westNorth: !0,
                west: !0,
                westSouth: !0,
                south: !0,
                eastSouth: !0,
                east: !0
              } : l,
              u = e.handlerClassNames,
              h = void 0 === u ? {} : u,
              p = e.handlerWrapperClassNames,
              d = void 0 === p ? {} : p,
              f = e.lines,
              g = void 0 === f ? {
                west: !0,
                north: !0,
                east: !0,
                south: !0
              } : f,
              m = e.lineComponent,
              v = void 0 === m ? Yg : m,
              _ = e.lineClassNames,
              b = void 0 === _ ? {} : _,
              y = e.lineWrapperClassNames,
              w = void 0 === y ? {} : y,
              x = e.disabled,
              k = void 0 !== x && x,
              C = e.reference,
              S = void 0 === C ? null : C,
              E = Z(qe(null), 2),
              T = E[0],
              O = E[1],
              A = et((function() {
                var e = [];
                return Zg.forEach((function(t) {
                  $g.forEach((function(n) {
                    if (t !== n) {
                      var r = Ad(t, n),
                        i = r.snakeCase,
                        o = r.camelCase;
                      i && o && e.push({
                        name: o,
                        className: i,
                        verticalPosition: n,
                        horizontalPosition: t
                      })
                    }
                  }))
                })), e
              }), []),
              P = et((function() {
                var e = [];
                return A.forEach((function(t) {
                  var n;
                  "west" !== (n = t.name) && "south" !== n && "north" !== n && "east" !== n || !(jd(g) ? g[t.name] : g) || e.push({
                    name: t.name,
                    component: v,
                    className: ul(b.default, b[t.name], k && b.disabled),
                    wrapperClassName: ul("advanced-cropper-bounding-box__line", "advanced-cropper-bounding-box__line--".concat(t.name), w.default, w[t.name], k && w.disabled),
                    hoverClassName: b.hover,
                    verticalPosition: t.verticalPosition,
                    horizontalPosition: t.horizontalPosition,
                    disabled: k
                  })
                })), e
              }), [A, g, v, b, w, k]),
              M = et((function() {
                var e = [];
                return A.forEach((function(t) {
                  (jd(c) ? c[t.name] : c) && e.push({
                    name: t.name,
                    component: s,
                    className: ul(h.default, h[t.name]),
                    containerClassName: ul("advanced-cropper-bounding-box__handler-wrapper", "advanced-cropper-bounding-box__handler-wrapper--".concat(t.className)),
                    wrapperClassName: ul("advanced-cropper-bounding-box__handler", "advanced-cropper-bounding-box__handler--".concat(t.className), d.default, d[t.name]),
                    hoverClassName: h.hover,
                    verticalPosition: t.verticalPosition,
                    horizontalPosition: t.horizontalPosition,
                    disabled: k
                  })
                })), e
              }), [A, c, s, h, d, k]),
              D = function(e, t) {
                return function(n, r) {
                  var o, a = {
                    left: n.left,
                    top: n.top
                  };
                  if (!t && e ? o = "width" : t && !e && (o = "height"), !k) {
                    if (i) {
                      var s = Ad(e, t).camelCase;
                      s && i(s, a, {
                        reference: T || S,
                        preserveAspectRatio: r && r.shiftKey,
                        respectDirection: o,
                        compensate: !0
                      })
                    }
                    T || O(S)
                  }
                }
              },
              I = function() {
                null == o || o(), O(null)
              };
            return Jt.createElement("div", {
              className: ul("advanced-cropper-bounding-box", n),
              style: t
            }, r, Jt.createElement("div", null, P.map((function(e) {
              return Jt.createElement(e.component, {
                key: e.name,
                defaultClassName: e.className,
                hoverClassName: e.hoverClassName,
                wrapperClassName: e.wrapperClassName,
                position: e.name,
                disabled: e.disabled,
                onMove: D(e.horizontalPosition, e.verticalPosition),
                onMoveEnd: I
              })
            }))), Jt.createElement("div", null, M.map((function(e) {
              var t = Jt.createElement(e.component, {
                defaultClassName: e.className,
                hoverClassName: e.hoverClassName,
                wrapperClassName: e.wrapperClassName,
                horizontalPosition: e.horizontalPosition,
                verticalPosition: e.verticalPosition,
                disabled: e.disabled,
                onMove: D(e.horizontalPosition, e.verticalPosition),
                onMoveEnd: I
              });
              return Jt.createElement("div", {
                key: e.name,
                className: e.containerClassName
              }, t)
            }))))
          },
          Qg = function(e) {
            var t = e.className,
              n = e.children;
            return Jt.createElement("div", {
              className: ul("advanced-cropper-stencil-overlay", t)
            }, n)
          };
        var em = function(e) {
            var t = e.className,
              n = e.transitions,
              r = e.children,
              i = Y(e, ["className", "transitions", "children"]),
              o = Je(null),
              a = Je(i),
              s = Z(qe(i), 2),
              l = s[0],
              c = s[1],
              u = Z(function(e) {
                void 0 === e && (e = null);
                var t = Je(new xg),
                  n = Z(qe(!1), 2),
                  r = n[0],
                  i = n[1];
                return [function(n) {
                  e && e.active ? t.current.start(G(G({}, e), {
                    onStart: function() {
                      i(!0)
                    },
                    onProgress: function(e) {
                      n(e)
                    },
                    onStop: function() {
                      i(!1)
                    }
                  })) : t.current.active || n(1)
                }, r]
              }(n), 2),
              h = u[0],
              p = u[1];
            $e((function() {
              if (!qd(l, i)) {
                c(i);
                var e = p ? G({}, a.current) : l;
                h((function(t) {
                  ["left", "top", "height", "width"].forEach((function(n) {
                    var r = i[n],
                      o = e[n];
                    a.current[n] = Bd(o) && Bd(r) ? o + (r - o) * t : r
                  })), o.current && (o.current.style.width = "".concat(a.current.width, "px"), o.current.style.height = "".concat(a.current.height, "px"), o.current.style.transform = "translate3d(".concat(a.current.left, "px, ")
                    .concat(a.current.top, "px, 0px)"))
                }))
              }
            }), [l, p, i.width, i.height, i.top, i.left]);
            var d = p ? a.current : i,
              f = {
                left: 0,
                top: 0,
                width: "".concat(d.width, "px"),
                height: "".concat(d.height, "px"),
                transform: "translate3d(".concat(d.left, "px, ").concat(d.top, "px, 0px)")
              };
            return Jt.createElement("div", {
              ref: o,
              className: ul("advanced-cropper-artificial-transition", t),
              style: f
            }, r)
          },
          tm = function(e) {
            var t = e.className,
              n = e.transitions,
              r = e.width,
              i = e.height,
              o = e.left,
              a = e.top,
              s = e.children;
            return Jt.createElement(em, {
              className: ul("advanced-cropper-stencil-wrapper", t),
              transitions: n,
              width: r,
              height: i,
              top: a,
              left: o
            }, s)
          },
          nm = function(e) {
            var t = e.columns,
              n = void 0 === t ? 3 : t,
              r = e.rows,
              i = void 0 === r ? 3 : r,
              o = e.visible,
              a = void 0 !== o && o,
              s = e.className,
              l = [],
              c = Z(qe(n), 2),
              u = c[0],
              h = c[1],
              p = Z(qe(i), 2),
              d = p[0],
              f = p[1];
            Ig((function() {
              a && (f(i), h(n))
            }), [a, n, i]);
            for (var g = 0; g < d; g++) {
              for (var m = [], v = 0; v < u; v++) m.push(Jt.createElement("div", {
                key: v,
                className: ul("advanced-cropper-stencil-grid__cell", 0 === g && "advanced-cropper-stencil-grid__cell--top", g === d - 1 && "advanced-cropper-stencil-grid__cell--bottom", 0 === v &&
                  "advanced-cropper-stencil-grid__cell--left", v === u - 1 && "advanced-cropper-stencil-grid__cell--right")
              }));
              l.push(Jt.createElement("div", {
                key: g,
                className: "advanced-cropper-stencil-grid__row"
              }, m))
            }
            return Jt.createElement("div", {
              className: ul("advanced-cropper-stencil-grid", a && "advanced-cropper-stencil-grid--visible", s)
            }, l)
          },
          rm = mt((function(e, t) {
            var n = e.cropper,
              r = e.coordinates,
              i = e.aspectRatio,
              o = e.minAspectRatio,
              a = e.maxAspectRatio,
              s = e.handlerComponent,
              l = void 0 === s ? Kg : s,
              c = e.handlers,
              u = void 0 === c ? {
                eastNorth: !0,
                north: !0,
                westNorth: !0,
                west: !0,
                westSouth: !0,
                south: !0,
                eastSouth: !0,
                east: !0
              } : c,
              h = e.handlerClassNames,
              p = void 0 === h ? {} : h,
              d = e.handlerWrapperClassNames,
              f = void 0 === d ? {} : d,
              g = e.lines,
              m = void 0 === g ? {
                west: !0,
                north: !0,
                east: !0,
                south: !0
              } : g,
              v = e.lineComponent,
              _ = void 0 === v ? Yg : v,
              b = e.lineClassNames,
              y = void 0 === b ? {} : b,
              w = e.lineWrapperClassNames,
              x = void 0 === w ? {} : w,
              k = e.resizable,
              C = void 0 === k || k,
              S = e.movable,
              E = void 0 === S || S,
              T = e.grid,
              O = e.gridClassName,
              A = e.className,
              P = e.movingClassName,
              M = e.resizingClassName,
              D = e.previewClassName,
              I = e.boundingBoxClassName,
              R = e.overlayClassName,
              j = e.draggableAreaClassName,
              N = n.getState(),
              L = n.getTransitions(),
              F = n.getInteractions();
            Qe(t, (function() {
              return {
                aspectRatio: Cf(i || {
                  minimum: o,
                  maximum: a
                })
              }
            }));
            var B = r ? Id(r) ? r(N) : r : If(N),
              z = B.width,
              H = B.height,
              U = B.left,
              W = B.top;
            return N && Jt.createElement(tm, {
              className: ul("advanced-cropper-rectangle-stencil", A, F.moveCoordinates && P, F.resizeCoordinates && M, {
                "advanced-cropper-rectangle-stencil--movable": E,
                "advanced-cropper-rectangle-stencil--moving": F.moveCoordinates,
                "advanced-cropper-rectangle-stencil--resizable": C,
                "advanced-cropper-rectangle-stencil--resizing": F.resizeCoordinates
              }),
              width: z,
              height: H,
              left: U,
              top: W,
              transitions: L
            }, Jt.createElement(Jg, {
              reference: N.coordinates,
              className: ul(I, "advanced-cropper-rectangle-stencil__bounding-box"),
              handlers: u,
              handlerComponent: l,
              handlerClassNames: p,
              handlerWrapperClassNames: f,
              lines: m,
              lineComponent: _,
              lineClassNames: y,
              lineWrapperClassNames: x,
              onResize: function(e, t, r) {
                n && C && n.resizeCoordinates(e, t, r)
              },
              onResizeEnd: function() {
                n && n.resizeCoordinatesEnd()
              },
              disabled: !C
            }, Jt.createElement(Xg, {
              disabled: !E,
              onMove: function(e) {
                n && E && n.moveCoordinates(e)
              },
              onMoveEnd: function() {
                n && n.moveCoordinatesEnd()
              },
              className: ul("advanced-cropper-rectangle-stencil__draggable-area", j)
            }, Jt.createElement(Qg, {
              className: ul("advanced-cropper-rectangle-stencil__overlay", R)
            }, T && Jt.createElement(nm, {
              visible: n.hasInteractions(),
              columns: F.transformImage.rotate ? 9 : 3,
              rows: F.transformImage.rotate ? 9 : 3,
              className: ul("advanced-cropper-rectangle-stencil__grid", O)
            }), Jt.createElement("div", {
              className: ul("advanced-cropper-rectangle-stencil__preview", D)
            })))))
          }));
        rm.displayName = "RectangleStencil";
        var im, om = function() {
            function e(e) {
              var t = e.active;
              this.active = t, this.defaultPrevented = !1
            }
            return e.prototype.preventDefault = function() {
              this.defaultPrevented = !0
            }, e
          }(),
          am = function(e) {
            function t(t) {
              var n = e.call(this, t) || this;
              return n.processMove = function(e) {
                var t = n.props,
                  r = t.onTransform,
                  i = t.touchScale,
                  o = t.touchMove,
                  a = t.touchRotate,
                  s = n.container.current;
                s && r && (r(function(e, t, n, r) {
                  var i, o, a;
                  if (void 0 === r && (r = {}), 1 === t.length && 1 === e.length) r.move && (i = {
                    left: t[0].clientX - e[0].clientX,
                    top: t[0].clientY - e[0].clientY
                  });
                  else if (e.length > 1) {
                    var s = lg(t, n),
                      l = lg(e, n);
                    if (r.rotate && 2 === t.length && 2 === e.length) {
                      var c = {
                          left: [e[0].clientX - e[1].clientX, t[0].clientX - t[1].clientX],
                          top: [e[0].clientY - e[1].clientY, t[0].clientY - t[1].clientY]
                        },
                        u = c.left[0] * c.top[1] - c.left[1] * c.top[0],
                        h = c.left[0] * c.left[1] + c.top[0] * c.top[1];
                      if (!Wd(h, 0) && !Wd(u, 0)) {
                        var p = -180 * Math.atan2(u, h) / Math.PI;
                        a = {
                          center: l.centerMass,
                          angle: p
                        }
                      }
                    }
                    r.move && (i = {
                      left: s.centerMass.left - l.centerMass.left,
                      top: s.centerMass.top - l.centerMass.top
                    }), r.scale && (o = {
                      factor: l.spread / s.spread,
                      center: l.centerMass
                    })
                  }
                  return {
                    move: i,
                    scale: o,
                    rotate: a
                  }
                }(e, n.touches, s, {
                  scale: i,
                  rotate: a,
                  move: o
                })), n.touches = e)
              }, n.processEnd = function() {
                var e = n.props.onTransformEnd;
                n.transforming && (n.transforming = !1, e && e())
              }, n.processStart = function() {
                n.transforming = !0, n.debouncedProcessEnd.clear()
              }, n.processEvent = function(e) {
                var t = n.props,
                  r = t.onEvent,
                  i = t.disabled,
                  o = new om({
                    active: n.transforming
                  });
                return r ? r(o, e) : (e.preventDefault(), e.stopPropagation()), !i && !o.defaultPrevented
              }, n.onWheel = function(e) {
                var t = n.props,
                  r = t.onTransform,
                  i = t.wheelScale,
                  o = n.container.current;
                i && n.processEvent(e) && (n.processStart(), r && o && r(cg(e, o, !0 === i ? .1 : i.ratio)), n.touches.length || n.debouncedProcessEnd())
              }, n.onTouchStart = function(e) {
                var t = n.props,
                  r = t.touchMove,
                  i = t.touchScale,
                  o = t.touchRotate;
                if (e.cancelable && (r || (i || o) && e.touches.length > 1) && n.processEvent(e)) {
                  var a = n.container.current;
                  if (a) {
                    var s = a.getBoundingClientRect(),
                      l = s.left,
                      c = s.top,
                      u = s.bottom,
                      h = s.right;
                    n.touches = Array.from(e.touches).filter((function(e) {
                      return e.clientX > l && e.clientX < h && e.clientY > c && e.clientY < u
                    }))
                  }
                }
              }, n.onTouchEnd = function(e) {
                0 === e.touches.length && (n.touches = [], n.processEnd())
              }, n.onTouchMove = function(e) {
                if (n.touches.length) {
                  var t = $([], Z(e.touches), !1).filter((function(e) {
                    return !e.identifier || n.touches.find((function(t) {
                      return t.identifier === e.identifier
                    }))
                  }));
                  n.processEvent(e) && (n.processMove(t), n.processStart())
                }
              }, n.onMouseDown = function(e) {
                if (n.props.mouseMove && "buttons" in e && 1 === e.buttons && n.processEvent(e)) {
                  var t = {
                    clientX: e.clientX,
                    clientY: e.clientY
                  };
                  n.touches = [t], n.processStart()
                }
              }, n.onMouseMove = function(e) {
                n.touches.length && n.processEvent(e) && n.processMove([{
                  clientX: e.clientX,
                  clientY: e.clientY
                }])
              }, n.onMouseUp = function() {
                n.touches = [], n.processEnd()
              }, n.transforming = !1, n.touches = [], n.anchor = {
                left: 0,
                top: 0
              }, n.container = {
                current: null
              }, n.debouncedProcessEnd = Kd(n.processEnd, t.timeout), n
            }
            return X(t, e), t.prototype.shouldComponentUpdate = function() {
              return !0
            }, t.prototype.componentWillUnmount = function() {
              window.removeEventListener("mouseup", this.onMouseUp), window.removeEventListener("mousemove", this.onMouseMove), window.removeEventListener("touchmove", this.onTouchMove), window.removeEventListener("touchend", this.onTouchEnd);
              var e = this.container.current;
              e && (e.removeEventListener("touchstart", this.onTouchStart), e.removeEventListener("mousedown", this.onMouseDown), e.removeEventListener("wheel", this.onWheel))
            }, t.prototype.componentDidMount = function() {
              window.addEventListener("mouseup", this.onMouseUp, {
                passive: !1
              }), window.addEventListener("mousemove", this.onMouseMove, {
                passive: !1
              }), window.addEventListener("touchmove", this.onTouchMove, {
                passive: !1
              }), window.addEventListener("touchend", this.onTouchEnd, {
                passive: !1
              });
              var e = this.container.current;
              e && (e.addEventListener("touchstart", this.onTouchStart, {
                passive: !1
              }), e.addEventListener("mousedown", this.onMouseDown, {
                passive: !1
              }), e.addEventListener("wheel", this.onWheel, {
                passive: !1
              }))
            }, t.prototype.render = function() {
              var e = this.props,
                t = e.className,
                n = e.children,
                r = e.style;
              return Jt.createElement("div", {
                className: t,
                style: r,
                ref: this.container
              }, n)
            }, t.defaultProps = {
              touchMove: !0,
              mouseMove: !0,
              touchScale: !0,
              touchRotate: !1,
              wheelScale: !0,
              timeout: 500
            }, t
          }(fe),
          sm = function(e) {
            var t = e.scaleImage,
              n = void 0 === t || t,
              r = e.moveImage,
              i = void 0 === r || r,
              o = e.rotateImage,
              a = void 0 !== o && o,
              s = e.children,
              l = e.className,
              c = e.style,
              u = e.cropper,
              h = e.timeout,
              p = u.getTransitions(),
              d = function(e) {
                return et((function() {
                  return Nd(e, {
                    touch: !0
                  }, {
                    touch: !1
                  })
                }), [e])
              }(a),
              f = function(e) {
                return et((function() {
                  return Nd(e, {
                    touch: !0,
                    wheel: {
                      ratio: .1
                    }
                  }, {
                    touch: !1,
                    wheel: !1
                  })
                }), [e])
              }(n),
              g = function(e) {
                return et((function() {
                  return Nd(e, {
                    touch: !0,
                    mouse: !0
                  }, {
                    touch: !1,
                    mouse: !1
                  })
                }), [e])
              }(i);
            return Jt.createElement(am, {
              className: l,
              style: c,
              onTransform: u.transformImage,
              onTransformEnd: u.transformImageEnd,
              touchMove: g.touch,
              mouseMove: g.mouse,
              touchScale: f.touch,
              wheelScale: f.wheel,
              touchRotate: d.touch,
              disabled: p.active,
              timeout: h
            }, s)
          },
          lm = (im = function(e, t) {
            var n = e.style,
              r = e.className,
              i = e.stencilComponent,
              o = void 0 === i ? rm : i,
              a = e.stencilConstraints,
              s = void 0 === a ? gg : a,
              l = e.stencilProps,
              c = void 0 === l ? {} : l,
              u = e.wrapperComponent,
              h = void 0 === u ? Hg : u,
              p = e.wrapperProps,
              d = void 0 === p ? {} : p,
              f = e.backgroundComponent,
              g = void 0 === f ? Wg : f,
              m = e.backgroundProps,
              v = void 0 === m ? {} : m,
              _ = e.backgroundClassName,
              b = e.backgroundWrapperComponent,
              y = void 0 === b ? sm : b,
              w = e.backgroundWrapperProps,
              x = void 0 === w ? {} : w,
              k = e.boundaryComponent,
              C = void 0 === k ? Bg : k,
              S = e.boundaryProps,
              E = e.boundaryClassName,
              T = e.canvas,
              O = void 0 === T || T,
              A = e.crossOrigin,
              P = void 0 === A || A,
              M = e.settings,
              D = Y(e, ["style", "className", "stencilComponent", "stencilConstraints", "stencilProps", "wrapperComponent", "wrapperProps", "backgroundComponent", "backgroundProps", "backgroundClassName", "backgroundWrapperComponent",
                "backgroundWrapperProps", "boundaryComponent", "boundaryProps", "boundaryClassName", "canvas", "crossOrigin", "settings"
              ]),
              I = Je(null),
              R = Fg((function() {
                return G(G({}, D), {
                  crossOrigin: P,
                  stencilProps: c,
                  canvas: O,
                  settings: G(G({}, M), s(M, G(G({}, c), I.current)))
                })
              })),
              j = R.cropper,
              N = R.image,
              L = R.refs,
              F = o,
              B = h,
              z = y,
              H = g,
              U = C;
            Qe(t, (function() {
              return j
            }));
            var W = {
              loading: j.isLoading(),
              loaded: j.isLoaded()
            };
            return Jt.createElement(B, G({}, d, {
              className: ul("advanced-cropper", r),
              cropper: j,
              style: n
            }, W), Jt.createElement(U, G({}, S, {
              ref: L.boundary,
              className: ul("advanced-cropper__boundary", E)
            }), Jt.createElement(z, G({}, x, {
              cropper: j,
              className: "advanced-cropper__background-wrapper"
            }), j.getState() && Jt.createElement(H, G({}, v, {
              ref: L.image,
              crossOrigin: P,
              cropper: j,
              className: ul("advanced-cropper__background", _)
            })), Jt.createElement(F, G({}, c, {
              ref: I,
              cropper: j,
              image: N
            }))), O && Jt.createElement(Vg, {
              ref: L.canvas
            })))
          }, mt(im)),
          cm = ["transformImage", "moveCoordinates", "resizeCoordinates", "defaultCoordinates", "defaultVisibleArea", "areaPositionRestrictions", "areaSizeRestrictions", "sizeRestrictions", "positionRestrictions", "aspectRatio", "minWidth",
            "minHeight", "maxWidth", "maxHeight", "defaultSize", "defaultPosition", "defaultTransforms", "imageRestriction", "priority"
          ];

        function um(e, t) {
          void 0 === t && (t = cm);
          var n = {
            settings: {},
            props: {}
          };
          return Object.keys(e).forEach((function(r) {
            t.some((function(e) {
              return e === r
            })) ? n.settings[r] = e[r] : n.props[r] = e[r]
          })), n
        }

        function hm(e, t) {
          var n = gg({}, t);
          return {
            stencilSize: function(t, r) {
              var i, o, a = Id(e.stencilSize) ? e.stencilSize(t, r) : e.stencilSize;
              return Uf(G(G({}, a), {
                aspectRatio: (i = n.aspectRatio, o = Cf(hf(a)), o ? i ? {
                  minimum: Math.min(i.maximum, Math.max(i.minimum, o.minimum)),
                  maximum: Math.max(i.minimum, Math.min(i.maximum, o.maximum))
                } : o : i)
              }))
            }
          }
        }

        function pm(e, t) {
          var n = e.boundary,
            r = Id(t.stencilSize) ? t.stencilSize(e, t) : t.stencilSize;
          return (r.width > n.width || r.height > n.height) && (r = Uf({
            sizeRestrictions: {
              maxWidth: n.width,
              maxHeight: n.height,
              minWidth: 0,
              minHeight: 0
            },
            width: r.width,
            height: r.height,
            aspectRatio: {
              minimum: hf(r),
              maximum: hf(r)
            }
          })), r
        }

        function dm(e, t) {
          var n = pm(e, G(G({}, t), {
              stencilSize: t.stencilSize
            })),
            r = Of(e, t);
          return {
            maxWidth: r.maxWidth * n.width / e.boundary.width,
            maxHeight: r.maxHeight * n.height / e.boundary.height,
            minWidth: 0,
            minHeight: 0
          }
        }

        function fm(e, t) {
          var n, r, i = e.imageSize,
            o = e.visibleArea,
            a = e.boundary,
            s = Pf(e, t),
            l = Rf(e, t),
            c = Id(t.stencilSize) ? t.stencilSize(e, t) : t.stencilSize,
            u = o || i;
          return hf(u) > hf(a) ? r = (n = c.height * u.height / a.height) * hf(c) : n = (r = c.width * u.width / a.width) / hf(c), Uf({
            width: r,
            height: n,
            aspectRatio: l,
            sizeRestrictions: s
          })
        }

        function gm(e, t) {
          var n = hf(pm(e, t));
          return {
            minimum: n,
            maximum: n
          }
        }

        function mm(e, t, n) {
          return n && n.immediately ? function(e, t) {
            if (Tf(e)) {
              var n = Hf(e),
                r = pm(e, t);
              n.visibleArea = uf(n.visibleArea, n.coordinates.width * n.boundary.width / (n.visibleArea.width * r.width));
              var i = gf(n.visibleArea, Of(n, t));
              return 1 !== i && (n.visibleArea = uf(n.visibleArea, i), n.coordinates = uf(n.coordinates, i)), n.visibleArea = lf(n.visibleArea, nf(rf(n.coordinates), rf(n.visibleArea))), n.visibleArea = kf(n.visibleArea, Af(n, t)), n
                .coordinates = kf(n.coordinates, wf(cf(n.visibleArea), Af(n, t))), n
            }
            return e
          }(e, t) : e
        }
        var vm = mt((function(e, t) {
          var n = um(e, $($([], Z(cm), !1), ["stencilSize"], !1));
          return Jt.createElement(lm, G({
            postProcess: mm,
            stencilConstraints: hm
          }, n.props, {
            settings: G(G({
              defaultSize: fm,
              aspectRatio: gm,
              sizeRestrictions: mg(dm)
            }, n.settings), {
              transformImage: G(G({}, n.settings.transformImage), {
                adjustStencil: !1
              })
            }),
            ref: t
          }))
        }));
        vm.displayName = "FixedCropper";
        var _m = mt((function(e, t) {
          var n, r = um(e),
            i = r.props,
            o = r.settings,
            a = o.stencilSize,
            s = o.autoZoom,
            l = Y(o, ["stencilSize", "autoZoom"]),
            c = (n = Je([]), function(e) {
              -1 === n.current.indexOf(e) && n.current.push(e)
            });
          return Rd(s) || (i.postProcess || a ? c("prop 'autoZoom' is deprecated now and will be removed, use 'postProcess' prop to pass your auto zoom function.") : (c(
            "prop 'autoZoom' is deprecated now and will be removed, use 'postProcess' prop to pass your auto zoom function. The 'postProcess' automatically set to 'hybridAutoZoom'"), i.postProcess = Dg)), Rd(a) ? Jt.createElement(lm,
          G({}, i, {
              ref: t,
              settings: l
            })) : (c("prop 'stencilSize' is deprecated for <Cropper/> component now and will be removed, use <FixedCropper/> component instead."), Jt.createElement(vm, G({
            ref: t,
            stencilSize: a
          }, l, i)))
        }));
        _m.displayName = "CropperComponent";
        var bm = mt((function(e, t) {
          var n = e.cropper,
            r = e.coordinates,
            i = e.handlerComponent,
            o = void 0 === i ? Kg : i,
            a = e.handlers,
            s = void 0 === a ? {
              eastNorth: !0,
              westNorth: !0,
              westSouth: !0,
              eastSouth: !0
            } : a,
            l = e.handlerClassNames,
            c = void 0 === l ? {} : l,
            u = e.handlerWrapperClassNames,
            h = void 0 === u ? {} : u,
            p = e.lines,
            d = void 0 === p ? {
              west: !0,
              north: !0,
              east: !0,
              south: !0
            } : p,
            f = e.lineComponent,
            g = void 0 === f ? Yg : f,
            m = e.lineClassNames,
            v = void 0 === m ? {} : m,
            _ = e.lineWrapperClassNames,
            b = void 0 === _ ? {} : _,
            y = e.resizable,
            w = void 0 === y || y,
            x = e.movable,
            k = void 0 === x || x,
            C = e.grid,
            S = e.gridClassName,
            E = e.className,
            T = e.movingClassName,
            O = e.resizingClassName,
            A = e.previewClassName,
            P = e.boundingBoxClassName,
            M = e.overlayClassName,
            D = e.draggableAreaClassName,
            I = n.getState(),
            R = n.getTransitions(),
            j = n.getInteractions();
          Qe(t, (function() {
            return {
              aspectRatio: 1,
              boundingBox: "circle"
            }
          }));
          var N = r ? Id(r) ? r(I) : r : If(I),
            L = N.width,
            F = N.height,
            B = N.left,
            z = N.top;
          return I && Jt.createElement(tm, {
            className: ul("advanced-cropper-circle-stencil", E, j.moveCoordinates && T, j.resizeCoordinates && O, {
              "advanced-cropper-circle-stencil--movable": k,
              "advanced-cropper-circle-stencil--moving": j.moveCoordinates,
              "advanced-cropper-circle-stencil--resizable": w,
              "advanced-cropper-circle-stencil--resizing": j.resizeCoordinates
            }),
            width: L,
            height: F,
            left: B,
            top: z,
            transitions: R
          }, Jt.createElement(Jg, {
            reference: I.coordinates,
            className: ul(P, "advanced-cropper-circle-stencil__bounding-box"),
            handlers: s,
            handlerComponent: o,
            handlerClassNames: c,
            handlerWrapperClassNames: h,
            lines: d,
            lineComponent: g,
            lineClassNames: v,
            lineWrapperClassNames: b,
            onResize: function(e, t, r) {
              n && w && n.resizeCoordinates(e, t, r)
            },
            onResizeEnd: function() {
              n && n.resizeCoordinatesEnd()
            },
            disabled: !w
          }, Jt.createElement(Xg, {
            disabled: !k,
            onMove: function(e) {
              n && k && n.moveCoordinates(e)
            },
            onMoveEnd: function() {
              n && n.moveCoordinatesEnd()
            },
            className: ul("advanced-cropper-circle-stencil__draggable-area", D)
          }, Jt.createElement(Qg, {
            className: ul("advanced-cropper-circle-stencil__overlay", M)
          }, C && Jt.createElement(nm, {
            visible: n.hasInteractions(),
            columns: j.transformImage.rotate ? 9 : 3,
            rows: j.transformImage.rotate ? 9 : 3,
            className: ul("advanced-cropper-circle-stencil__grid", S)
          }), Jt.createElement("div", {
            className: ul("advanced-cropper-circle-stencil__preview", A)
          })))))
        }));
        bm.displayName = "CircleStencil";
        var ym = mt((function(e, t) {
          var n = e.src,
            r = e.crossOrigin,
            i = void 0 === r || r,
            o = Y(e, ["src", "crossOrigin"]);
          return n ? Jt.createElement("img", G({
            key: n,
            ref: t,
            src: n,
            className: ul("advanced-cropper-source"),
            crossOrigin: !0 === i ? "anonymous" : i || void 0
          }, o)) : null
        }));
        ym.displayName = "CropperSource";
        var wm, xm = function(e) {
            var t = e.children,
              n = e.cropper,
              r = e.className,
              i = e.style;
            return Jt.createElement("div", {
              className: ul(r, "cropper-preview-wrapper"),
              style: i
            }, Jt.createElement(zg, {
              visible: null == n ? void 0 : n.isLoaded(),
              className: "cropper-preview-wrapper__fade"
            }, t))
          },
          km = function(e) {
            var t = e.className,
              n = e.cropper,
              r = e.crossOrigin,
              i = void 0 === r || r,
              o = e.size,
              a = n.getState(),
              s = n.getTransitions(),
              l = n.getImage(),
              c = o && l && (null == a ? void 0 : a.coordinates) ? function(e, t, n, r) {
                return void 0 === r && (r = null), e && t && t.visibleArea && t.coordinates ? Mg(e, t, t.coordinates, hf(t.coordinates) > hf(n) ? t.coordinates.width / n.width : t.coordinates.height / n.height, r) : {}
              }(l, a, o, s) : {},
              u = l ? l.src : void 0;
            return u ? Jt.createElement("img", {
              key: u,
              className: ul("advanced-cropper-background-image", t),
              src: u,
              crossOrigin: !0 === i ? "anonymous" : i || void 0,
              style: c,
              onMouseDown: Ug
            }) : null
          };

        function Cm() {
          return Cm = Object.assign ? Object.assign.bind() : function(e) {
            for (var t = 1; t < arguments.length; t++) {
              var n = arguments[t];
              for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r])
            }
            return e
          }, Cm.apply(this, arguments)
        }
        mt((function(e, t) {
          var n, r, i, o, a = e.className,
            s = e.contentClassName,
            l = e.state,
            c = void 0 === l ? null : l,
            u = e.image,
            h = void 0 === u ? null : u,
            p = e.transitions,
            d = void 0 === p ? null : p,
            f = e.backgroundComponent,
            g = void 0 === f ? km : f,
            m = e.backgroundProps,
            v = e.backgroundClassName,
            _ = e.wrapperComponent,
            b = void 0 === _ ? xm : _,
            y = e.wrapperProps,
            w = e.loaded,
            x = void 0 === w || w,
            k = e.loading,
            C = void 0 !== k && k,
            S = e.style,
            E = e.cropper,
            T = jg(),
            O = Je(null),
            A = E || {
              current: {
                getState: function() {
                  return c
                },
                getTransitions: function() {
                  return d
                },
                getImage: function() {
                  return h
                },
                isLoaded: function() {
                  return x
                },
                isLoading: function() {
                  return C
                }
              }
            },
            P = Z(qe(null), 2),
            M = P[0],
            D = P[1],
            I = null === (r = null === (n = A.current) || void 0 === n ? void 0 : n.getState()) || void 0 === r ? void 0 : r.coordinates,
            R = null === (o = null === (i = A.current) || void 0 === i ? void 0 : i.getImage()) || void 0 === o ? void 0 : o.src,
            j = M ? {
              width: "".concat(M.width, "px"),
              height: "".concat(M.height, "px")
            } : {},
            N = function() {
              O.current && I && O.current.stretchTo(I).then((function(e) {
                e && I ? Vd(hf(I), hf(e)) ? D({
                  width: e.width,
                  height: e.width / hf(I)
                }) : D({
                  width: e.height * hf(I),
                  height: e.height
                }) : D(null)
              })), T()
            };
          Lg(N), $e(N, [null == I ? void 0 : I.height, null == I ? void 0 : I.width]), Qe(t, (function() {
            return {
              refresh: T
            }
          }));
          var L = b,
            F = g;
          return Jt.createElement(L, G({}, y, {
            className: ul(a, "advanced-cropper-preview"),
            cropper: A.current,
            style: S
          }), Jt.createElement(Bg, {
            ref: O,
            className: "advanced-cropper-preview__boundary",
            contentClassName: "advanced-cropper-preview__boundary-content",
            stretchAlgorithm: Sg
          }, Jt.createElement("div", {
            className: ul(s, "advanced-cropper-preview__content"),
            style: j
          }, A.current && Jt.createElement(F, G({}, m, {
            cropper: A.current,
            size: M,
            className: ul(v, "advanced-cropper-preview__image", R && "advanced-cropper-preview__image--visible")
          })))))
        }));
        var Sm, Em = e => ue("svg", Cm({
          width: 20,
          height: 20,
          fill: "none",
          xmlns: "http://www.w3.org/2000/svg"
        }, e), wm || (wm = ue("path", {
          fillRule: "evenodd",
          clipRule: "evenodd",
          d: "M1.042 8.75a7.708 7.708 0 1 1 13.583 4.991l3.195 3.195a.625.625 0 0 1-.884.884l-3.195-3.195A7.708 7.708 0 0 1 1.04 8.75ZM8.75 2.292a6.458 6.458 0 1 0 0 12.917 6.458 6.458 0 0 0 0-12.917Zm-2.5 5.833a.625.625 0 1 0 0 1.25h5a.625.625 0 1 0 0-1.25h-5Z",
          fill: "#333"
        })));

        function Tm() {
          return Tm = Object.assign ? Object.assign.bind() : function(e) {
            for (var t = 1; t < arguments.length; t++) {
              var n = arguments[t];
              for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r])
            }
            return e
          }, Tm.apply(this, arguments)
        }
        var Om, Am = e => ue("svg", Tm({
          width: 20,
          height: 20,
          fill: "none",
          xmlns: "http://www.w3.org/2000/svg"
        }, e), Sm || (Sm = ue("path", {
          fillRule: "evenodd",
          clipRule: "evenodd",
          d: "M8.75 1.042a7.708 7.708 0 1 0 4.99 13.583l3.196 3.195a.625.625 0 0 0 .884-.884l-3.195-3.195a7.708 7.708 0 0 0-5.875-12.7ZM2.292 8.75a6.458 6.458 0 1 1 12.916 0 6.458 6.458 0 0 1-12.917 0Zm7.083-2.5a.625.625 0 1 0-1.25 0v1.88l-1.87.002a.625.625 0 0 0 .002 1.25l1.868-.003v1.871a.625.625 0 1 0 1.25 0V9.377l1.876-.002a.625.625 0 1 0-.002-1.25l-1.874.002V6.25Z",
          fill: "#333"
        })));

        function Pm() {
          return Pm = Object.assign ? Object.assign.bind() : function(e) {
            for (var t = 1; t < arguments.length; t++) {
              var n = arguments[t];
              for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r])
            }
            return e
          }, Pm.apply(this, arguments)
        }
        var Mm, Dm = e => ue("svg", Pm({
          width: 14,
          height: 14,
          fill: "none",
          xmlns: "http://www.w3.org/2000/svg"
        }, e), Om || (Om = ue("path", {
          d: "M10.5 5.25 7 8.75l-3.5-3.5",
          stroke: "#333",
          strokeWidth: 1.25,
          strokeLinecap: "round",
          strokeLinejoin: "round"
        })));

        function Im() {
          return Im = Object.assign ? Object.assign.bind() : function(e) {
            for (var t = 1; t < arguments.length; t++) {
              var n = arguments[t];
              for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r])
            }
            return e
          }, Im.apply(this, arguments)
        }
        var Rm, jm = e => ue("svg", Im({
          xmlns: "http://www.w3.org/2000/svg",
          width: 18,
          height: 18,
          fill: "none"
        }, e), Mm || (Mm = ue("circle", {
          cx: 9,
          cy: 9,
          r: 8.375,
          stroke: "#333",
          strokeWidth: 1.25
        })));

        function Nm() {
          return Nm = Object.assign ? Object.assign.bind() : function(e) {
            for (var t = 1; t < arguments.length; t++) {
              var n = arguments[t];
              for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r])
            }
            return e
          }, Nm.apply(this, arguments)
        }
        var Lm, Fm = e => ue("svg", Nm({
          xmlns: "http://www.w3.org/2000/svg",
          width: 18,
          height: 18,
          fill: "none"
        }, e), Rm || (Rm = ue("circle", {
          cx: 9,
          cy: 9,
          r: 8.375,
          stroke: "#3E85EE",
          strokeWidth: 1.25
        })));

        function Bm() {
          return Bm = Object.assign ? Object.assign.bind() : function(e) {
            for (var t = 1; t < arguments.length; t++) {
              var n = arguments[t];
              for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r])
            }
            return e
          }, Bm.apply(this, arguments)
        }
        var zm, Hm = e => ue("svg", Bm({
          xmlns: "http://www.w3.org/2000/svg",
          width: 14,
          height: 18,
          fill: "none"
        }, e), Lm || (Lm = ue("path", {
          d: "M13.375 9c0 4.78-2.991 8.375-6.375 8.375S.625 13.781.625 9C.625 4.22 3.616.625 7 .625S13.375 4.219 13.375 9Z",
          stroke: "#333",
          strokeWidth: 1.25
        })));

        function Um() {
          return Um = Object.assign ? Object.assign.bind() : function(e) {
            for (var t = 1; t < arguments.length; t++) {
              var n = arguments[t];
              for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r])
            }
            return e
          }, Um.apply(this, arguments)
        }
        var Wm, Vm = e => ue("svg", Um({
          xmlns: "http://www.w3.org/2000/svg",
          width: 14,
          height: 18,
          fill: "none"
        }, e), zm || (zm = ue("path", {
          d: "M13.375 9c0 4.78-2.991 8.375-6.375 8.375S.625 13.781.625 9C.625 4.22 3.616.625 7 .625S13.375 4.219 13.375 9Z",
          stroke: "#3E85EE",
          strokeWidth: 1.25
        })));

        function Xm() {
          return Xm = Object.assign ? Object.assign.bind() : function(e) {
            for (var t = 1; t < arguments.length; t++) {
              var n = arguments[t];
              for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r])
            }
            return e
          }, Xm.apply(this, arguments)
        }
        var Gm, Ym = e => ue("svg", Xm({
          width: 18,
          height: 18,
          fill: "none",
          xmlns: "http://www.w3.org/2000/svg"
        }, e), Wm || (Wm = ue("rect", {
          x: .625,
          y: .625,
          width: 16.75,
          height: 16.75,
          rx: 1.375,
          stroke: "#333",
          strokeWidth: 1.25
        })));

        function qm() {
          return qm = Object.assign ? Object.assign.bind() : function(e) {
            for (var t = 1; t < arguments.length; t++) {
              var n = arguments[t];
              for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r])
            }
            return e
          }, qm.apply(this, arguments)
        }
        var Km, Zm = e => ue("svg", qm({
          width: 18,
          height: 18,
          fill: "none",
          xmlns: "http://www.w3.org/2000/svg"
        }, e), Gm || (Gm = ue("rect", {
          x: .625,
          y: .625,
          width: 16.75,
          height: 16.75,
          rx: 1.375,
          stroke: "#3E85EE",
          strokeWidth: 1.25
        })));

        function $m() {
          return $m = Object.assign ? Object.assign.bind() : function(e) {
            for (var t = 1; t < arguments.length; t++) {
              var n = arguments[t];
              for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r])
            }
            return e
          }, $m.apply(this, arguments)
        }
        var Jm, Qm = e => ue("svg", $m({
          width: 16,
          height: 16,
          fill: "none",
          xmlns: "http://www.w3.org/2000/svg"
        }, e), Km || (Km = ue("path", {
          stroke: "#333",
          strokeWidth: 1.25,
          d: "M.625.625h14.75v14.75H.625z"
        })));

        function ev() {
          return ev = Object.assign ? Object.assign.bind() : function(e) {
            for (var t = 1; t < arguments.length; t++) {
              var n = arguments[t];
              for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r])
            }
            return e
          }, ev.apply(this, arguments)
        }
        var tv, nv = e => ue("svg", ev({
          width: 16,
          height: 16,
          fill: "none",
          xmlns: "http://www.w3.org/2000/svg"
        }, e), Jm || (Jm = ue("path", {
          stroke: "#3E85EE",
          strokeWidth: 1.25,
          d: "M.625.625h14.75v14.75H.625z"
        })));

        function rv() {
          return rv = Object.assign ? Object.assign.bind() : function(e) {
            for (var t = 1; t < arguments.length; t++) {
              var n = arguments[t];
              for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r])
            }
            return e
          }, rv.apply(this, arguments)
        }
        var iv, ov = e => ue("svg", rv({
          xmlns: "http://www.w3.org/2000/svg",
          width: 20,
          height: 20,
          fill: "none"
        }, e), tv || (tv = ue("path", {
          d: "m10.071 17.039-.004-.003-.014-.011-.018-.013-.226-.16c-.545-.39-1.8-1.284-2.625-1.938-1.6-1.276-2.787-2.358-3.607-3.282-.83-.934-1.236-1.655-1.358-2.205l-.006-.029-.009-.027c-.128-.4-.21-.9-.215-1.419V7.95c-.018-1.378.492-2.697 1.376-3.617.803-.838 1.843-1.291 2.929-1.295 1.246 0 2.376.516 3.196 1.417l.475.523.461-.536c.805-.936 1.93-1.477 3.154-1.494h.09c2.302 0 4.307 2.096 4.341 4.8a5.164 5.164 0 0 1-.198 1.493l-.008.027-.006.027c-.1.514-.49 1.24-1.304 2.201-.8.947-1.958 2.063-3.498 3.355l-.002.002c-1.187 1.003-2.135 1.735-2.825 2.183l-.004.003a.081.081 0 0 1-.046.013.097.097 0 0 1-.045-.011l-.004-.002Z",
          stroke: "#333",
          strokeWidth: 1.25
        })));

        function av() {
          return av = Object.assign ? Object.assign.bind() : function(e) {
            for (var t = 1; t < arguments.length; t++) {
              var n = arguments[t];
              for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r])
            }
            return e
          }, av.apply(this, arguments)
        }
        var sv, lv = e => ue("svg", av({
          xmlns: "http://www.w3.org/2000/svg",
          width: 20,
          height: 20,
          fill: "none"
        }, e), iv || (iv = ue("path", {
          d: "m10.071 17.039-.004-.003-.014-.011-.018-.013-.226-.16c-.545-.39-1.8-1.284-2.625-1.938-1.6-1.276-2.787-2.358-3.607-3.282-.83-.934-1.236-1.655-1.358-2.205l-.006-.029-.009-.027c-.128-.4-.21-.9-.215-1.419V7.95c-.018-1.378.492-2.697 1.376-3.617.803-.838 1.843-1.291 2.929-1.295 1.246 0 2.376.516 3.196 1.417l.475.523.461-.536c.805-.936 1.93-1.477 3.154-1.494h.09c2.302 0 4.307 2.096 4.341 4.8a5.164 5.164 0 0 1-.198 1.493l-.008.027-.006.027c-.1.514-.49 1.24-1.304 2.201-.8.947-1.958 2.063-3.498 3.355l-.002.002c-1.187 1.003-2.135 1.735-2.825 2.183l-.004.003a.081.081 0 0 1-.046.013.097.097 0 0 1-.045-.011l-.004-.002Z",
          stroke: "#3E85EE",
          strokeWidth: 1.25
        })));

        function cv() {
          return cv = Object.assign ? Object.assign.bind() : function(e) {
            for (var t = 1; t < arguments.length; t++) {
              var n = arguments[t];
              for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r])
            }
            return e
          }, cv.apply(this, arguments)
        }
        var uv, hv = e => ue("svg", cv({
          width: 18,
          height: 18,
          fill: "none",
          xmlns: "http://www.w3.org/2000/svg"
        }, e), sv || (sv = ue("path", {
          d: "M6.598 5.854 9 1.332l2.402 4.522c.162.307.457.52.799.58l5.042.888-3.558 3.681c-.241.25-.354.596-.305.94l.715 5.07-4.601-2.248a1.125 1.125 0 0 0-.988 0l-4.6 2.247.714-5.07a1.125 1.125 0 0 0-.305-.939L.757 7.322 5.8 6.435c.341-.06.636-.274.798-.58Z",
          stroke: "#333",
          strokeWidth: 1.25
        })));

        function pv() {
          return pv = Object.assign ? Object.assign.bind() : function(e) {
            for (var t = 1; t < arguments.length; t++) {
              var n = arguments[t];
              for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r])
            }
            return e
          }, pv.apply(this, arguments)
        }
        var dv, fv = e => ue("svg", pv({
          width: 18,
          height: 18,
          fill: "none",
          xmlns: "http://www.w3.org/2000/svg"
        }, e), uv || (uv = ue("path", {
          d: "M6.598 5.854 9 1.332l2.402 4.522c.162.307.457.52.799.58l5.042.888-3.558 3.681c-.241.25-.354.596-.305.94l.715 5.07-4.601-2.248a1.125 1.125 0 0 0-.988 0l-4.6 2.247.714-5.07a1.125 1.125 0 0 0-.305-.939L.757 7.322 5.8 6.435c.341-.06.636-.274.798-.58Z",
          stroke: "#3E85EE",
          strokeWidth: 1.25
        })));

        function gv() {
          return gv = Object.assign ? Object.assign.bind() : function(e) {
            for (var t = 1; t < arguments.length; t++) {
              var n = arguments[t];
              for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r])
            }
            return e
          }, gv.apply(this, arguments)
        }
        var mv = e => ue("svg", gv({
          xmlns: "http://www.w3.org/2000/svg",
          width: 14,
          height: 4,
          fill: "none"
        }, e), dv || (dv = ue("path", {
          d: "M8.488 3.15a3 3 0 0 1-2.976 0L0 0h14L8.488 3.15Z",
          fill: "#fff"
        })));
        c(
        ".advanced-cropper-line-wrapper--north,.advanced-cropper-line-wrapper--south{height:12px;width:100%}.advanced-cropper-line-wrapper--north{cursor:n-resize}.advanced-cropper-line-wrapper--south{cursor:s-resize}.advanced-cropper-line-wrapper--east,.advanced-cropper-line-wrapper--west{height:100%;width:12px}.advanced-cropper-line-wrapper--east{cursor:e-resize}.advanced-cropper-line-wrapper--west{cursor:w-resize}.advanced-cropper-line-wrapper--disabled{cursor:auto}.advanced-cropper-line-wrapper__content{position:absolute}.advanced-cropper-line-wrapper__content--east,.advanced-cropper-line-wrapper__content--west{height:100%}.advanced-cropper-line-wrapper__content--north,.advanced-cropper-line-wrapper__content--south{width:100%}.advanced-cropper-line-wrapper__content--east{left:50%;transform:translateX(-100%)}.advanced-cropper-line-wrapper__content--west{right:50%;transform:translateX(100%)}.advanced-cropper-line-wrapper__content--north{top:50%}.advanced-cropper-line-wrapper__content--south{bottom:50%}.advanced-cropper-handler-wrapper{height:30px;position:absolute;transform:translate(-50%,-50%);width:30px}.advanced-cropper-handler-wrapper__draggable{align-items:center;display:flex;height:100%;justify-content:center;width:100%}.advanced-cropper-handler-wrapper--west-north{cursor:nw-resize}.advanced-cropper-handler-wrapper--north{cursor:n-resize}.advanced-cropper-handler-wrapper--east-north{cursor:ne-resize}.advanced-cropper-handler-wrapper--east{cursor:e-resize}.advanced-cropper-handler-wrapper--east-south{cursor:se-resize}.advanced-cropper-handler-wrapper--south{cursor:s-resize}.advanced-cropper-handler-wrapper--west-south{cursor:sw-resize}.advanced-cropper-handler-wrapper--west{cursor:w-resize}.advanced-cropper-handler-wrapper--disabled{cursor:auto}.advanced-cropper-bounding-box{height:100%;position:relative;width:100%}.advanced-cropper-bounding-box__handler-wrapper{position:absolute}.advanced-cropper-bounding-box__handler-wrapper--east,.advanced-cropper-bounding-box__handler-wrapper--west{height:100%;top:50%;transform:translateY(-50%)}.advanced-cropper-bounding-box__handler-wrapper--north,.advanced-cropper-bounding-box__handler-wrapper--south{left:50%;transform:translateX(-50%);width:100%}.advanced-cropper-bounding-box__handler-wrapper--west,.advanced-cropper-bounding-box__handler-wrapper--west-north,.advanced-cropper-bounding-box__handler-wrapper--west-south{left:0}.advanced-cropper-bounding-box__handler-wrapper--east,.advanced-cropper-bounding-box__handler-wrapper--east-north,.advanced-cropper-bounding-box__handler-wrapper--east-south{left:100%}.advanced-cropper-bounding-box__handler-wrapper--east-north,.advanced-cropper-bounding-box__handler-wrapper--north,.advanced-cropper-bounding-box__handler-wrapper--west-north{top:0}.advanced-cropper-bounding-box__handler-wrapper--east-south,.advanced-cropper-bounding-box__handler-wrapper--south,.advanced-cropper-bounding-box__handler-wrapper--west-south{top:100%}.advanced-cropper-bounding-box__handler{position:absolute}.advanced-cropper-bounding-box__handler--west-north{left:0;top:0}.advanced-cropper-bounding-box__handler--north{left:50%;top:0}.advanced-cropper-bounding-box__handler--east-north{left:100%;top:0}.advanced-cropper-bounding-box__handler--east{left:100%;top:50%}.advanced-cropper-bounding-box__handler--east-south{left:100%;top:100%}.advanced-cropper-bounding-box__handler--south{left:50%;top:100%}.advanced-cropper-bounding-box__handler--west-south{left:0;top:100%}.advanced-cropper-bounding-box__handler--west{left:0;top:50%}.advanced-cropper-bounding-box__line{position:absolute}.advanced-cropper-bounding-box__line--north,.advanced-cropper-bounding-box__line--south{left:0;transform:translateY(-50%)}.advanced-cropper-bounding-box__line--north{top:0}.advanced-cropper-bounding-box__line--south{top:100%}.advanced-cropper-bounding-box__line--east,.advanced-cropper-bounding-box__line--west{top:0;transform:translateX(-50%)}.advanced-cropper-bounding-box__line--west{left:0}.advanced-cropper-bounding-box__line--east{left:100%}.advanced-cropper-artificial-transition{will-change:transform}.advanced-cropper-background-image{max-width:none!important;pointer-events:none;position:absolute;transform-origin:center;-webkit-user-select:none;user-select:none}.advanced-cropper-canvas{display:none}.advanced-cropper-source{height:1px;opacity:0;position:absolute;visibility:hidden;width:1px}.advanced-cropper-fade{display:flex;flex-direction:column;opacity:0;transition:.5s;visibility:hidden}.advanced-cropper-fade--visible{opacity:1;visibility:visible}.advanced-cropper-wrapper__fade{flex-grow:1;min-height:0}.advanced-cropper-stencil-grid{border-collapse:collapse;display:table;opacity:0;table-layout:fixed;transition:opacity .3s}.advanced-cropper-stencil-grid--visible{opacity:1}.advanced-cropper-stencil-grid__row{display:table-row}.advanced-cropper-stencil-grid__cell{border:1px solid;display:table-cell;height:1%;width:1%}.advanced-cropper-stencil-grid__cell--top{border-top-color:transparent}.advanced-cropper-stencil-grid__cell--left{border-left-color:transparent}.advanced-cropper-stencil-grid__cell--right{border-right-color:transparent}.advanced-cropper-stencil-grid__cell--bottom{border-bottom-color:transparent}.advanced-cropper-stencil-overlay{-webkit-backface-visibility:hidden;box-shadow:0 0 0 1000px currentColor;box-sizing:initial;height:100%;pointer-events:none;position:absolute;width:100%}.advanced-cropper-stencil-wrapper{will-change:transform}.advanced-cropper-boundary{direction:ltr;position:relative;-webkit-user-select:none;user-select:none}.advanced-cropper-boundary__content{height:100%;left:0;position:absolute;top:0;width:100%}.advanced-cropper-boundary__stretcher{max-height:100%;max-width:100%;pointer-events:none;position:relative}.advanced-cropper-circle-stencil{-webkit-backface-visibility:hidden;box-sizing:initial;height:100%;position:absolute;-webkit-transform-style:preserve-3d;width:100%}.advanced-cropper-circle-stencil__overlay{border-radius:50%;overflow:hidden}.advanced-cropper-circle-stencil__preview{border-radius:50%}.advanced-cropper-circle-stencil__draggable-area,.advanced-cropper-circle-stencil__grid,.advanced-cropper-circle-stencil__overlay,.advanced-cropper-circle-stencil__preview{height:100%;position:absolute;width:100%}.advanced-cropper-circle-stencil--movable{cursor:move}.advanced-cropper-rectangle-stencil{-webkit-backface-visibility:hidden;box-sizing:border-box;-webkit-transform-style:preserve-3d}.advanced-cropper-rectangle-stencil,.advanced-cropper-rectangle-stencil__draggable-area,.advanced-cropper-rectangle-stencil__grid,.advanced-cropper-rectangle-stencil__overlay,.advanced-cropper-rectangle-stencil__preview{height:100%;position:absolute;width:100%}.advanced-cropper-rectangle-stencil--movable{cursor:move}.advanced-cropper-simple-line{background:none;border-width:0}.advanced-cropper-simple-line--north,.advanced-cropper-simple-line--south{height:0;width:100%}.advanced-cropper-simple-line--east,.advanced-cropper-simple-line--west{height:100%;width:0}.advanced-cropper-simple-line--east{border-right-width:1px}.advanced-cropper-simple-line--west{border-left-width:1px}.advanced-cropper-simple-line--south{border-bottom-width:1px}.advanced-cropper-simple-line--north{border-top-width:1px}.advanced-cropper-simple-handler{display:block}.advanced-cropper-preview{box-sizing:border-box;display:flex;flex-direction:column;overflow:hidden;position:relative}.advanced-cropper-preview__content{left:50%;overflow:hidden;position:absolute;top:50%;transform:translate(-50%,-50%)}.advanced-cropper-preview__image{display:none;max-width:none!important;pointer-events:none;position:absolute;transform-origin:center;-webkit-user-select:none;user-select:none}.advanced-cropper-preview__image--visible{display:block}.advanced-cropper-preview__boundary{flex-grow:1;min-height:0;min-width:0}.cropper-preview-wrapper__fade{flex-grow:1;min-height:0;width:100%}.advanced-cropper{background:#000;color:#fff;display:flex;flex-direction:column;max-height:100%;overflow:hidden;position:relative}.advanced-cropper__boundary{flex-grow:1;min-height:0;min-width:0}.advanced-cropper__background-wrapper,.advanced-cropper__wrapper{bottom:0;left:0;position:absolute;right:0;top:0}.advanced-cropper__stencil-wrapper{position:absolute}.advanced-cropper *{box-sizing:border-box}.advanced-cropper-simple-handler{background:currentColor;height:10px;width:10px}.advanced-cropper-simple-line{border-color:hsla(0,0%,100%,.3);border-style:solid;transition:border .5s}.advanced-cropper-simple-line--hover{border-color:#fff}.advanced-cropper-circle-stencil__preview{border:2px solid hsla(0,0%,100%,.2)}.advanced-cropper-stencil-overlay{color:rgba(0,0,0,.5)}.advanced-cropper-stencil-grid{color:hsla(0,0%,100%,.4)}");
        var vv = {
          cropper_container: "ImageCropper-module_cropper_container__uvTtt",
          cropperContainer: "ImageCropper-module_cropper_container__uvTtt",
          copper_wrapper: "ImageCropper-module_copper_wrapper__Wpn9E",
          copperWrapper: "ImageCropper-module_copper_wrapper__Wpn9E",
          cropper_footer: "ImageCropper-module_cropper_footer__Rk-w5",
          cropperFooter: "ImageCropper-module_cropper_footer__Rk-w5",
          footer_button: "ImageCropper-module_footer_button__BdQgl",
          footerButton: "ImageCropper-module_footer_button__BdQgl",
          operate_box: "ImageCropper-module_operate_box__QJJAG",
          operateBox: "ImageCropper-module_operate_box__QJJAG",
          icon: "ImageCropper-module_icon__0Sh-o",
          mock_line: "ImageCropper-module_mock_line__-0jep",
          mockLine: "ImageCropper-module_mock_line__-0jep",
          cropper_type_wrapper: "ImageCropper-module_cropper_type_wrapper__7wTON",
          cropperTypeWrapper: "ImageCropper-module_cropper_type_wrapper__7wTON",
          active: "ImageCropper-module_active__c3F6n",
          cropper_type_arrow: "ImageCropper-module_cropper_type_arrow__6-sTm",
          cropperTypeArrow: "ImageCropper-module_cropper_type_arrow__6-sTm",
          cropper_select_list: "ImageCropper-module_cropper_select_list__Q9Msa",
          cropperSelectList: "ImageCropper-module_cropper_select_list__Q9Msa",
          cropper_select_list_arrow: "ImageCropper-module_cropper_select_list_arrow__GPSms",
          cropperSelectListArrow: "ImageCropper-module_cropper_select_list_arrow__GPSms",
          shape_icon: "ImageCropper-module_shape_icon__d0xAo",
          shapeIcon: "ImageCropper-module_shape_icon__d0xAo",
          preview_circle: "ImageCropper-module_preview_circle__M21xU",
          previewCircle: "ImageCropper-module_preview_circle__M21xU",
          preview_heart: "ImageCropper-module_preview_heart__ePRoZ",
          previewHeart: "ImageCropper-module_preview_heart__ePRoZ",
          preview_star: "ImageCropper-module_preview_star__f2pmG",
          previewStar: "ImageCropper-module_preview_star__f2pmG",
          overlay_rect_radius: "ImageCropper-module_overlay_rect_radius__q1iPj",
          overlayRectRadius: "ImageCropper-module_overlay_rect_radius__q1iPj",
          overlay_ellipse: "ImageCropper-module_overlay_ellipse__F-yu5",
          overlayEllipse: "ImageCropper-module_overlay_ellipse__F-yu5",
          hidden_canvas: "ImageCropper-module_hidden_canvas__l7EU7",
          hiddenCanvas: "ImageCropper-module_hidden_canvas__l7EU7",
          ml0: "ImageCropper-module_ml0__wrtDc"
        };
        c(
        ".ImageCropper-module_cropper_container__uvTtt{border-radius:6px 6px 0 0;max-height:544px;max-width:800px;min-width:600px}.ImageCropper-module_cropper_container__uvTtt *{box-sizing:border-box}.ImageCropper-module_cropper_container__uvTtt .advanced-cropper-simple-line{border-color:#599bff}.ImageCropper-module_cropper_container__uvTtt .advanced-cropper-simple-handler{border:1px solid #599bff}.ImageCropper-module_cropper_container__uvTtt .advanced-cropper__background-wrapper{overflow:hidden}.ImageCropper-module_cropper_container__uvTtt .advanced-cropper-stencil-overlay{box-shadow:0 0 0 1000px rgba(34,34,34,.7)}.ImageCropper-module_copper_wrapper__Wpn9E{border-radius:6px 6px 0 0;max-height:602px}.ImageCropper-module_cropper_footer__Rk-w5{align-items:center;display:flex;height:56px;justify-content:space-between;padding:0 12px}.ImageCropper-module_footer_button__BdQgl{background:#fff;border:1px solid rgba(51,51,51,.12);border-radius:6px;color:#333;cursor:pointer;font-family:inherit;font-size:16px;font-weight:500;line-height:130%;outline:none!important;padding:8px 16px;text-align:center}.ImageCropper-module_footer_button__BdQgl+.ImageCropper-module_footer_button__BdQgl{margin-left:12px}.ImageCropper-module_operate_box__QJJAG{align-items:center;display:flex;margin-left:22px}.ImageCropper-module_icon__0Sh-o{cursor:pointer}.ImageCropper-module_icon__0Sh-o+.ImageCropper-module_icon__0Sh-o{margin-left:32px;margin-right:28px}.ImageCropper-module_mock_line__-0jep{background:rgba(51,51,51,.12);border-radius:3px;flex-shrink:0;height:19px;margin-right:18px;width:2px}.ImageCropper-module_cropper_type_wrapper__7wTON{align-items:center;border-radius:4px;box-sizing:border-box;cursor:pointer;display:flex;font-size:0;gap:10px;height:28px;padding:6px 10px;position:relative}.ImageCropper-module_cropper_type_wrapper__7wTON.ImageCropper-module_active__c3F6n,.ImageCropper-module_cropper_type_wrapper__7wTON:hover{background:#eee}.ImageCropper-module_cropper_type_wrapper__7wTON.ImageCropper-module_active__c3F6n .ImageCropper-module_cropper_type_arrow__6-sTm{transform:rotate(180deg);transition:.2s ease-in}.ImageCropper-module_cropper_select_list__Q9Msa{align-items:flex-start;background:#fff;border-radius:6px;box-shadow:0 4px 20px 0 rgba(0,0,0,.08);box-sizing:border-box;display:flex;flex-wrap:wrap;height:112px;justify-content:space-between;left:50%;padding:6px;position:relative;position:absolute;top:-120px;transform:translateX(-50%);width:74px}.ImageCropper-module_cropper_select_list_arrow__GPSms{bottom:-4px;left:50%;position:absolute;transform:translateX(-50%)}.ImageCropper-module_shape_icon__d0xAo{align-items:center;cursor:pointer;display:flex;height:28px;justify-content:center;margin-bottom:8px;width:28px}.ImageCropper-module_shape_icon__d0xAo.ImageCropper-module_active__c3F6n{background:#e8f1ff;border-radius:4px;color:#3e85ee}@media screen and (max-width:959px){.ImageCropper-module_cropper_container__uvTtt{height:auto;max-height:610px;min-width:auto}.ImageCropper-module_cropper_footer__Rk-w5{height:50px;padding:0 10px}.ImageCropper-module_operate_box__QJJAG{align-items:center;margin-left:0}.ImageCropper-module_icon__0Sh-o+.ImageCropper-module_icon__0Sh-o{margin-left:36px}.ImageCropper-module_cropper_footer__Rk-w5{font-size:15px}.ImageCropper-module_footer_button__BdQgl{line-height:17px}}.ImageCropper-module_preview_circle__M21xU{border:none}.ImageCropper-module_preview_heart__ePRoZ{background:transparent;background:url(https://static.staticdj.com/oss/operation/79fbbd3c59b5e444f74d54581b9a0411.svg);background-repeat:no-repeat;background-size:100% 100%;position:relative}.ImageCropper-module_preview_star__f2pmG{background:transparent;background:url(https://static.staticdj.com/oss/operation/76f72c9c2894f11f9efcec04cf8f90e0.svg);background-repeat:no-repeat;background-size:100% 100%;position:relative}.ImageCropper-module_overlay_rect_radius__q1iPj{border-radius:28px}.ImageCropper-module_overlay_ellipse__F-yu5{border-radius:50%;height:100%;left:50%;position:absolute;transform:translateX(-50%);width:50%}.ImageCropper-module_hidden_canvas__l7EU7{display:none}.ImageCropper-module_ml0__wrtDc{margin-left:0}");
        var _v = {};
        ! function(e) {
          var t, n, r, i, l, c, u, h, p, d, f, g, m, v = v || {
            version: "5.3.0"
          };
          if (e.fabric = v, "undefined" != typeof document && "undefined" != typeof window) document instanceof("undefined" != typeof HTMLDocument ? HTMLDocument : Document) ? v.document = document : v.document = document.implementation
            .createHTMLDocument(""), v.window = window;
          else {
            var _ = new o.default.JSDOM(decodeURIComponent("%3C!DOCTYPE%20html%3E%3Chtml%3E%3Chead%3E%3C%2Fhead%3E%3Cbody%3E%3C%2Fbody%3E%3C%2Fhtml%3E"), {
              features: {
                FetchExternalResources: ["img"]
              },
              resources: "usable"
            }).window;
            v.document = _.document, v.jsdomImplForWrapper = a.default.implForWrapper, v.nodeCanvas = s.default.Canvas, v.window = _, DOMParser = v.window.DOMParser
          }

          function b(e, t) {
            var n = e.canvas,
              r = t.targetCanvas,
              i = r.getContext("2d");
            i.translate(0, r.height), i.scale(1, -1);
            var o = n.height - r.height;
            i.drawImage(n, 0, o, r.width, r.height, 0, 0, r.width, r.height)
          }

          function y(e, t) {
            var n = t.targetCanvas.getContext("2d"),
              r = t.destinationWidth,
              i = t.destinationHeight,
              o = r * i * 4,
              a = new Uint8Array(this.imageBuffer, 0, o),
              s = new Uint8ClampedArray(this.imageBuffer, 0, o);
            e.readPixels(0, 0, r, i, e.RGBA, e.UNSIGNED_BYTE, a);
            var l = new ImageData(s, r, i);
            n.putImageData(l, 0, 0)
          }
          v.isTouchSupported = "ontouchstart" in v.window || "ontouchstart" in v.document || v.window && v.window.navigator && v.window.navigator.maxTouchPoints > 0, v.isLikelyNode = "undefined" != typeof Buffer && "undefined" == typeof window, v
            .SHARED_ATTRIBUTES = ["display", "transform", "fill", "fill-opacity", "fill-rule", "opacity", "stroke", "stroke-dasharray", "stroke-linecap", "stroke-dashoffset", "stroke-linejoin", "stroke-miterlimit", "stroke-opacity",
              "stroke-width", "id", "paint-order", "vector-effect", "instantiated_by_use", "clip-path"
            ], v.DPI = 96, v.reNum = "(?:[-+]?(?:\\d+|\\d*\\.\\d+)(?:[eE][-+]?\\d+)?)", v.commaWsp = "(?:\\s+,?\\s*|,\\s*)", v.rePathCommand = /([-+]?((\d+\.\d+)|((\d+)|(\.\d+)))(?:[eE][-+]?\d+)?)/gi, v.reNonWord = /[ \n\.,;!\?\-]/, v
            .fontPaths = {}, v.iMatrix = [1, 0, 0, 1, 0, 0], v.svgNS = "http://www.w3.org/2000/svg", v.perfLimitSizeTotal = 2097152, v.maxCacheSideLimit = 4096, v.minCacheSideLimit = 256, v.charWidthsCache = {}, v.textureSize = 2048, v
            .disableStyleCopyPaste = !1, v.enableGLFiltering = !0, v.devicePixelRatio = v.window.devicePixelRatio || v.window.webkitDevicePixelRatio || v.window.mozDevicePixelRatio || 1, v.browserShadowBlurConstant = 1, v.arcToSegmentsCache = {},
            v.boundsOfCurveCache = {}, v.cachesBoundsOfCurve = !0, v.forceGLPutImageData = !1, v.initFilterBackend = function() {
              return v.enableGLFiltering && v.isWebglSupported && v.isWebglSupported(v.textureSize) ? new v.WebglFilterBackend({
                tileSize: v.textureSize
              }) : v.Canvas2dFilterBackend ? new v.Canvas2dFilterBackend : void 0
            }, "undefined" != typeof document && "undefined" != typeof window && (window.fabric = v),
            function() {
              function e(e, t) {
                if (this.__eventListeners[e]) {
                  var n = this.__eventListeners[e];
                  t ? n[n.indexOf(t)] = !1 : v.util.array.fill(n, !1)
                }
              }

              function t(e, t) {
                var n = function() {
                  t.apply(this, arguments), this.off(e, n)
                }.bind(this);
                this.on(e, n)
              }
              v.Observable = {
                fire: function(e, t) {
                  if (!this.__eventListeners) return this;
                  var n = this.__eventListeners[e];
                  if (!n) return this;
                  for (var r = 0, i = n.length; r < i; r++) n[r] && n[r].call(this, t || {});
                  return this.__eventListeners[e] = n.filter((function(e) {
                    return !1 !== e
                  })), this
                },
                on: function(e, t) {
                  if (this.__eventListeners || (this.__eventListeners = {}), 1 === arguments.length)
                    for (var n in e) this.on(n, e[n]);
                  else this.__eventListeners[e] || (this.__eventListeners[e] = []), this.__eventListeners[e].push(t);
                  return this
                },
                once: function(e, n) {
                  if (1 === arguments.length)
                    for (var r in e) t.call(this, r, e[r]);
                  else t.call(this, e, n);
                  return this
                },
                off: function(t, n) {
                  if (!this.__eventListeners) return this;
                  if (0 === arguments.length)
                    for (t in this.__eventListeners) e.call(this, t);
                  else if (1 === arguments.length && "object" == typeof arguments[0])
                    for (var r in t) e.call(this, r, t[r]);
                  else e.call(this, t, n);
                  return this
                }
              }
            }(), v.Collection = {
              _objects: [],
              add: function() {
                if (this._objects.push.apply(this._objects, arguments), this._onObjectAdded)
                  for (var e = 0, t = arguments.length; e < t; e++) this._onObjectAdded(arguments[e]);
                return this.renderOnAddRemove && this.requestRenderAll(), this
              },
              insertAt: function(e, t, n) {
                var r = this._objects;
                return n ? r[t] = e : r.splice(t, 0, e), this._onObjectAdded && this._onObjectAdded(e), this.renderOnAddRemove && this.requestRenderAll(), this
              },
              remove: function() {
                for (var e, t = this._objects, n = !1, r = 0, i = arguments.length; r < i; r++) - 1 !== (e = t.indexOf(arguments[r])) && (n = !0, t.splice(e, 1), this._onObjectRemoved && this._onObjectRemoved(arguments[r]));
                return this.renderOnAddRemove && n && this.requestRenderAll(), this
              },
              forEachObject: function(e, t) {
                for (var n = this.getObjects(), r = 0, i = n.length; r < i; r++) e.call(t, n[r], r, n);
                return this
              },
              getObjects: function(e) {
                return void 0 === e ? this._objects.concat() : this._objects.filter((function(t) {
                  return t.type === e
                }))
              },
              item: function(e) {
                return this._objects[e]
              },
              isEmpty: function() {
                return 0 === this._objects.length
              },
              size: function() {
                return this._objects.length
              },
              contains: function(e, t) {
                return this._objects.indexOf(e) > -1 || !!t && this._objects.some((function(t) {
                  return "function" == typeof t.contains && t.contains(e, !0)
                }))
              },
              complexity: function() {
                return this._objects.reduce((function(e, t) {
                  return e += t.complexity ? t.complexity() : 0
                }), 0)
              }
            }, v.CommonMethods = {
              _setOptions: function(e) {
                for (var t in e) this.set(t, e[t])
              },
              _initGradient: function(e, t) {
                !e || !e.colorStops || e instanceof v.Gradient || this.set(t, new v.Gradient(e))
              },
              _initPattern: function(e, t, n) {
                !e || !e.source || e instanceof v.Pattern ? n && n() : this.set(t, new v.Pattern(e, n))
              },
              _setObject: function(e) {
                for (var t in e) this._set(t, e[t])
              },
              set: function(e, t) {
                return "object" == typeof e ? this._setObject(e) : this._set(e, t), this
              },
              _set: function(e, t) {
                this[e] = t
              },
              toggle: function(e) {
                var t = this.get(e);
                return "boolean" == typeof t && this.set(e, !t), this
              },
              get: function(e) {
                return this[e]
              }
            },
            function(e) {
              var t = Math.sqrt,
                n = Math.atan2,
                r = Math.pow,
                i = Math.PI / 180,
                o = Math.PI / 2;
              v.util = {
                cos: function(e) {
                  if (0 === e) return 1;
                  switch (e < 0 && (e = -e), e / o) {
                    case 1:
                    case 3:
                      return 0;
                    case 2:
                      return -1
                  }
                  return Math.cos(e)
                },
                sin: function(e) {
                  if (0 === e) return 0;
                  var t = 1;
                  switch (e < 0 && (t = -1), e / o) {
                    case 1:
                      return t;
                    case 2:
                      return 0;
                    case 3:
                      return -t
                  }
                  return Math.sin(e)
                },
                removeFromArray: function(e, t) {
                  var n = e.indexOf(t);
                  return -1 !== n && e.splice(n, 1), e
                },
                getRandomInt: function(e, t) {
                  return Math.floor(Math.random() * (t - e + 1)) + e
                },
                degreesToRadians: function(e) {
                  return e * i
                },
                radiansToDegrees: function(e) {
                  return e / i
                },
                rotatePoint: function(e, t, n) {
                  var r = new v.Point(e.x - t.x, e.y - t.y),
                    i = v.util.rotateVector(r, n);
                  return new v.Point(i.x, i.y).addEquals(t)
                },
                rotateVector: function(e, t) {
                  var n = v.util.sin(t),
                    r = v.util.cos(t);
                  return {
                    x: e.x * r - e.y * n,
                    y: e.x * n + e.y * r
                  }
                },
                createVector: function(e, t) {
                  return new v.Point(t.x - e.x, t.y - e.y)
                },
                calcAngleBetweenVectors: function(e, t) {
                  return Math.acos((e.x * t.x + e.y * t.y) / (Math.hypot(e.x, e.y) * Math.hypot(t.x, t.y)))
                },
                getHatVector: function(e) {
                  return new v.Point(e.x, e.y).multiply(1 / Math.hypot(e.x, e.y))
                },
                getBisector: function(e, t, n) {
                  var r = v.util.createVector(e, t),
                    i = v.util.createVector(e, n),
                    o = v.util.calcAngleBetweenVectors(r, i),
                    a = o * (0 === v.util.calcAngleBetweenVectors(v.util.rotateVector(r, o), i) ? 1 : -1) / 2;
                  return {
                    vector: v.util.getHatVector(v.util.rotateVector(r, a)),
                    angle: o
                  }
                },
                projectStrokeOnPoints: function(e, t, n) {
                  var r = [],
                    i = t.strokeWidth / 2,
                    o = t.strokeUniform ? new v.Point(1 / t.scaleX, 1 / t.scaleY) : new v.Point(1, 1),
                    a = function(e) {
                      var t = i / Math.hypot(e.x, e.y);
                      return new v.Point(e.x * t * o.x, e.y * t * o.y)
                    };
                  return e.length <= 1 || e.forEach((function(s, l) {
                    var c, u, h = new v.Point(s.x, s.y);
                    0 === l ? (u = e[l + 1], c = n ? a(v.util.createVector(u, h)).addEquals(h) : e[e.length - 1]) : l === e.length - 1 ? (c = e[l - 1], u = n ? a(v.util.createVector(c, h)).addEquals(h) : e[0]) : (c = e[l - 1], u = e[l +
                      1]);
                    var p, d, f = v.util.getBisector(h, c, u),
                      g = f.vector,
                      m = f.angle;
                    if ("miter" === t.strokeLineJoin && (p = -i / Math.sin(m / 2), d = new v.Point(g.x * p * o.x, g.y * p * o.y), Math.hypot(d.x, d.y) / i <= t.strokeMiterLimit)) return r.push(h.add(d)), void r.push(h.subtract(d));
                    p = -i * Math.SQRT2, d = new v.Point(g.x * p * o.x, g.y * p * o.y), r.push(h.add(d)), r.push(h.subtract(d))
                  })), r
                },
                transformPoint: function(e, t, n) {
                  return n ? new v.Point(t[0] * e.x + t[2] * e.y, t[1] * e.x + t[3] * e.y) : new v.Point(t[0] * e.x + t[2] * e.y + t[4], t[1] * e.x + t[3] * e.y + t[5])
                },
                makeBoundingBoxFromPoints: function(e, t) {
                  if (t)
                    for (var n = 0; n < e.length; n++) e[n] = v.util.transformPoint(e[n], t);
                  var r = [e[0].x, e[1].x, e[2].x, e[3].x],
                    i = v.util.array.min(r),
                    o = v.util.array.max(r) - i,
                    a = [e[0].y, e[1].y, e[2].y, e[3].y],
                    s = v.util.array.min(a);
                  return {
                    left: i,
                    top: s,
                    width: o,
                    height: v.util.array.max(a) - s
                  }
                },
                invertTransform: function(e) {
                  var t = 1 / (e[0] * e[3] - e[1] * e[2]),
                    n = [t * e[3], -t * e[1], -t * e[2], t * e[0]],
                    r = v.util.transformPoint({
                      x: e[4],
                      y: e[5]
                    }, n, !0);
                  return n[4] = -r.x, n[5] = -r.y, n
                },
                toFixed: function(e, t) {
                  return parseFloat(Number(e).toFixed(t))
                },
                parseUnit: function(e, t) {
                  var n = /\D{0,2}$/.exec(e),
                    r = parseFloat(e);
                  switch (t || (t = v.Text.DEFAULT_SVG_FONT_SIZE), n[0]) {
                    case "mm":
                      return r * v.DPI / 25.4;
                    case "cm":
                      return r * v.DPI / 2.54;
                    case "in":
                      return r * v.DPI;
                    case "pt":
                      return r * v.DPI / 72;
                    case "pc":
                      return r * v.DPI / 72 * 12;
                    case "em":
                      return r * t;
                    default:
                      return r
                  }
                },
                falseFunction: function() {
                  return !1
                },
                getKlass: function(e, t) {
                  return e = v.util.string.camelize(e.charAt(0).toUpperCase() + e.slice(1)), v.util.resolveNamespace(t)[e]
                },
                getSvgAttributes: function(e) {
                  var t = ["instantiated_by_use", "style", "id", "class"];
                  switch (e) {
                    case "linearGradient":
                      t = t.concat(["x1", "y1", "x2", "y2", "gradientUnits", "gradientTransform"]);
                      break;
                    case "radialGradient":
                      t = t.concat(["gradientUnits", "gradientTransform", "cx", "cy", "r", "fx", "fy", "fr"]);
                      break;
                    case "stop":
                      t = t.concat(["offset", "stop-color", "stop-opacity"])
                  }
                  return t
                },
                resolveNamespace: function(t) {
                  if (!t) return v;
                  var n, r = t.split("."),
                    i = r.length,
                    o = e || v.window;
                  for (n = 0; n < i; ++n) o = o[r[n]];
                  return o
                },
                loadImage: function(e, t, n, r) {
                  if (e) {
                    var i = v.util.createImage(),
                      o = function() {
                        t && t.call(n, i, !1), i = i.onload = i.onerror = null
                      };
                    i.onload = o, i.onerror = function() {
                      v.log("Error loading " + i.src), t && t.call(n, null, !0), i = i.onload = i.onerror = null
                    }, 0 !== e.indexOf("data") && null != r && (i.crossOrigin = r), "data:image/svg" === e.substring(0, 14) && (i.onload = null, v.util.loadImageInDom(i, o)), i.src = e
                  } else t && t.call(n, e)
                },
                loadImageInDom: function(e, t) {
                  var n = v.document.createElement("div");
                  n.style.width = n.style.height = "1px", n.style.left = n.style.top = "-100%", n.style.position = "absolute", n.appendChild(e), v.document.querySelector("body").appendChild(n), e.onload = function() {
                    t(), n.parentNode.removeChild(n), n = null
                  }
                },
                enlivenObjects: function(e, t, n, r) {
                  var i = [],
                    o = 0,
                    a = (e = e || []).length;

                  function s() {
                    ++o === a && t && t(i.filter((function(e) {
                      return e
                    })))
                  }
                  a ? e.forEach((function(e, t) {
                    e && e.type ? v.util.getKlass(e.type, n).fromObject(e, (function(n, o) {
                      o || (i[t] = n), r && r(e, n, o), s()
                    })) : s()
                  })) : t && t(i)
                },
                enlivenObjectEnlivables: function(e, t, n) {
                  var r = v.Object.ENLIVEN_PROPS.filter((function(t) {
                    return !!e[t]
                  }));
                  v.util.enlivenObjects(r.map((function(t) {
                    return e[t]
                  })), (function(e) {
                    var i = {};
                    r.forEach((function(n, r) {
                      i[n] = e[r], t && (t[n] = e[r])
                    })), n && n(i)
                  }))
                },
                enlivenPatterns: function(e, t) {
                  function n() {
                    ++i === o && t && t(r)
                  }
                  var r = [],
                    i = 0,
                    o = (e = e || []).length;
                  o ? e.forEach((function(e, t) {
                    e && e.source ? new v.Pattern(e, (function(e) {
                      r[t] = e, n()
                    })) : (r[t] = e, n())
                  })) : t && t(r)
                },
                groupSVGElements: function(e, t, n) {
                  var r;
                  return e && 1 === e.length ? (void 0 !== n && (e[0].sourcePath = n), e[0]) : (t && (t.width && t.height ? t.centerPoint = {
                    x: t.width / 2,
                    y: t.height / 2
                  } : (delete t.width, delete t.height)), r = new v.Group(e, t), void 0 !== n && (r.sourcePath = n), r)
                },
                populateWithProperties: function(e, t, n) {
                  if (n && Array.isArray(n))
                    for (var r = 0, i = n.length; r < i; r++) n[r] in e && (t[n[r]] = e[n[r]])
                },
                createCanvasElement: function() {
                  return v.document.createElement("canvas")
                },
                copyCanvasElement: function(e) {
                  var t = v.util.createCanvasElement();
                  return t.width = e.width, t.height = e.height, t.getContext("2d").drawImage(e, 0, 0), t
                },
                toDataURL: function(e, t, n) {
                  return e.toDataURL("image/" + t, n)
                },
                createImage: function() {
                  return v.document.createElement("img")
                },
                multiplyTransformMatrices: function(e, t, n) {
                  return [e[0] * t[0] + e[2] * t[1], e[1] * t[0] + e[3] * t[1], e[0] * t[2] + e[2] * t[3], e[1] * t[2] + e[3] * t[3], n ? 0 : e[0] * t[4] + e[2] * t[5] + e[4], n ? 0 : e[1] * t[4] + e[3] * t[5] + e[5]]
                },
                qrDecompose: function(e) {
                  var o = n(e[1], e[0]),
                    a = r(e[0], 2) + r(e[1], 2),
                    s = t(a),
                    l = (e[0] * e[3] - e[2] * e[1]) / s,
                    c = n(e[0] * e[2] + e[1] * e[3], a);
                  return {
                    angle: o / i,
                    scaleX: s,
                    scaleY: l,
                    skewX: c / i,
                    skewY: 0,
                    translateX: e[4],
                    translateY: e[5]
                  }
                },
                calcRotateMatrix: function(e) {
                  if (!e.angle) return v.iMatrix.concat();
                  var t = v.util.degreesToRadians(e.angle),
                    n = v.util.cos(t),
                    r = v.util.sin(t);
                  return [n, r, -r, n, 0, 0]
                },
                calcDimensionsMatrix: function(e) {
                  var t = void 0 === e.scaleX ? 1 : e.scaleX,
                    n = void 0 === e.scaleY ? 1 : e.scaleY,
                    r = [e.flipX ? -t : t, 0, 0, e.flipY ? -n : n, 0, 0],
                    i = v.util.multiplyTransformMatrices,
                    o = v.util.degreesToRadians;
                  return e.skewX && (r = i(r, [1, 0, Math.tan(o(e.skewX)), 1], !0)), e.skewY && (r = i(r, [1, Math.tan(o(e.skewY)), 0, 1], !0)), r
                },
                composeMatrix: function(e) {
                  var t = [1, 0, 0, 1, e.translateX || 0, e.translateY || 0],
                    n = v.util.multiplyTransformMatrices;
                  return e.angle && (t = n(t, v.util.calcRotateMatrix(e))), (1 !== e.scaleX || 1 !== e.scaleY || e.skewX || e.skewY || e.flipX || e.flipY) && (t = n(t, v.util.calcDimensionsMatrix(e))), t
                },
                resetObjectTransform: function(e) {
                  e.scaleX = 1, e.scaleY = 1, e.skewX = 0, e.skewY = 0, e.flipX = !1, e.flipY = !1, e.rotate(0)
                },
                saveObjectTransform: function(e) {
                  return {
                    scaleX: e.scaleX,
                    scaleY: e.scaleY,
                    skewX: e.skewX,
                    skewY: e.skewY,
                    angle: e.angle,
                    left: e.left,
                    flipX: e.flipX,
                    flipY: e.flipY,
                    top: e.top
                  }
                },
                isTransparent: function(e, t, n, r) {
                  r > 0 && (t > r ? t -= r : t = 0, n > r ? n -= r : n = 0);
                  var i, o = !0,
                    a = e.getImageData(t, n, 2 * r || 1, 2 * r || 1),
                    s = a.data.length;
                  for (i = 3; i < s && !1 !== (o = a.data[i] <= 0); i += 4);
                  return a = null, o
                },
                parsePreserveAspectRatioAttribute: function(e) {
                  var t, n = "meet",
                    r = e.split(" ");
                  return r && r.length && ("meet" !== (n = r.pop()) && "slice" !== n ? (t = n, n = "meet") : r.length && (t = r.pop())), {
                    meetOrSlice: n,
                    alignX: "none" !== t ? t.slice(1, 4) : "none",
                    alignY: "none" !== t ? t.slice(5, 8) : "none"
                  }
                },
                clearFabricFontCache: function(e) {
                  (e = (e || "").toLowerCase()) ? v.charWidthsCache[e] && delete v.charWidthsCache[e]: v.charWidthsCache = {}
                },
                limitDimsByArea: function(e, t) {
                  var n = Math.sqrt(t * e),
                    r = Math.floor(t / n);
                  return {
                    x: Math.floor(n),
                    y: r
                  }
                },
                capValue: function(e, t, n) {
                  return Math.max(e, Math.min(t, n))
                },
                findScaleToFit: function(e, t) {
                  return Math.min(t.width / e.width, t.height / e.height)
                },
                findScaleToCover: function(e, t) {
                  return Math.max(t.width / e.width, t.height / e.height)
                },
                matrixToSVG: function(e) {
                  return "matrix(" + e.map((function(e) {
                    return v.util.toFixed(e, v.Object.NUM_FRACTION_DIGITS)
                  })).join(" ") + ")"
                },
                removeTransformFromObject: function(e, t) {
                  var n = v.util.invertTransform(t),
                    r = v.util.multiplyTransformMatrices(n, e.calcOwnMatrix());
                  v.util.applyTransformToObject(e, r)
                },
                addTransformToObject: function(e, t) {
                  v.util.applyTransformToObject(e, v.util.multiplyTransformMatrices(t, e.calcOwnMatrix()))
                },
                applyTransformToObject: function(e, t) {
                  var n = v.util.qrDecompose(t),
                    r = new v.Point(n.translateX, n.translateY);
                  e.flipX = !1, e.flipY = !1, e.set("scaleX", n.scaleX), e.set("scaleY", n.scaleY), e.skewX = n.skewX, e.skewY = n.skewY, e.angle = n.angle, e.setPositionByOrigin(r, "center", "center")
                },
                sizeAfterTransform: function(e, t, n) {
                  var r = e / 2,
                    i = t / 2,
                    o = [{
                      x: -r,
                      y: -i
                    }, {
                      x: r,
                      y: -i
                    }, {
                      x: -r,
                      y: i
                    }, {
                      x: r,
                      y: i
                    }],
                    a = v.util.calcDimensionsMatrix(n),
                    s = v.util.makeBoundingBoxFromPoints(o, a);
                  return {
                    x: s.width,
                    y: s.height
                  }
                },
                mergeClipPaths: function(e, t) {
                  var n = e,
                    r = t;
                  n.inverted && !r.inverted && (n = t, r = e), v.util.applyTransformToObject(r, v.util.multiplyTransformMatrices(v.util.invertTransform(n.calcTransformMatrix()), r.calcTransformMatrix()));
                  var i = n.inverted && r.inverted;
                  return i && (n.inverted = r.inverted = !1), new v.Group([n], {
                    clipPath: r,
                    inverted: i
                  })
                },
                hasStyleChanged: function(e, t, n) {
                  return n = n || !1, e.fill !== t.fill || e.stroke !== t.stroke || e.strokeWidth !== t.strokeWidth || e.fontSize !== t.fontSize || e.fontFamily !== t.fontFamily || e.fontWeight !== t.fontWeight || e.fontStyle !== t
                    .fontStyle || e.textBackgroundColor !== t.textBackgroundColor || e.deltaY !== t.deltaY || n && (e.overline !== t.overline || e.underline !== t.underline || e.linethrough !== t.linethrough)
                },
                stylesToArray: function(e, t) {
                  e = v.util.object.clone(e, !0);
                  for (var n = t.split("\n"), r = -1, i = {}, o = [], a = 0; a < n.length; a++)
                    if (e[a])
                      for (var s = 0; s < n[a].length; s++) {
                        r++;
                        var l = e[a][s];
                        if (l && Object.keys(l).length > 0) v.util.hasStyleChanged(i, l, !0) ? o.push({
                          start: r,
                          end: r + 1,
                          style: l
                        }) : o[o.length - 1].end++;
                        i = l || {}
                      } else r += n[a].length;
                  return o
                },
                stylesFromArray: function(e, t) {
                  if (!Array.isArray(e)) return e;
                  for (var n = t.split("\n"), r = -1, i = 0, o = {}, a = 0; a < n.length; a++)
                    for (var s = 0; s < n[a].length; s++) r++, e[i] && e[i].start <= r && r < e[i].end && (o[a] = o[a] || {}, o[a][s] = Object.assign({}, e[i].style), r === e[i].end - 1 && i++);
                  return o
                }
              }
            }(e),
            function() {
              var e = Array.prototype.join,
                t = {
                  m: 2,
                  l: 2,
                  h: 1,
                  v: 1,
                  c: 6,
                  s: 4,
                  q: 4,
                  t: 2,
                  a: 7
                },
                n = {
                  m: "l",
                  M: "L"
                };

              function r(e, t, n, r, i, o, a, s, l, c, u) {
                var h = v.util.cos(e),
                  p = v.util.sin(e),
                  d = v.util.cos(t),
                  f = v.util.sin(t),
                  g = n * i * d - r * o * f + a,
                  m = r * i * d + n * o * f + s;
                return ["C", c + l * (-n * i * p - r * o * h), u + l * (-r * i * p + n * o * h), g + l * (n * i * f + r * o * d), m + l * (r * i * f - n * o * d), g, m]
              }

              function i(e, t, n, r) {
                var i = Math.atan2(t, e),
                  o = Math.atan2(r, n);
                return o >= i ? o - i : 2 * Math.PI - (i - o)
              }

              function o(e, t, n) {
                for (var o = n[1], a = n[2], s = n[3], l = n[4], c = n[5], u = function(e, t, n, o, a, s, l) {
                    var c = Math.PI,
                      u = l * c / 180,
                      h = v.util.sin(u),
                      p = v.util.cos(u),
                      d = 0,
                      f = 0,
                      g = -p * e * .5 - h * t * .5,
                      m = -p * t * .5 + h * e * .5,
                      _ = (n = Math.abs(n)) * n,
                      b = (o = Math.abs(o)) * o,
                      y = m * m,
                      w = g * g,
                      x = _ * b - _ * y - b * w,
                      k = 0;
                    if (x < 0) {
                      var C = Math.sqrt(1 - x / (_ * b));
                      n *= C, o *= C
                    } else k = (a === s ? -1 : 1) * Math.sqrt(x / (_ * y + b * w));
                    var S = k * n * m / o,
                      E = -k * o * g / n,
                      T = p * S - h * E + .5 * e,
                      O = h * S + p * E + .5 * t,
                      A = i(1, 0, (g - S) / n, (m - E) / o),
                      P = i((g - S) / n, (m - E) / o, (-g - S) / n, (-m - E) / o);
                    0 === s && P > 0 ? P -= 2 * c : 1 === s && P < 0 && (P += 2 * c);
                    for (var M = Math.ceil(Math.abs(P / c * 2)), D = [], I = P / M, R = 8 / 3 * Math.sin(I / 4) * Math.sin(I / 4) / Math.sin(I / 2), j = A + I, N = 0; N < M; N++) D[N] = r(A, j, p, h, n, o, T, O, R, d, f), d = D[N][5], f = D[N][
                      6
                    ], A = j, j += I;
                    return D
                  }(n[6] - e, n[7] - t, o, a, l, c, s), h = 0, p = u.length; h < p; h++) u[h][1] += e, u[h][2] += t, u[h][3] += e, u[h][4] += t, u[h][5] += e, u[h][6] += t;
                return u
              }

              function a(e, t, n, r) {
                return Math.sqrt((n - e) * (n - e) + (r - t) * (r - t))
              }

              function s(e, t, n, r, i, o, a, s) {
                return function(l) {
                  var c = function(e) {
                      return e * e * e
                    }(l),
                    u = function(e) {
                      return 3 * e * e * (1 - e)
                    }(l),
                    h = function(e) {
                      return 3 * e * (1 - e) * (1 - e)
                    }(l),
                    p = function(e) {
                      return (1 - e) * (1 - e) * (1 - e)
                    }(l);
                  return {
                    x: a * c + i * u + n * h + e * p,
                    y: s * c + o * u + r * h + t * p
                  }
                }
              }

              function l(e, t, n, r, i, o, a, s) {
                return function(l) {
                  var c = 1 - l,
                    u = 3 * c * c * (n - e) + 6 * c * l * (i - n) + 3 * l * l * (a - i),
                    h = 3 * c * c * (r - t) + 6 * c * l * (o - r) + 3 * l * l * (s - o);
                  return Math.atan2(h, u)
                }
              }

              function c(e, t, n, r, i, o) {
                return function(a) {
                  var s = function(e) {
                      return e * e
                    }(a),
                    l = function(e) {
                      return 2 * e * (1 - e)
                    }(a),
                    c = function(e) {
                      return (1 - e) * (1 - e)
                    }(a);
                  return {
                    x: i * s + n * l + e * c,
                    y: o * s + r * l + t * c
                  }
                }
              }

              function u(e, t, n, r, i, o) {
                return function(a) {
                  var s = 1 - a,
                    l = 2 * s * (n - e) + 2 * a * (i - n),
                    c = 2 * s * (r - t) + 2 * a * (o - r);
                  return Math.atan2(c, l)
                }
              }

              function h(e, t, n) {
                var r, i, o = {
                    x: t,
                    y: n
                  },
                  s = 0;
                for (i = 1; i <= 100; i += 1) r = e(i / 100), s += a(o.x, o.y, r.x, r.y), o = r;
                return s
              }

              function p(e, t) {
                for (var n, r, i, o = 0, s = 0, l = e.iterator, c = {
                    x: e.x,
                    y: e.y
                  }, u = .01, h = e.angleFinder; s < t && u > 1e-4;) n = l(o), i = o, (r = a(c.x, c.y, n.x, n.y)) + s > t ? (o -= u, u /= 2) : (c = n, o += u, s += r);
                return n.angle = h(i), n
              }

              function d(e) {
                for (var t, n, r, i, o = 0, p = e.length, d = 0, f = 0, g = 0, m = 0, v = [], _ = 0; _ < p; _++) {
                  switch (r = {
                      x: d,
                      y: f,
                      command: (t = e[_])[0]
                    }, t[0]) {
                    case "M":
                      r.length = 0, g = d = t[1], m = f = t[2];
                      break;
                    case "L":
                      r.length = a(d, f, t[1], t[2]), d = t[1], f = t[2];
                      break;
                    case "C":
                      n = s(d, f, t[1], t[2], t[3], t[4], t[5], t[6]), i = l(d, f, t[1], t[2], t[3], t[4], t[5], t[6]), r.iterator = n, r.angleFinder = i, r.length = h(n, d, f), d = t[5], f = t[6];
                      break;
                    case "Q":
                      n = c(d, f, t[1], t[2], t[3], t[4]), i = u(d, f, t[1], t[2], t[3], t[4]), r.iterator = n, r.angleFinder = i, r.length = h(n, d, f), d = t[3], f = t[4];
                      break;
                    case "Z":
                    case "z":
                      r.destX = g, r.destY = m, r.length = a(d, f, g, m), d = g, f = m
                  }
                  o += r.length, v.push(r)
                }
                return v.push({
                  length: o,
                  x: d,
                  y: f
                }), v
              }
              v.util.joinPath = function(e) {
                return e.map((function(e) {
                  return e.join(" ")
                })).join(" ")
              }, v.util.parsePath = function(e) {
                var r, i, o, a, s, l = [],
                  c = [],
                  u = v.rePathCommand,
                  h = "[-+]?(?:\\d*\\.\\d+|\\d+\\.?)(?:[eE][-+]?\\d+)?\\s*",
                  p = "(" + h + ")" + v.commaWsp,
                  d = "([01])" + v.commaWsp + "?",
                  f = new RegExp(p + "?" + p + "?" + p + d + d + p + "?(" + h + ")", "g");
                if (!e || !e.match) return l;
                for (var g, m = 0, _ = (s = e.match(/[mzlhvcsqta][^mzlhvcsqta]*/gi)).length; m < _; m++) {
                  a = (r = s[m]).slice(1).trim(), c.length = 0;
                  var b = r.charAt(0);
                  if (g = [b], "a" === b.toLowerCase())
                    for (var y; y = f.exec(a);)
                      for (var w = 1; w < y.length; w++) c.push(y[w]);
                  else
                    for (; o = u.exec(a);) c.push(o[0]);
                  w = 0;
                  for (var x = c.length; w < x; w++) i = parseFloat(c[w]), isNaN(i) || g.push(i);
                  var k = t[b.toLowerCase()],
                    C = n[b] || b;
                  if (g.length - 1 > k)
                    for (var S = 1, E = g.length; S < E; S += k) l.push([b].concat(g.slice(S, S + k))), b = C;
                  else l.push(g)
                }
                return l
              }, v.util.makePathSimpler = function(e) {
                var t, n, r, i, a, s, l = 0,
                  c = 0,
                  u = e.length,
                  h = 0,
                  p = 0,
                  d = [];
                for (n = 0; n < u; ++n) {
                  switch (r = !1, (t = e[n].slice(0))[0]) {
                    case "l":
                      t[0] = "L", t[1] += l, t[2] += c;
                    case "L":
                      l = t[1], c = t[2];
                      break;
                    case "h":
                      t[1] += l;
                    case "H":
                      t[0] = "L", t[2] = c, l = t[1];
                      break;
                    case "v":
                      t[1] += c;
                    case "V":
                      t[0] = "L", c = t[1], t[1] = l, t[2] = c;
                      break;
                    case "m":
                      t[0] = "M", t[1] += l, t[2] += c;
                    case "M":
                      l = t[1], c = t[2], h = t[1], p = t[2];
                      break;
                    case "c":
                      t[0] = "C", t[1] += l, t[2] += c, t[3] += l, t[4] += c, t[5] += l, t[6] += c;
                    case "C":
                      a = t[3], s = t[4], l = t[5], c = t[6];
                      break;
                    case "s":
                      t[0] = "S", t[1] += l, t[2] += c, t[3] += l, t[4] += c;
                    case "S":
                      "C" === i ? (a = 2 * l - a, s = 2 * c - s) : (a = l, s = c), l = t[3], c = t[4], t[0] = "C", t[5] = t[3], t[6] = t[4], t[3] = t[1], t[4] = t[2], t[1] = a, t[2] = s, a = t[3], s = t[4];
                      break;
                    case "q":
                      t[0] = "Q", t[1] += l, t[2] += c, t[3] += l, t[4] += c;
                    case "Q":
                      a = t[1], s = t[2], l = t[3], c = t[4];
                      break;
                    case "t":
                      t[0] = "T", t[1] += l, t[2] += c;
                    case "T":
                      "Q" === i ? (a = 2 * l - a, s = 2 * c - s) : (a = l, s = c), t[0] = "Q", l = t[1], c = t[2], t[1] = a, t[2] = s, t[3] = l, t[4] = c;
                      break;
                    case "a":
                      t[0] = "A", t[6] += l, t[7] += c;
                    case "A":
                      r = !0, d = d.concat(o(l, c, t)), l = t[6], c = t[7];
                      break;
                    case "z":
                    case "Z":
                      l = h, c = p
                  }
                  r || d.push(t), i = t[0]
                }
                return d
              }, v.util.getSmoothPathFromPoints = function(e, t) {
                var n, r = [],
                  i = new v.Point(e[0].x, e[0].y),
                  o = new v.Point(e[1].x, e[1].y),
                  a = e.length,
                  s = 1,
                  l = 0,
                  c = a > 2;
                for (t = t || 0, c && (s = e[2].x < o.x ? -1 : e[2].x === o.x ? 0 : 1, l = e[2].y < o.y ? -1 : e[2].y === o.y ? 0 : 1), r.push(["M", i.x - s * t, i.y - l * t]), n = 1; n < a; n++) {
                  if (!i.eq(o)) {
                    var u = i.midPointFrom(o);
                    r.push(["Q", i.x, i.y, u.x, u.y])
                  }
                  i = e[n], n + 1 < e.length && (o = e[n + 1])
                }
                return c && (s = i.x > e[n - 2].x ? 1 : i.x === e[n - 2].x ? 0 : -1, l = i.y > e[n - 2].y ? 1 : i.y === e[n - 2].y ? 0 : -1), r.push(["L", i.x + s * t, i.y + l * t]), r
              }, v.util.getPathSegmentsInfo = d, v.util.getBoundsOfCurve = function(t, n, r, i, o, a, s, l) {
                var c;
                if (v.cachesBoundsOfCurve && (c = e.call(arguments), v.boundsOfCurveCache[c])) return v.boundsOfCurveCache[c];
                var u, h, p, d, f, g, m, _, b = Math.sqrt,
                  y = Math.min,
                  w = Math.max,
                  x = Math.abs,
                  k = [],
                  C = [
                    [],
                    []
                  ];
                h = 6 * t - 12 * r + 6 * o, u = -3 * t + 9 * r - 9 * o + 3 * s, p = 3 * r - 3 * t;
                for (var S = 0; S < 2; ++S)
                  if (S > 0 && (h = 6 * n - 12 * i + 6 * a, u = -3 * n + 9 * i - 9 * a + 3 * l, p = 3 * i - 3 * n), x(u) < 1e-12) {
                    if (x(h) < 1e-12) continue;
                    0 < (d = -p / h) && d < 1 && k.push(d)
                  } else(m = h * h - 4 * p * u) < 0 || (0 < (f = (-h + (_ = b(m))) / (2 * u)) && f < 1 && k.push(f), 0 < (g = (-h - _) / (2 * u)) && g < 1 && k.push(g));
                for (var E, T, O, A = k.length, P = A; A--;) E = (O = 1 - (d = k[A])) * O * O * t + 3 * O * O * d * r + 3 * O * d * d * o + d * d * d * s, C[0][A] = E, T = O * O * O * n + 3 * O * O * d * i + 3 * O * d * d * a + d * d * d * l,
                  C[1][A] = T;
                C[0][P] = t, C[1][P] = n, C[0][P + 1] = s, C[1][P + 1] = l;
                var M = [{
                  x: y.apply(null, C[0]),
                  y: y.apply(null, C[1])
                }, {
                  x: w.apply(null, C[0]),
                  y: w.apply(null, C[1])
                }];
                return v.cachesBoundsOfCurve && (v.boundsOfCurveCache[c] = M), M
              }, v.util.getPointOnPath = function(e, t, n) {
                n || (n = d(e));
                for (var r = 0; t - n[r].length > 0 && r < n.length - 2;) t -= n[r].length, r++;
                var i, o = n[r],
                  a = t / o.length,
                  s = o.command,
                  l = e[r];
                switch (s) {
                  case "M":
                    return {
                      x: o.x, y: o.y, angle: 0
                    };
                  case "Z":
                  case "z":
                    return (i = new v.Point(o.x, o.y).lerp(new v.Point(o.destX, o.destY), a)).angle = Math.atan2(o.destY - o.y, o.destX - o.x), i;
                  case "L":
                    return (i = new v.Point(o.x, o.y).lerp(new v.Point(l[1], l[2]), a)).angle = Math.atan2(l[2] - o.y, l[1] - o.x), i;
                  case "C":
                  case "Q":
                    return p(o, t)
                }
              }, v.util.transformPath = function(e, t, n) {
                return n && (t = v.util.multiplyTransformMatrices(t, [1, 0, 0, 1, -n.x, -n.y])), e.map((function(e) {
                  for (var n = e.slice(0), r = {}, i = 1; i < e.length - 1; i += 2) r.x = e[i], r.y = e[i + 1], r = v.util.transformPoint(r, t), n[i] = r.x, n[i + 1] = r.y;
                  return n
                }))
              }
            }(),
            function() {
              var e = Array.prototype.slice;

              function t(e, t, n) {
                if (e && 0 !== e.length) {
                  var r = e.length - 1,
                    i = t ? e[r][t] : e[r];
                  if (t)
                    for (; r--;) n(e[r][t], i) && (i = e[r][t]);
                  else
                    for (; r--;) n(e[r], i) && (i = e[r]);
                  return i
                }
              }
              v.util.array = {
                fill: function(e, t) {
                  for (var n = e.length; n--;) e[n] = t;
                  return e
                },
                invoke: function(t, n) {
                  for (var r = e.call(arguments, 2), i = [], o = 0, a = t.length; o < a; o++) i[o] = r.length ? t[o][n].apply(t[o], r) : t[o][n].call(t[o]);
                  return i
                },
                min: function(e, n) {
                  return t(e, n, (function(e, t) {
                    return e < t
                  }))
                },
                max: function(e, n) {
                  return t(e, n, (function(e, t) {
                    return e >= t
                  }))
                }
              }
            }(),
            function() {
              function e(t, n, r) {
                if (r)
                  if (!v.isLikelyNode && n instanceof Element) t = n;
                  else if (n instanceof Array) {
                  t = [];
                  for (var i = 0, o = n.length; i < o; i++) t[i] = e({}, n[i], r)
                } else if (n && "object" == typeof n)
                  for (var a in n) "canvas" === a || "group" === a ? t[a] = null : n.hasOwnProperty(a) && (t[a] = e({}, n[a], r));
                else t = n;
                else
                  for (var a in n) t[a] = n[a];
                return t
              }
              v.util.object = {
                extend: e,
                clone: function(t, n) {
                  return e({}, t, n)
                }
              }, v.util.object.extend(v.util, v.Observable)
            }(),
            function() {
              function e(e, t) {
                var n = e.charCodeAt(t);
                if (isNaN(n)) return "";
                if (n < 55296 || n > 57343) return e.charAt(t);
                if (55296 <= n && n <= 56319) {
                  if (e.length <= t + 1) throw "High surrogate without following low surrogate";
                  var r = e.charCodeAt(t + 1);
                  if (56320 > r || r > 57343) throw "High surrogate without following low surrogate";
                  return e.charAt(t) + e.charAt(t + 1)
                }
                if (0 === t) throw "Low surrogate without preceding high surrogate";
                var i = e.charCodeAt(t - 1);
                if (55296 > i || i > 56319) throw "Low surrogate without preceding high surrogate";
                return !1
              }
              v.util.string = {
                camelize: function(e) {
                  return e.replace(/-+(.)?/g, (function(e, t) {
                    return t ? t.toUpperCase() : ""
                  }))
                },
                capitalize: function(e, t) {
                  return e.charAt(0).toUpperCase() + (t ? e.slice(1) : e.slice(1).toLowerCase())
                },
                escapeXml: function(e) {
                  return e.replace(/&/g, "&amp;").replace(/"/g, "&quot;").replace(/'/g, "&apos;").replace(/</g, "&lt;").replace(/>/g, "&gt;")
                },
                graphemeSplit: function(t) {
                  var n, r = 0,
                    i = [];
                  for (r = 0; r < t.length; r++) !1 !== (n = e(t, r)) && i.push(n);
                  return i
                }
              }
            }(),
            function() {
              var e = Array.prototype.slice,
                t = function() {},
                n = function() {
                  for (var e in {
                      toString: 1
                    })
                    if ("toString" === e) return !1;
                  return !0
                }(),
                r = function(e, t, r) {
                  for (var i in t) i in e.prototype && "function" == typeof e.prototype[i] && (t[i] + "").indexOf("callSuper") > -1 ? e.prototype[i] = function(e) {
                    return function() {
                      var n = this.constructor.superclass;
                      this.constructor.superclass = r;
                      var i = t[e].apply(this, arguments);
                      if (this.constructor.superclass = n, "initialize" !== e) return i
                    }
                  }(i) : e.prototype[i] = t[i], n && (t.toString !== Object.prototype.toString && (e.prototype.toString = t.toString), t.valueOf !== Object.prototype.valueOf && (e.prototype.valueOf = t.valueOf))
                };

              function i() {}

              function o(t) {
                for (var n = null, r = this; r.constructor.superclass;) {
                  var i = r.constructor.superclass.prototype[t];
                  if (r[t] !== i) {
                    n = i;
                    break
                  }
                  r = r.constructor.superclass.prototype
                }
                if (n) return arguments.length > 1 ? n.apply(this, e.call(arguments, 1)) : n.call(this)
              }
              v.util.createClass = function() {
                var n = null,
                  a = e.call(arguments, 0);

                function s() {
                  this.initialize.apply(this, arguments)
                }
                "function" == typeof a[0] && (n = a.shift()), s.superclass = n, s.subclasses = [], n && (i.prototype = n.prototype, s.prototype = new i, n.subclasses.push(s));
                for (var l = 0, c = a.length; l < c; l++) r(s, a[l], n);
                return s.prototype.initialize || (s.prototype.initialize = t), s.prototype.constructor = s, s.prototype.callSuper = o, s
              }
            }(), t = !!v.document.createElement("div").attachEvent, n = ["touchstart", "touchmove", "touchend"], v.util.addListener = function(e, n, r, i) {
              e && e.addEventListener(n, r, !t && i)
            }, v.util.removeListener = function(e, n, r, i) {
              e && e.removeEventListener(n, r, !t && i)
            }, v.util.getPointer = function(e) {
              var t = e.target,
                n = v.util.getScrollLeftTop(t),
                r = function(e) {
                  var t = e.changedTouches;
                  return t && t[0] ? t[0] : e
                }(e);
              return {
                x: r.clientX + n.left,
                y: r.clientY + n.top
              }
            }, v.util.isTouchEvent = function(e) {
              return n.indexOf(e.type) > -1 || "touch" === e.pointerType
            }, r = v.document.createElement("div"), i = "string" == typeof r.style.opacity, l = "string" == typeof r.style.filter, c = /alpha\s*\(\s*opacity\s*=\s*([^\)]+)\)/, u = function(e) {
              return e
            }, i ? u = function(e, t) {
              return e.style.opacity = t, e
            } : l && (u = function(e, t) {
              var n = e.style;
              return e.currentStyle && !e.currentStyle.hasLayout && (n.zoom = 1), c.test(n.filter) ? (t = t >= .9999 ? "" : "alpha(opacity=" + 100 * t + ")", n.filter = n.filter.replace(c, t)) : n.filter += " alpha(opacity=" + 100 * t + ")", e
            }), v.util.setStyle = function(e, t) {
              var n = e.style;
              if (!n) return e;
              if ("string" == typeof t) return e.style.cssText += ";" + t, t.indexOf("opacity") > -1 ? u(e, t.match(/opacity:\s*(\d?\.?\d*)/)[1]) : e;
              for (var r in t)
                if ("opacity" === r) u(e, t[r]);
                else {
                  var i = "float" === r || "cssFloat" === r ? void 0 === n.styleFloat ? "cssFloat" : "styleFloat" : r;
                  n.setProperty(i, t[r])
                } return e
            },
            function() {
              var e = Array.prototype.slice;
              var t, n, r = function(t) {
                return e.call(t, 0)
              };
              try {
                t = r(v.document.childNodes) instanceof Array
              } catch (e) {}

              function i(e, t) {
                var n = v.document.createElement(e);
                for (var r in t) "class" === r ? n.className = t[r] : "for" === r ? n.htmlFor = t[r] : n.setAttribute(r, t[r]);
                return n
              }

              function o(e) {
                for (var t = 0, n = 0, r = v.document.documentElement, i = v.document.body || {
                    scrollLeft: 0,
                    scrollTop: 0
                  }; e && (e.parentNode || e.host) && ((e = e.parentNode || e.host) === v.document ? (t = i.scrollLeft || r.scrollLeft || 0, n = i.scrollTop || r.scrollTop || 0) : (t += e.scrollLeft || 0, n += e.scrollTop || 0), 1 !== e
                    .nodeType || "fixed" !== e.style.position););
                return {
                  left: t,
                  top: n
                }
              }
              t || (r = function(e) {
                  for (var t = new Array(e.length), n = e.length; n--;) t[n] = e[n];
                  return t
                }), n = v.document.defaultView && v.document.defaultView.getComputedStyle ? function(e, t) {
                  var n = v.document.defaultView.getComputedStyle(e, null);
                  return n ? n[t] : void 0
                } : function(e, t) {
                  var n = e.style[t];
                  return !n && e.currentStyle && (n = e.currentStyle[t]), n
                },
                function() {
                  var e = v.document.documentElement.style,
                    t = "userSelect" in e ? "userSelect" : "MozUserSelect" in e ? "MozUserSelect" : "WebkitUserSelect" in e ? "WebkitUserSelect" : "KhtmlUserSelect" in e ? "KhtmlUserSelect" : "";
                  v.util.makeElementUnselectable = function(e) {
                    return void 0 !== e.onselectstart && (e.onselectstart = v.util.falseFunction), t ? e.style[t] = "none" : "string" == typeof e.unselectable && (e.unselectable = "on"), e
                  }, v.util.makeElementSelectable = function(e) {
                    return void 0 !== e.onselectstart && (e.onselectstart = null), t ? e.style[t] = "" : "string" == typeof e.unselectable && (e.unselectable = ""), e
                  }
                }(), v.util.setImageSmoothing = function(e, t) {
                  e.imageSmoothingEnabled = e.imageSmoothingEnabled || e.webkitImageSmoothingEnabled || e.mozImageSmoothingEnabled || e.msImageSmoothingEnabled || e.oImageSmoothingEnabled, e.imageSmoothingEnabled = t
                }, v.util.getById = function(e) {
                  return "string" == typeof e ? v.document.getElementById(e) : e
                }, v.util.toArray = r, v.util.addClass = function(e, t) {
                  e && -1 === (" " + e.className + " ").indexOf(" " + t + " ") && (e.className += (e.className ? " " : "") + t)
                }, v.util.makeElement = i, v.util.wrapElement = function(e, t, n) {
                  return "string" == typeof t && (t = i(t, n)), e.parentNode && e.parentNode.replaceChild(t, e), t.appendChild(e), t
                }, v.util.getScrollLeftTop = o, v.util.getElementOffset = function(e) {
                  var t, r, i = e && e.ownerDocument,
                    a = {
                      left: 0,
                      top: 0
                    },
                    s = {
                      left: 0,
                      top: 0
                    },
                    l = {
                      borderLeftWidth: "left",
                      borderTopWidth: "top",
                      paddingLeft: "left",
                      paddingTop: "top"
                    };
                  if (!i) return s;
                  for (var c in l) s[l[c]] += parseInt(n(e, c), 10) || 0;
                  return t = i.documentElement, void 0 !== e.getBoundingClientRect && (a = e.getBoundingClientRect()), r = o(e), {
                    left: a.left + r.left - (t.clientLeft || 0) + s.left,
                    top: a.top + r.top - (t.clientTop || 0) + s.top
                  }
                }, v.util.getNodeCanvas = function(e) {
                  var t = v.jsdomImplForWrapper(e);
                  return t._canvas || t._image
                }, v.util.cleanUpJsdomNode = function(e) {
                  if (v.isLikelyNode) {
                    var t = v.jsdomImplForWrapper(e);
                    t && (t._image = null, t._canvas = null, t._currentSrc = null, t._attributes = null, t._classList = null)
                  }
                }
            }(),
            function() {
              function e() {}
              v.util.request = function(t, n) {
                n || (n = {});
                var r = n.method ? n.method.toUpperCase() : "GET",
                  i = n.onComplete || function() {},
                  o = new v.window.XMLHttpRequest,
                  a = n.body || n.parameters;
                return o.onreadystatechange = function() {
                  4 === o.readyState && (i(o), o.onreadystatechange = e)
                }, "GET" === r && (a = null, "string" == typeof n.parameters && (t = function(e, t) {
                  return e + (/\?/.test(e) ? "&" : "?") + t
                }(t, n.parameters))), o.open(r, t, !0), "POST" !== r && "PUT" !== r || o.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"), o.send(a), o
              }
            }(), v.log = console.log, v.warn = console.warn,
            function() {
              var e = v.util.object.extend,
                t = v.util.object.clone,
                n = [];

              function r() {
                return !1
              }

              function i(e, t, n, r) {
                return -n * Math.cos(e / r * (Math.PI / 2)) + n + t
              }
              v.util.object.extend(n, {
                cancelAll: function() {
                  var e = this.splice(0);
                  return e.forEach((function(e) {
                    e.cancel()
                  })), e
                },
                cancelByCanvas: function(e) {
                  if (!e) return [];
                  var t = this.filter((function(t) {
                    return "object" == typeof t.target && t.target.canvas === e
                  }));
                  return t.forEach((function(e) {
                    e.cancel()
                  })), t
                },
                cancelByTarget: function(e) {
                  var t = this.findAnimationsByTarget(e);
                  return t.forEach((function(e) {
                    e.cancel()
                  })), t
                },
                findAnimationIndex: function(e) {
                  return this.indexOf(this.findAnimation(e))
                },
                findAnimation: function(e) {
                  return this.find((function(t) {
                    return t.cancel === e
                  }))
                },
                findAnimationsByTarget: function(e) {
                  return e ? this.filter((function(t) {
                    return t.target === e
                  })) : []
                }
              });
              var o = v.window.requestAnimationFrame || v.window.webkitRequestAnimationFrame || v.window.mozRequestAnimationFrame || v.window.oRequestAnimationFrame || v.window.msRequestAnimationFrame || function(e) {
                  return v.window.setTimeout(e, 1e3 / 60)
                },
                a = v.window.cancelAnimationFrame || v.window.clearTimeout;

              function s() {
                return o.apply(v.window, arguments)
              }
              v.util.animate = function(n) {
                n || (n = {});
                var o, a = !1,
                  l = function() {
                    var e = v.runningAnimations.indexOf(o);
                    return e > -1 && v.runningAnimations.splice(e, 1)[0]
                  };
                return o = e(t(n), {
                  cancel: function() {
                    return a = !0, l()
                  },
                  currentValue: "startValue" in n ? n.startValue : 0,
                  completionRate: 0,
                  durationRate: 0
                }), v.runningAnimations.push(o), s((function(e) {
                  var t, c = e || +new Date,
                    u = n.duration || 500,
                    h = c + u,
                    p = n.onChange || r,
                    d = n.abort || r,
                    f = n.onComplete || r,
                    g = n.easing || i,
                    m = "startValue" in n && n.startValue.length > 0,
                    v = "startValue" in n ? n.startValue : 0,
                    _ = "endValue" in n ? n.endValue : 100,
                    b = n.byValue || (m ? v.map((function(e, t) {
                      return _[t] - v[t]
                    })) : _ - v);
                  n.onStart && n.onStart(),
                    function e(n) {
                      var r = (t = n || +new Date) > h ? u : t - c,
                        i = r / u,
                        y = m ? v.map((function(e, t) {
                          return g(r, v[t], b[t], u)
                        })) : g(r, v, b, u),
                        w = m ? Math.abs((y[0] - v[0]) / b[0]) : Math.abs((y - v) / b);
                      if (o.currentValue = m ? y.slice() : y, o.completionRate = w, o.durationRate = i, !a) {
                        if (!d(y, w, i)) return t > h ? (o.currentValue = m ? _.slice() : _, o.completionRate = 1, o.durationRate = 1, p(m ? _.slice() : _, 1, 1), f(_, 1, 1), void l()) : (p(y, w, i), void s(e));
                        l()
                      }
                    }(c)
                })), o.cancel
              }, v.util.requestAnimFrame = s, v.util.cancelAnimFrame = function() {
                return a.apply(v.window, arguments)
              }, v.runningAnimations = n
            }(),
            function() {
              function e(e, t, n) {
                var r = "rgba(" + parseInt(e[0] + n * (t[0] - e[0]), 10) + "," + parseInt(e[1] + n * (t[1] - e[1]), 10) + "," + parseInt(e[2] + n * (t[2] - e[2]), 10);
                return r += "," + (e && t ? parseFloat(e[3] + n * (t[3] - e[3])) : 1), r += ")"
              }
              v.util.animateColor = function(t, n, r, i) {
                var o = new v.Color(t).getSource(),
                  a = new v.Color(n).getSource(),
                  s = i.onComplete,
                  l = i.onChange;
                return i = i || {}, v.util.animate(v.util.object.extend(i, {
                  duration: r || 500,
                  startValue: o,
                  endValue: a,
                  byValue: a,
                  easing: function(t, n, r, o) {
                    return e(n, r, i.colorEasing ? i.colorEasing(t, o) : 1 - Math.cos(t / o * (Math.PI / 2)))
                  },
                  onComplete: function(t, n, r) {
                    if (s) return s(e(a, a, 0), n, r)
                  },
                  onChange: function(t, n, r) {
                    if (l) {
                      if (Array.isArray(t)) return l(e(t, t, 0), n, r);
                      l(t, n, r)
                    }
                  }
                }))
              }
            }(),
            function() {
              function e(e, t, n, r) {
                return e < Math.abs(t) ? (e = t, r = n / 4) : r = 0 === t && 0 === e ? n / (2 * Math.PI) * Math.asin(1) : n / (2 * Math.PI) * Math.asin(t / e), {
                  a: e,
                  c: t,
                  p: n,
                  s: r
                }
              }

              function t(e, t, n) {
                return e.a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t * n - e.s) * (2 * Math.PI) / e.p)
              }

              function n(e, t, n, i) {
                return n - r(i - e, 0, n, i) + t
              }

              function r(e, t, n, r) {
                return (e /= r) < 1 / 2.75 ? n * (7.5625 * e * e) + t : e < 2 / 2.75 ? n * (7.5625 * (e -= 1.5 / 2.75) * e + .75) + t : e < 2.5 / 2.75 ? n * (7.5625 * (e -= 2.25 / 2.75) * e + .9375) + t : n * (7.5625 * (e -= 2.625 / 2.75) * e +
                  .984375) + t
              }
              v.util.ease = {
                easeInQuad: function(e, t, n, r) {
                  return n * (e /= r) * e + t
                },
                easeOutQuad: function(e, t, n, r) {
                  return -n * (e /= r) * (e - 2) + t
                },
                easeInOutQuad: function(e, t, n, r) {
                  return (e /= r / 2) < 1 ? n / 2 * e * e + t : -n / 2 * (--e * (e - 2) - 1) + t
                },
                easeInCubic: function(e, t, n, r) {
                  return n * (e /= r) * e * e + t
                },
                easeOutCubic: function(e, t, n, r) {
                  return n * ((e = e / r - 1) * e * e + 1) + t
                },
                easeInOutCubic: function(e, t, n, r) {
                  return (e /= r / 2) < 1 ? n / 2 * e * e * e + t : n / 2 * ((e -= 2) * e * e + 2) + t
                },
                easeInQuart: function(e, t, n, r) {
                  return n * (e /= r) * e * e * e + t
                },
                easeOutQuart: function(e, t, n, r) {
                  return -n * ((e = e / r - 1) * e * e * e - 1) + t
                },
                easeInOutQuart: function(e, t, n, r) {
                  return (e /= r / 2) < 1 ? n / 2 * e * e * e * e + t : -n / 2 * ((e -= 2) * e * e * e - 2) + t
                },
                easeInQuint: function(e, t, n, r) {
                  return n * (e /= r) * e * e * e * e + t
                },
                easeOutQuint: function(e, t, n, r) {
                  return n * ((e = e / r - 1) * e * e * e * e + 1) + t
                },
                easeInOutQuint: function(e, t, n, r) {
                  return (e /= r / 2) < 1 ? n / 2 * e * e * e * e * e + t : n / 2 * ((e -= 2) * e * e * e * e + 2) + t
                },
                easeInSine: function(e, t, n, r) {
                  return -n * Math.cos(e / r * (Math.PI / 2)) + n + t
                },
                easeOutSine: function(e, t, n, r) {
                  return n * Math.sin(e / r * (Math.PI / 2)) + t
                },
                easeInOutSine: function(e, t, n, r) {
                  return -n / 2 * (Math.cos(Math.PI * e / r) - 1) + t
                },
                easeInExpo: function(e, t, n, r) {
                  return 0 === e ? t : n * Math.pow(2, 10 * (e / r - 1)) + t
                },
                easeOutExpo: function(e, t, n, r) {
                  return e === r ? t + n : n * (1 - Math.pow(2, -10 * e / r)) + t
                },
                easeInOutExpo: function(e, t, n, r) {
                  return 0 === e ? t : e === r ? t + n : (e /= r / 2) < 1 ? n / 2 * Math.pow(2, 10 * (e - 1)) + t : n / 2 * (2 - Math.pow(2, -10 * --e)) + t
                },
                easeInCirc: function(e, t, n, r) {
                  return -n * (Math.sqrt(1 - (e /= r) * e) - 1) + t
                },
                easeOutCirc: function(e, t, n, r) {
                  return n * Math.sqrt(1 - (e = e / r - 1) * e) + t
                },
                easeInOutCirc: function(e, t, n, r) {
                  return (e /= r / 2) < 1 ? -n / 2 * (Math.sqrt(1 - e * e) - 1) + t : n / 2 * (Math.sqrt(1 - (e -= 2) * e) + 1) + t
                },
                easeInElastic: function(n, r, i, o) {
                  var a = 0;
                  return 0 === n ? r : 1 === (n /= o) ? r + i : (a || (a = .3 * o), -t(e(i, i, a, 1.70158), n, o) + r)
                },
                easeOutElastic: function(t, n, r, i) {
                  var o = 0;
                  if (0 === t) return n;
                  if (1 === (t /= i)) return n + r;
                  o || (o = .3 * i);
                  var a = e(r, r, o, 1.70158);
                  return a.a * Math.pow(2, -10 * t) * Math.sin((t * i - a.s) * (2 * Math.PI) / a.p) + a.c + n
                },
                easeInOutElastic: function(n, r, i, o) {
                  var a = 0;
                  if (0 === n) return r;
                  if (2 === (n /= o / 2)) return r + i;
                  a || (a = o * (.3 * 1.5));
                  var s = e(i, i, a, 1.70158);
                  return n < 1 ? -.5 * t(s, n, o) + r : s.a * Math.pow(2, -10 * (n -= 1)) * Math.sin((n * o - s.s) * (2 * Math.PI) / s.p) * .5 + s.c + r
                },
                easeInBack: function(e, t, n, r, i) {
                  return void 0 === i && (i = 1.70158), n * (e /= r) * e * ((i + 1) * e - i) + t
                },
                easeOutBack: function(e, t, n, r, i) {
                  return void 0 === i && (i = 1.70158), n * ((e = e / r - 1) * e * ((i + 1) * e + i) + 1) + t
                },
                easeInOutBack: function(e, t, n, r, i) {
                  return void 0 === i && (i = 1.70158), (e /= r / 2) < 1 ? n / 2 * (e * e * ((1 + (i *= 1.525)) * e - i)) + t : n / 2 * ((e -= 2) * e * ((1 + (i *= 1.525)) * e + i) + 2) + t
                },
                easeInBounce: n,
                easeOutBounce: r,
                easeInOutBounce: function(e, t, i, o) {
                  return e < o / 2 ? .5 * n(2 * e, 0, i, o) + t : .5 * r(2 * e - o, 0, i, o) + .5 * i + t
                }
              }
            }(),
            function(e) {
              var t = e.fabric || (e.fabric = {}),
                n = t.util.object.extend,
                r = t.util.object.clone,
                i = t.util.toFixed,
                o = t.util.parseUnit,
                a = t.util.multiplyTransformMatrices,
                s = {
                  cx: "left",
                  x: "left",
                  r: "radius",
                  cy: "top",
                  y: "top",
                  display: "visible",
                  visibility: "visible",
                  transform: "transformMatrix",
                  "fill-opacity": "fillOpacity",
                  "fill-rule": "fillRule",
                  "font-family": "fontFamily",
                  "font-size": "fontSize",
                  "font-style": "fontStyle",
                  "font-weight": "fontWeight",
                  "letter-spacing": "charSpacing",
                  "paint-order": "paintFirst",
                  "stroke-dasharray": "strokeDashArray",
                  "stroke-dashoffset": "strokeDashOffset",
                  "stroke-linecap": "strokeLineCap",
                  "stroke-linejoin": "strokeLineJoin",
                  "stroke-miterlimit": "strokeMiterLimit",
                  "stroke-opacity": "strokeOpacity",
                  "stroke-width": "strokeWidth",
                  "text-decoration": "textDecoration",
                  "text-anchor": "textAnchor",
                  opacity: "opacity",
                  "clip-path": "clipPath",
                  "clip-rule": "clipRule",
                  "vector-effect": "strokeUniform",
                  "image-rendering": "imageSmoothing"
                },
                l = {
                  stroke: "strokeOpacity",
                  fill: "fillOpacity"
                },
                c = "font-size",
                u = "clip-path";

              function h(e) {
                return e in s ? s[e] : e
              }

              function p(e, n, r, i) {
                var s, l = Array.isArray(n);
                if ("fill" !== e && "stroke" !== e || "none" !== n) {
                  if ("strokeUniform" === e) return "non-scaling-stroke" === n;
                  if ("strokeDashArray" === e) n = "none" === n ? null : n.replace(/,/g, " ").split(/\s+/).map(parseFloat);
                  else if ("transformMatrix" === e) n = r && r.transformMatrix ? a(r.transformMatrix, t.parseTransformAttribute(n)) : t.parseTransformAttribute(n);
                  else if ("visible" === e) n = "none" !== n && "hidden" !== n, r && !1 === r.visible && (n = !1);
                  else if ("opacity" === e) n = parseFloat(n), r && void 0 !== r.opacity && (n *= r.opacity);
                  else if ("textAnchor" === e) n = "start" === n ? "left" : "end" === n ? "right" : "center";
                  else if ("charSpacing" === e) s = o(n, i) / i * 1e3;
                  else if ("paintFirst" === e) {
                    var c = n.indexOf("fill"),
                      u = n.indexOf("stroke");
                    n = "fill";
                    (c > -1 && u > -1 && u < c || -1 === c && u > -1) && (n = "stroke")
                  } else {
                    if ("href" === e || "xlink:href" === e || "font" === e) return n;
                    if ("imageSmoothing" === e) return "optimizeQuality" === n;
                    s = l ? n.map(o) : o(n, i)
                  }
                } else n = "";
                return !l && isNaN(s) ? n : s
              }

              function d(e) {
                return new RegExp("^(" + e.join("|") + ")\\b", "i")
              }

              function f(e, t) {
                var n, r, i, o, a = [];
                for (i = 0, o = t.length; i < o; i++) n = t[i], r = e.getElementsByTagName(n), a = a.concat(Array.prototype.slice.call(r));
                return a
              }

              function g(e, t) {
                var n, r = !0;
                return (n = m(e, t.pop())) && t.length && (r = function(e, t) {
                  var n, r = !0;
                  for (; e.parentNode && 1 === e.parentNode.nodeType && t.length;) r && (n = t.pop()), r = m(e = e.parentNode, n);
                  return 0 === t.length
                }(e, t)), n && r && 0 === t.length
              }

              function m(e, t) {
                var n, r, i = e.nodeName,
                  o = e.getAttribute("class"),
                  a = e.getAttribute("id");
                if (n = new RegExp("^" + i, "i"), t = t.replace(n, ""), a && t.length && (n = new RegExp("#" + a + "(?![a-zA-Z\\-]+)", "i"), t = t.replace(n, "")), o && t.length)
                  for (r = (o = o.split(" ")).length; r--;) n = new RegExp("\\." + o[r] + "(?![a-zA-Z\\-]+)", "i"), t = t.replace(n, "");
                return 0 === t.length
              }

              function v(e, t) {
                var n;
                if (e.getElementById && (n = e.getElementById(t)), n) return n;
                var r, i, o, a = e.getElementsByTagName("*");
                for (i = 0, o = a.length; i < o; i++)
                  if (t === (r = a[i]).getAttribute("id")) return r
              }
              t.svgValidTagNamesRegEx = d(["path", "circle", "polygon", "polyline", "ellipse", "rect", "line", "image", "text"]), t.svgViewBoxElementsRegEx = d(["symbol", "image", "marker", "pattern", "view", "svg"]), t.svgInvalidAncestorsRegEx =
                d(["pattern", "defs", "symbol", "metadata", "clipPath", "mask", "desc"]), t.svgValidParentsRegEx = d(["symbol", "g", "a", "svg", "clipPath", "defs"]), t.cssRules = {}, t.gradientDefs = {}, t.clipPaths = {}, t
                .parseTransformAttribute = function() {
                  function e(e, n, r) {
                    e[r] = Math.tan(t.util.degreesToRadians(n[0]))
                  }
                  var n = t.iMatrix,
                    r = t.reNum,
                    i = t.commaWsp,
                    o = "(?:" + ("(?:(matrix)\\s*\\(\\s*(" + r + ")" + i + "(" + r + ")" + i + "(" + r + ")" + i + "(" + r + ")" + i + "(" + r + ")" + i + "(" + r + ")\\s*\\))") + "|" + ("(?:(translate)\\s*\\(\\s*(" + r + ")(?:" + i + "(" + r +
                      "))?\\s*\\))") + "|" + ("(?:(scale)\\s*\\(\\s*(" + r + ")(?:" + i + "(" + r + "))?\\s*\\))") + "|" + ("(?:(rotate)\\s*\\(\\s*(" + r + ")(?:" + i + "(" + r + ")" + i + "(" + r + "))?\\s*\\))") + "|" + (
                      "(?:(skewX)\\s*\\(\\s*(" + r + ")\\s*\\))") + "|" + ("(?:(skewY)\\s*\\(\\s*(" + r + ")\\s*\\))") + ")",
                    a = new RegExp("^\\s*(?:" + ("(?:" + o + "(?:" + i + "*" + o + ")*)") + "?)\\s*$"),
                    s = new RegExp(o, "g");
                  return function(r) {
                    var i = n.concat(),
                      l = [];
                    if (!r || r && !a.test(r)) return i;
                    r.replace(s, (function(r) {
                      var a = new RegExp(o).exec(r).filter((function(e) {
                          return !!e
                        })),
                        s = a[1],
                        c = a.slice(2).map(parseFloat);
                      switch (s) {
                        case "translate":
                          ! function(e, t) {
                            e[4] = t[0], 2 === t.length && (e[5] = t[1])
                          }(i, c);
                          break;
                        case "rotate":
                          c[0] = t.util.degreesToRadians(c[0]),
                            function(e, n) {
                              var r = t.util.cos(n[0]),
                                i = t.util.sin(n[0]),
                                o = 0,
                                a = 0;
                              3 === n.length && (o = n[1], a = n[2]), e[0] = r, e[1] = i, e[2] = -i, e[3] = r, e[4] = o - (r * o - i * a), e[5] = a - (i * o + r * a)
                            }(i, c);
                          break;
                        case "scale":
                          ! function(e, t) {
                            var n = t[0],
                              r = 2 === t.length ? t[1] : t[0];
                            e[0] = n, e[3] = r
                          }(i, c);
                          break;
                        case "skewX":
                          e(i, c, 2);
                          break;
                        case "skewY":
                          e(i, c, 1);
                          break;
                        case "matrix":
                          i = c
                      }
                      l.push(i.concat()), i = n.concat()
                    }));
                    for (var c = l[0]; l.length > 1;) l.shift(), c = t.util.multiplyTransformMatrices(c, l[0]);
                    return c
                  }
                }();
              var _ = new RegExp("^\\s*(" + t.reNum + "+)\\s*,?\\s*(" + t.reNum + "+)\\s*,?\\s*(" + t.reNum + "+)\\s*,?\\s*(" + t.reNum + "+)\\s*$");

              function b(e) {
                if (!t.svgViewBoxElementsRegEx.test(e.nodeName)) return {};
                var n, r, i, a, s, l, c = e.getAttribute("viewBox"),
                  u = 1,
                  h = 1,
                  p = e.getAttribute("width"),
                  d = e.getAttribute("height"),
                  f = e.getAttribute("x") || 0,
                  g = e.getAttribute("y") || 0,
                  m = e.getAttribute("preserveAspectRatio") || "",
                  v = !c || !(c = c.match(_)),
                  b = !p || !d || "100%" === p || "100%" === d,
                  y = v && b,
                  w = {},
                  x = "",
                  k = 0,
                  C = 0;
                if (w.width = 0, w.height = 0, w.toBeParsed = y, v && (f || g) && e.parentNode && "#document" !== e.parentNode.nodeName && (x = " translate(" + o(f) + " " + o(g) + ") ", s = (e.getAttribute("transform") || "") + x, e.setAttribute(
                    "transform", s), e.removeAttribute("x"), e.removeAttribute("y")), y) return w;
                if (v) return w.width = o(p), w.height = o(d), w;
                if (n = -parseFloat(c[1]), r = -parseFloat(c[2]), i = parseFloat(c[3]), a = parseFloat(c[4]), w.minX = n, w.minY = r, w.viewBoxWidth = i, w.viewBoxHeight = a, b ? (w.width = i, w.height = a) : (w.width = o(p), w.height = o(d), u =
                    w.width / i, h = w.height / a), "none" !== (m = t.util.parsePreserveAspectRatioAttribute(m)).alignX && ("meet" === m.meetOrSlice && (h = u = u > h ? h : u), "slice" === m.meetOrSlice && (h = u = u > h ? u : h), k = w.width -
                    i * u, C = w.height - a * u, "Mid" === m.alignX && (k /= 2), "Mid" === m.alignY && (C /= 2), "Min" === m.alignX && (k = 0), "Min" === m.alignY && (C = 0)), 1 === u && 1 === h && 0 === n && 0 === r && 0 === f && 0 === g)
                return w;
                if ((f || g) && "#document" !== e.parentNode.nodeName && (x = " translate(" + o(f) + " " + o(g) + ") "), s = x + " matrix(" + u + " 0 0 " + h + " " + (n * u + k) + " " + (r * h + C) + ") ", "svg" === e.nodeName) {
                  for (l = e.ownerDocument.createElementNS(t.svgNS, "g"); e.firstChild;) l.appendChild(e.firstChild);
                  e.appendChild(l)
                } else(l = e).removeAttribute("x"), l.removeAttribute("y"), s = l.getAttribute("transform") + s;
                return l.setAttribute("transform", s), w
              }

              function y(e, t) {
                var n = "xlink:href",
                  r = v(e, t.getAttribute(n).slice(1));
                if (r && r.getAttribute(n) && y(e, r), ["gradientTransform", "x1", "x2", "y1", "y2", "gradientUnits", "cx", "cy", "r", "fx", "fy"].forEach((function(e) {
                    r && !t.hasAttribute(e) && r.hasAttribute(e) && t.setAttribute(e, r.getAttribute(e))
                  })), !t.children.length)
                  for (var i = r.cloneNode(!0); i.firstChild;) t.appendChild(i.firstChild);
                t.removeAttribute(n)
              }
              t.parseSVGDocument = function(e, n, i, o) {
                if (e) {
                  ! function(e) {
                    for (var n = f(e, ["use", "svg:use"]), r = 0; n.length && r < n.length;) {
                      var i = n[r],
                        o = i.getAttribute("xlink:href") || i.getAttribute("href");
                      if (null === o) return;
                      var a, s, l, c, u = o.slice(1),
                        h = i.getAttribute("x") || 0,
                        p = i.getAttribute("y") || 0,
                        d = v(e, u).cloneNode(!0),
                        g = (d.getAttribute("transform") || "") + " translate(" + h + ", " + p + ")",
                        m = n.length,
                        _ = t.svgNS;
                      if (b(d), /^svg$/i.test(d.nodeName)) {
                        var y = d.ownerDocument.createElementNS(_, "g");
                        for (s = 0, c = (l = d.attributes).length; s < c; s++) a = l.item(s), y.setAttributeNS(_, a.nodeName, a.nodeValue);
                        for (; d.firstChild;) y.appendChild(d.firstChild);
                        d = y
                      }
                      for (s = 0, c = (l = i.attributes).length; s < c; s++) "x" !== (a = l.item(s)).nodeName && "y" !== a.nodeName && "xlink:href" !== a.nodeName && "href" !== a.nodeName && ("transform" === a.nodeName ? g = a.nodeValue + " " +
                        g : d.setAttribute(a.nodeName, a.nodeValue));
                      d.setAttribute("transform", g), d.setAttribute("instantiated_by_use", "1"), d.removeAttribute("id"), i.parentNode.replaceChild(d, i), n.length === m && r++
                    }
                  }(e);
                  var a, s, l = t.Object.__uid++,
                    c = b(e),
                    u = t.util.toArray(e.getElementsByTagName("*"));
                  if (c.crossOrigin = o && o.crossOrigin, c.svgUid = l, 0 === u.length && t.isLikelyNode) {
                    var h = [];
                    for (a = 0, s = (u = e.selectNodes('//*[name(.)!="svg"]')).length; a < s; a++) h[a] = u[a];
                    u = h
                  }
                  var p = u.filter((function(e) {
                    return b(e), t.svgValidTagNamesRegEx.test(e.nodeName.replace("svg:", "")) && ! function(e, t) {
                      for (; e && (e = e.parentNode);)
                        if (e.nodeName && t.test(e.nodeName.replace("svg:", "")) && !e.getAttribute("instantiated_by_use")) return !0;
                      return !1
                    }(e, t.svgInvalidAncestorsRegEx)
                  }));
                  if (!p || p && !p.length) n && n([], {});
                  else {
                    var d = {};
                    u.filter((function(e) {
                      return "clipPath" === e.nodeName.replace("svg:", "")
                    })).forEach((function(e) {
                      var n = e.getAttribute("id");
                      d[n] = t.util.toArray(e.getElementsByTagName("*")).filter((function(e) {
                        return t.svgValidTagNamesRegEx.test(e.nodeName.replace("svg:", ""))
                      }))
                    })), t.gradientDefs[l] = t.getGradientDefs(e), t.cssRules[l] = t.getCSSRules(e), t.clipPaths[l] = d, t.parseElements(p, (function(e, r) {
                      n && (n(e, c, r, u), delete t.gradientDefs[l], delete t.cssRules[l], delete t.clipPaths[l])
                    }), r(c), i, o)
                  }
                }
              };
              var w = new RegExp("(normal|italic)?\\s*(normal|small-caps)?\\s*(normal|bold|bolder|lighter|100|200|300|400|500|600|700|800|900)?\\s*(" + t.reNum + "(?:px|cm|mm|em|pt|pc|in)*)(?:\\/(normal|" + t.reNum + "))?\\s+(.*)");
              n(t, {
                parseFontDeclaration: function(e, t) {
                  var n = e.match(w);
                  if (n) {
                    var r = n[1],
                      i = n[3],
                      a = n[4],
                      s = n[5],
                      l = n[6];
                    r && (t.fontStyle = r), i && (t.fontWeight = isNaN(parseFloat(i)) ? i : parseFloat(i)), a && (t.fontSize = o(a)), l && (t.fontFamily = l), s && (t.lineHeight = "normal" === s ? 1 : s)
                  }
                },
                getGradientDefs: function(e) {
                  var t, n = f(e, ["linearGradient", "radialGradient", "svg:linearGradient", "svg:radialGradient"]),
                    r = 0,
                    i = {};
                  for (r = n.length; r--;)(t = n[r]).getAttribute("xlink:href") && y(e, t), i[t.getAttribute("id")] = t;
                  return i
                },
                parseAttributes: function(e, r, a) {
                  if (e) {
                    var s, d, f, m = {};
                    void 0 === a && (a = e.getAttribute("svgUid")), e.parentNode && t.svgValidParentsRegEx.test(e.parentNode.nodeName) && (m = t.parseAttributes(e.parentNode, r, a));
                    var v = r.reduce((function(t, n) {
                        return (s = e.getAttribute(n)) && (t[n] = s), t
                      }), {}),
                      _ = n(function(e, n) {
                        var r = {};
                        for (var i in t.cssRules[n])
                          if (g(e, i.split(" ")))
                            for (var o in t.cssRules[n][i]) r[o] = t.cssRules[n][i][o];
                        return r
                      }(e, a), t.parseStyleAttribute(e));
                    v = n(v, _), _[u] && e.setAttribute(u, _[u]), d = f = m.fontSize || t.Text.DEFAULT_SVG_FONT_SIZE, v[c] && (v[c] = d = o(v[c], f));
                    var b, y, w = {};
                    for (var x in v) y = p(b = h(x), v[x], m, d), w[b] = y;
                    w && w.font && t.parseFontDeclaration(w.font, w);
                    var k = n(m, w);
                    return t.svgValidParentsRegEx.test(e.nodeName) ? k : function(e) {
                      for (var n in l)
                        if (void 0 !== e[l[n]] && "" !== e[n]) {
                          if (void 0 === e[n]) {
                            if (!t.Object.prototype[n]) continue;
                            e[n] = t.Object.prototype[n]
                          }
                          if (0 !== e[n].indexOf("url(")) {
                            var r = new t.Color(e[n]);
                            e[n] = r.setAlpha(i(r.getAlpha() * e[l[n]], 2)).toRgba()
                          }
                        } return e
                    }(k)
                  }
                },
                parseElements: function(e, n, r, i, o) {
                  new t.ElementsParser(e, n, r, i, o).parse()
                },
                parseStyleAttribute: function(e) {
                  var t = {},
                    n = e.getAttribute("style");
                  return n ? ("string" == typeof n ? function(e, t) {
                    var n, r;
                    e.replace(/;\s*$/, "").split(";").forEach((function(e) {
                      var i = e.split(":");
                      n = i[0].trim().toLowerCase(), r = i[1].trim(), t[n] = r
                    }))
                  }(n, t) : function(e, t) {
                    var n, r;
                    for (var i in e) void 0 !== e[i] && (n = i.toLowerCase(), r = e[i], t[n] = r)
                  }(n, t), t) : t
                },
                parsePointsAttribute: function(e) {
                  if (!e) return null;
                  var t, n, r = [];
                  for (t = 0, n = (e = (e = e.replace(/,/g, " ").trim()).split(/\s+/)).length; t < n; t += 2) r.push({
                    x: parseFloat(e[t]),
                    y: parseFloat(e[t + 1])
                  });
                  return r
                },
                getCSSRules: function(e) {
                  var n, r, i = e.getElementsByTagName("style"),
                    o = {};
                  for (n = 0, r = i.length; n < r; n++) {
                    var a = i[n].textContent;
                    "" !== (a = a.replace(/\/\*[\s\S]*?\*\//g, "")).trim() && a.split("}").filter((function(e) {
                      return e.trim()
                    })).forEach((function(e) {
                      var i = e.split("{"),
                        a = {},
                        s = i[1].trim().split(";").filter((function(e) {
                          return e.trim()
                        }));
                      for (n = 0, r = s.length; n < r; n++) {
                        var l = s[n].split(":"),
                          c = l[0].trim(),
                          u = l[1].trim();
                        a[c] = u
                      }(e = i[0].trim()).split(",").forEach((function(e) {
                        "" !== (e = e.replace(/^svg/i, "").trim()) && (o[e] ? t.util.object.extend(o[e], a) : o[e] = t.util.object.clone(a))
                      }))
                    }))
                  }
                  return o
                },
                loadSVGFromURL: function(e, n, r, i) {
                  e = e.replace(/^\n\s*/, "").trim(), new t.util.request(e, {
                    method: "get",
                    onComplete: function(e) {
                      var o = e.responseXML;
                      if (!o || !o.documentElement) return n && n(null), !1;
                      t.parseSVGDocument(o.documentElement, (function(e, t, r, i) {
                        n && n(e, t, r, i)
                      }), r, i)
                    }
                  })
                },
                loadSVGFromString: function(e, n, r, i) {
                  var o = (new t.window.DOMParser).parseFromString(e.trim(), "text/xml");
                  t.parseSVGDocument(o.documentElement, (function(e, t, r, i) {
                    n(e, t, r, i)
                  }), r, i)
                }
              })
            }(e), v.ElementsParser = function(e, t, n, r, i, o) {
              this.elements = e, this.callback = t, this.options = n, this.reviver = r, this.svgUid = n && n.svgUid || 0, this.parsingOptions = i, this.regexUrl = /^url\(['"]?#([^'"]+)['"]?\)/g, this.doc = o
            }, (h = v.ElementsParser.prototype).parse = function() {
              this.instances = new Array(this.elements.length), this.numElements = this.elements.length, this.createObjects()
            }, h.createObjects = function() {
              var e = this;
              this.elements.forEach((function(t, n) {
                t.setAttribute("svgUid", e.svgUid), e.createObject(t, n)
              }))
            }, h.findTag = function(e) {
              return v[v.util.string.capitalize(e.tagName.replace("svg:", ""))]
            }, h.createObject = function(e, t) {
              var n = this.findTag(e);
              if (n && n.fromElement) try {
                n.fromElement(e, this.createCallback(t, e), this.options)
              } catch (e) {
                v.log(e)
              } else this.checkIfDone()
            }, h.createCallback = function(e, t) {
              var n = this;
              return function(r) {
                var i;
                n.resolveGradient(r, t, "fill"), n.resolveGradient(r, t, "stroke"), r instanceof v.Image && r._originalElement && (i = r.parsePreserveAspectRatioAttribute(t)), r._removeTransformMatrix(i), n.resolveClipPath(r, t), n.reviver && n
                  .reviver(t, r), n.instances[e] = r, n.checkIfDone()
              }
            }, h.extractPropertyDefinition = function(e, t, n) {
              var r = e[t],
                i = this.regexUrl;
              if (i.test(r)) {
                i.lastIndex = 0;
                var o = i.exec(r)[1];
                return i.lastIndex = 0, v[n][this.svgUid][o]
              }
            }, h.resolveGradient = function(e, t, n) {
              var r = this.extractPropertyDefinition(e, n, "gradientDefs");
              if (r) {
                var i = t.getAttribute(n + "-opacity"),
                  o = v.Gradient.fromElement(r, e, i, this.options);
                e.set(n, o)
              }
            }, h.createClipPathCallback = function(e, t) {
              return function(e) {
                e._removeTransformMatrix(), e.fillRule = e.clipRule, t.push(e)
              }
            }, h.resolveClipPath = function(e, t) {
              var n, r, i, o, a = this.extractPropertyDefinition(e, "clipPath", "clipPaths");
              if (a) {
                i = [], r = v.util.invertTransform(e.calcTransformMatrix());
                for (var s = a[0].parentNode, l = t; l.parentNode && l.getAttribute("clip-path") !== e.clipPath;) l = l.parentNode;
                l.parentNode.appendChild(s);
                for (var c = 0; c < a.length; c++) n = a[c], this.findTag(n).fromElement(n, this.createClipPathCallback(e, i), this.options);
                a = 1 === i.length ? i[0] : new v.Group(i), o = v.util.multiplyTransformMatrices(r, a.calcTransformMatrix()), a.clipPath && this.resolveClipPath(a, l);
                var u = v.util.qrDecompose(o);
                a.flipX = !1, a.flipY = !1, a.set("scaleX", u.scaleX), a.set("scaleY", u.scaleY), a.angle = u.angle, a.skewX = u.skewX, a.skewY = 0, a.setPositionByOrigin({
                  x: u.translateX,
                  y: u.translateY
                }, "center", "center"), e.clipPath = a
              } else delete e.clipPath
            }, h.checkIfDone = function() {
              0 == --this.numElements && (this.instances = this.instances.filter((function(e) {
                return null != e
              })), this.callback(this.instances, this.elements))
            },
            function(e) {
              var t = e.fabric || (e.fabric = {});

              function n(e, t) {
                this.x = e, this.y = t
              }
              t.Point ? t.warn("fabric.Point is already defined") : (t.Point = n, n.prototype = {
                type: "point",
                constructor: n,
                add: function(e) {
                  return new n(this.x + e.x, this.y + e.y)
                },
                addEquals: function(e) {
                  return this.x += e.x, this.y += e.y, this
                },
                scalarAdd: function(e) {
                  return new n(this.x + e, this.y + e)
                },
                scalarAddEquals: function(e) {
                  return this.x += e, this.y += e, this
                },
                subtract: function(e) {
                  return new n(this.x - e.x, this.y - e.y)
                },
                subtractEquals: function(e) {
                  return this.x -= e.x, this.y -= e.y, this
                },
                scalarSubtract: function(e) {
                  return new n(this.x - e, this.y - e)
                },
                scalarSubtractEquals: function(e) {
                  return this.x -= e, this.y -= e, this
                },
                multiply: function(e) {
                  return new n(this.x * e, this.y * e)
                },
                multiplyEquals: function(e) {
                  return this.x *= e, this.y *= e, this
                },
                divide: function(e) {
                  return new n(this.x / e, this.y / e)
                },
                divideEquals: function(e) {
                  return this.x /= e, this.y /= e, this
                },
                eq: function(e) {
                  return this.x === e.x && this.y === e.y
                },
                lt: function(e) {
                  return this.x < e.x && this.y < e.y
                },
                lte: function(e) {
                  return this.x <= e.x && this.y <= e.y
                },
                gt: function(e) {
                  return this.x > e.x && this.y > e.y
                },
                gte: function(e) {
                  return this.x >= e.x && this.y >= e.y
                },
                lerp: function(e, t) {
                  return void 0 === t && (t = .5), t = Math.max(Math.min(1, t), 0), new n(this.x + (e.x - this.x) * t, this.y + (e.y - this.y) * t)
                },
                distanceFrom: function(e) {
                  var t = this.x - e.x,
                    n = this.y - e.y;
                  return Math.sqrt(t * t + n * n)
                },
                midPointFrom: function(e) {
                  return this.lerp(e)
                },
                min: function(e) {
                  return new n(Math.min(this.x, e.x), Math.min(this.y, e.y))
                },
                max: function(e) {
                  return new n(Math.max(this.x, e.x), Math.max(this.y, e.y))
                },
                toString: function() {
                  return this.x + "," + this.y
                },
                setXY: function(e, t) {
                  return this.x = e, this.y = t, this
                },
                setX: function(e) {
                  return this.x = e, this
                },
                setY: function(e) {
                  return this.y = e, this
                },
                setFromPoint: function(e) {
                  return this.x = e.x, this.y = e.y, this
                },
                swap: function(e) {
                  var t = this.x,
                    n = this.y;
                  this.x = e.x, this.y = e.y, e.x = t, e.y = n
                },
                clone: function() {
                  return new n(this.x, this.y)
                }
              })
            }(e),
            function(e) {
              var t = e.fabric || (e.fabric = {});

              function n(e) {
                this.status = e, this.points = []
              }
              t.Intersection ? t.warn("fabric.Intersection is already defined") : (t.Intersection = n, t.Intersection.prototype = {
                constructor: n,
                appendPoint: function(e) {
                  return this.points.push(e), this
                },
                appendPoints: function(e) {
                  return this.points = this.points.concat(e), this
                }
              }, t.Intersection.intersectLineLine = function(e, r, i, o) {
                var a, s = (o.x - i.x) * (e.y - i.y) - (o.y - i.y) * (e.x - i.x),
                  l = (r.x - e.x) * (e.y - i.y) - (r.y - e.y) * (e.x - i.x),
                  c = (o.y - i.y) * (r.x - e.x) - (o.x - i.x) * (r.y - e.y);
                if (0 !== c) {
                  var u = s / c,
                    h = l / c;
                  0 <= u && u <= 1 && 0 <= h && h <= 1 ? (a = new n("Intersection")).appendPoint(new t.Point(e.x + u * (r.x - e.x), e.y + u * (r.y - e.y))) : a = new n
                } else a = new n(0 === s || 0 === l ? "Coincident" : "Parallel");
                return a
              }, t.Intersection.intersectLinePolygon = function(e, t, r) {
                var i, o, a, s, l = new n,
                  c = r.length;
                for (s = 0; s < c; s++) i = r[s], o = r[(s + 1) % c], a = n.intersectLineLine(e, t, i, o), l.appendPoints(a.points);
                return l.points.length > 0 && (l.status = "Intersection"), l
              }, t.Intersection.intersectPolygonPolygon = function(e, t) {
                var r, i = new n,
                  o = e.length;
                for (r = 0; r < o; r++) {
                  var a = e[r],
                    s = e[(r + 1) % o],
                    l = n.intersectLinePolygon(a, s, t);
                  i.appendPoints(l.points)
                }
                return i.points.length > 0 && (i.status = "Intersection"), i
              }, t.Intersection.intersectPolygonRectangle = function(e, r, i) {
                var o = r.min(i),
                  a = r.max(i),
                  s = new t.Point(a.x, o.y),
                  l = new t.Point(o.x, a.y),
                  c = n.intersectLinePolygon(o, s, e),
                  u = n.intersectLinePolygon(s, a, e),
                  h = n.intersectLinePolygon(a, l, e),
                  p = n.intersectLinePolygon(l, o, e),
                  d = new n;
                return d.appendPoints(c.points), d.appendPoints(u.points), d.appendPoints(h.points), d.appendPoints(p.points), d.points.length > 0 && (d.status = "Intersection"), d
              })
            }(e),
            function(e) {
              var t = e.fabric || (e.fabric = {});

              function n(e) {
                e ? this._tryParsingColor(e) : this.setSource([0, 0, 0, 1])
              }

              function r(e, t, n) {
                return n < 0 && (n += 1), n > 1 && (n -= 1), n < 1 / 6 ? e + 6 * (t - e) * n : n < .5 ? t : n < 2 / 3 ? e + (t - e) * (2 / 3 - n) * 6 : e
              }
              t.Color ? t.warn("fabric.Color is already defined.") : (t.Color = n, t.Color.prototype = {
                  _tryParsingColor: function(e) {
                    var t;
                    e in n.colorNameMap && (e = n.colorNameMap[e]), "transparent" === e && (t = [255, 255, 255, 0]), t || (t = n.sourceFromHex(e)), t || (t = n.sourceFromRgb(e)), t || (t = n.sourceFromHsl(e)), t || (t = [0, 0, 0, 1]), t &&
                      this.setSource(t)
                  },
                  _rgbToHsl: function(e, n, r) {
                    e /= 255, n /= 255, r /= 255;
                    var i, o, a, s = t.util.array.max([e, n, r]),
                      l = t.util.array.min([e, n, r]);
                    if (a = (s + l) / 2, s === l) i = o = 0;
                    else {
                      var c = s - l;
                      switch (o = a > .5 ? c / (2 - s - l) : c / (s + l), s) {
                        case e:
                          i = (n - r) / c + (n < r ? 6 : 0);
                          break;
                        case n:
                          i = (r - e) / c + 2;
                          break;
                        case r:
                          i = (e - n) / c + 4
                      }
                      i /= 6
                    }
                    return [Math.round(360 * i), Math.round(100 * o), Math.round(100 * a)]
                  },
                  getSource: function() {
                    return this._source
                  },
                  setSource: function(e) {
                    this._source = e
                  },
                  toRgb: function() {
                    var e = this.getSource();
                    return "rgb(" + e[0] + "," + e[1] + "," + e[2] + ")"
                  },
                  toRgba: function() {
                    var e = this.getSource();
                    return "rgba(" + e[0] + "," + e[1] + "," + e[2] + "," + e[3] + ")"
                  },
                  toHsl: function() {
                    var e = this.getSource(),
                      t = this._rgbToHsl(e[0], e[1], e[2]);
                    return "hsl(" + t[0] + "," + t[1] + "%," + t[2] + "%)"
                  },
                  toHsla: function() {
                    var e = this.getSource(),
                      t = this._rgbToHsl(e[0], e[1], e[2]);
                    return "hsla(" + t[0] + "," + t[1] + "%," + t[2] + "%," + e[3] + ")"
                  },
                  toHex: function() {
                    var e, t, n, r = this.getSource();
                    return e = 1 === (e = r[0].toString(16)).length ? "0" + e : e, t = 1 === (t = r[1].toString(16)).length ? "0" + t : t, n = 1 === (n = r[2].toString(16)).length ? "0" + n : n, e.toUpperCase() + t.toUpperCase() + n
                      .toUpperCase()
                  },
                  toHexa: function() {
                    var e, t = this.getSource();
                    return e = 1 === (e = (e = Math.round(255 * t[3])).toString(16)).length ? "0" + e : e, this.toHex() + e.toUpperCase()
                  },
                  getAlpha: function() {
                    return this.getSource()[3]
                  },
                  setAlpha: function(e) {
                    var t = this.getSource();
                    return t[3] = e, this.setSource(t), this
                  },
                  toGrayscale: function() {
                    var e = this.getSource(),
                      t = parseInt((.3 * e[0] + .59 * e[1] + .11 * e[2]).toFixed(0), 10),
                      n = e[3];
                    return this.setSource([t, t, t, n]), this
                  },
                  toBlackWhite: function(e) {
                    var t = this.getSource(),
                      n = (.3 * t[0] + .59 * t[1] + .11 * t[2]).toFixed(0),
                      r = t[3];
                    return e = e || 127, n = Number(n) < Number(e) ? 0 : 255, this.setSource([n, n, n, r]), this
                  },
                  overlayWith: function(e) {
                    e instanceof n || (e = new n(e));
                    var t, r = [],
                      i = this.getAlpha(),
                      o = this.getSource(),
                      a = e.getSource();
                    for (t = 0; t < 3; t++) r.push(Math.round(.5 * o[t] + .5 * a[t]));
                    return r[3] = i, this.setSource(r), this
                  }
                }, t.Color.reRGBa = /^rgba?\(\s*(\d{1,3}(?:\.\d+)?\%?)\s*,\s*(\d{1,3}(?:\.\d+)?\%?)\s*,\s*(\d{1,3}(?:\.\d+)?\%?)\s*(?:\s*,\s*((?:\d*\.?\d+)?)\s*)?\)$/i, t.Color.reHSLa =
                /^hsla?\(\s*(\d{1,3})\s*,\s*(\d{1,3}\%)\s*,\s*(\d{1,3}\%)\s*(?:\s*,\s*(\d+(?:\.\d+)?)\s*)?\)$/i, t.Color.reHex = /^#?([0-9a-f]{8}|[0-9a-f]{6}|[0-9a-f]{4}|[0-9a-f]{3})$/i, t.Color.colorNameMap = {
                  aliceblue: "#F0F8FF",
                  antiquewhite: "#FAEBD7",
                  aqua: "#00FFFF",
                  aquamarine: "#7FFFD4",
                  azure: "#F0FFFF",
                  beige: "#F5F5DC",
                  bisque: "#FFE4C4",
                  black: "#000000",
                  blanchedalmond: "#FFEBCD",
                  blue: "#0000FF",
                  blueviolet: "#8A2BE2",
                  brown: "#A52A2A",
                  burlywood: "#DEB887",
                  cadetblue: "#5F9EA0",
                  chartreuse: "#7FFF00",
                  chocolate: "#D2691E",
                  coral: "#FF7F50",
                  cornflowerblue: "#6495ED",
                  cornsilk: "#FFF8DC",
                  crimson: "#DC143C",
                  cyan: "#00FFFF",
                  darkblue: "#00008B",
                  darkcyan: "#008B8B",
                  darkgoldenrod: "#B8860B",
                  darkgray: "#A9A9A9",
                  darkgrey: "#A9A9A9",
                  darkgreen: "#006400",
                  darkkhaki: "#BDB76B",
                  darkmagenta: "#8B008B",
                  darkolivegreen: "#556B2F",
                  darkorange: "#FF8C00",
                  darkorchid: "#9932CC",
                  darkred: "#8B0000",
                  darksalmon: "#E9967A",
                  darkseagreen: "#8FBC8F",
                  darkslateblue: "#483D8B",
                  darkslategray: "#2F4F4F",
                  darkslategrey: "#2F4F4F",
                  darkturquoise: "#00CED1",
                  darkviolet: "#9400D3",
                  deeppink: "#FF1493",
                  deepskyblue: "#00BFFF",
                  dimgray: "#696969",
                  dimgrey: "#696969",
                  dodgerblue: "#1E90FF",
                  firebrick: "#B22222",
                  floralwhite: "#FFFAF0",
                  forestgreen: "#228B22",
                  fuchsia: "#FF00FF",
                  gainsboro: "#DCDCDC",
                  ghostwhite: "#F8F8FF",
                  gold: "#FFD700",
                  goldenrod: "#DAA520",
                  gray: "#808080",
                  grey: "#808080",
                  green: "#008000",
                  greenyellow: "#ADFF2F",
                  honeydew: "#F0FFF0",
                  hotpink: "#FF69B4",
                  indianred: "#CD5C5C",
                  indigo: "#4B0082",
                  ivory: "#FFFFF0",
                  khaki: "#F0E68C",
                  lavender: "#E6E6FA",
                  lavenderblush: "#FFF0F5",
                  lawngreen: "#7CFC00",
                  lemonchiffon: "#FFFACD",
                  lightblue: "#ADD8E6",
                  lightcoral: "#F08080",
                  lightcyan: "#E0FFFF",
                  lightgoldenrodyellow: "#FAFAD2",
                  lightgray: "#D3D3D3",
                  lightgrey: "#D3D3D3",
                  lightgreen: "#90EE90",
                  lightpink: "#FFB6C1",
                  lightsalmon: "#FFA07A",
                  lightseagreen: "#20B2AA",
                  lightskyblue: "#87CEFA",
                  lightslategray: "#778899",
                  lightslategrey: "#778899",
                  lightsteelblue: "#B0C4DE",
                  lightyellow: "#FFFFE0",
                  lime: "#00FF00",
                  limegreen: "#32CD32",
                  linen: "#FAF0E6",
                  magenta: "#FF00FF",
                  maroon: "#800000",
                  mediumaquamarine: "#66CDAA",
                  mediumblue: "#0000CD",
                  mediumorchid: "#BA55D3",
                  mediumpurple: "#9370DB",
                  mediumseagreen: "#3CB371",
                  mediumslateblue: "#7B68EE",
                  mediumspringgreen: "#00FA9A",
                  mediumturquoise: "#48D1CC",
                  mediumvioletred: "#C71585",
                  midnightblue: "#191970",
                  mintcream: "#F5FFFA",
                  mistyrose: "#FFE4E1",
                  moccasin: "#FFE4B5",
                  navajowhite: "#FFDEAD",
                  navy: "#000080",
                  oldlace: "#FDF5E6",
                  olive: "#808000",
                  olivedrab: "#6B8E23",
                  orange: "#FFA500",
                  orangered: "#FF4500",
                  orchid: "#DA70D6",
                  palegoldenrod: "#EEE8AA",
                  palegreen: "#98FB98",
                  paleturquoise: "#AFEEEE",
                  palevioletred: "#DB7093",
                  papayawhip: "#FFEFD5",
                  peachpuff: "#FFDAB9",
                  peru: "#CD853F",
                  pink: "#FFC0CB",
                  plum: "#DDA0DD",
                  powderblue: "#B0E0E6",
                  purple: "#800080",
                  rebeccapurple: "#663399",
                  red: "#FF0000",
                  rosybrown: "#BC8F8F",
                  royalblue: "#4169E1",
                  saddlebrown: "#8B4513",
                  salmon: "#FA8072",
                  sandybrown: "#F4A460",
                  seagreen: "#2E8B57",
                  seashell: "#FFF5EE",
                  sienna: "#A0522D",
                  silver: "#C0C0C0",
                  skyblue: "#87CEEB",
                  slateblue: "#6A5ACD",
                  slategray: "#708090",
                  slategrey: "#708090",
                  snow: "#FFFAFA",
                  springgreen: "#00FF7F",
                  steelblue: "#4682B4",
                  tan: "#D2B48C",
                  teal: "#008080",
                  thistle: "#D8BFD8",
                  tomato: "#FF6347",
                  turquoise: "#40E0D0",
                  violet: "#EE82EE",
                  wheat: "#F5DEB3",
                  white: "#FFFFFF",
                  whitesmoke: "#F5F5F5",
                  yellow: "#FFFF00",
                  yellowgreen: "#9ACD32"
                }, t.Color.fromRgb = function(e) {
                  return n.fromSource(n.sourceFromRgb(e))
                }, t.Color.sourceFromRgb = function(e) {
                  var t = e.match(n.reRGBa);
                  if (t) {
                    var r = parseInt(t[1], 10) / (/%$/.test(t[1]) ? 100 : 1) * (/%$/.test(t[1]) ? 255 : 1),
                      i = parseInt(t[2], 10) / (/%$/.test(t[2]) ? 100 : 1) * (/%$/.test(t[2]) ? 255 : 1),
                      o = parseInt(t[3], 10) / (/%$/.test(t[3]) ? 100 : 1) * (/%$/.test(t[3]) ? 255 : 1);
                    return [parseInt(r, 10), parseInt(i, 10), parseInt(o, 10), t[4] ? parseFloat(t[4]) : 1]
                  }
                }, t.Color.fromRgba = n.fromRgb, t.Color.fromHsl = function(e) {
                  return n.fromSource(n.sourceFromHsl(e))
                }, t.Color.sourceFromHsl = function(e) {
                  var t = e.match(n.reHSLa);
                  if (t) {
                    var i, o, a, s = (parseFloat(t[1]) % 360 + 360) % 360 / 360,
                      l = parseFloat(t[2]) / (/%$/.test(t[2]) ? 100 : 1),
                      c = parseFloat(t[3]) / (/%$/.test(t[3]) ? 100 : 1);
                    if (0 === l) i = o = a = c;
                    else {
                      var u = c <= .5 ? c * (l + 1) : c + l - c * l,
                        h = 2 * c - u;
                      i = r(h, u, s + 1 / 3), o = r(h, u, s), a = r(h, u, s - 1 / 3)
                    }
                    return [Math.round(255 * i), Math.round(255 * o), Math.round(255 * a), t[4] ? parseFloat(t[4]) : 1]
                  }
                }, t.Color.fromHsla = n.fromHsl, t.Color.fromHex = function(e) {
                  return n.fromSource(n.sourceFromHex(e))
                }, t.Color.sourceFromHex = function(e) {
                  if (e.match(n.reHex)) {
                    var t = e.slice(e.indexOf("#") + 1),
                      r = 3 === t.length || 4 === t.length,
                      i = 8 === t.length || 4 === t.length,
                      o = r ? t.charAt(0) + t.charAt(0) : t.substring(0, 2),
                      a = r ? t.charAt(1) + t.charAt(1) : t.substring(2, 4),
                      s = r ? t.charAt(2) + t.charAt(2) : t.substring(4, 6),
                      l = i ? r ? t.charAt(3) + t.charAt(3) : t.substring(6, 8) : "FF";
                    return [parseInt(o, 16), parseInt(a, 16), parseInt(s, 16), parseFloat((parseInt(l, 16) / 255).toFixed(2))]
                  }
                }, t.Color.fromSource = function(e) {
                  var t = new n;
                  return t.setSource(e), t
                })
            }(e),
            function(e) {
              var t = e.fabric || (e.fabric = {}),
                n = ["e", "se", "s", "sw", "w", "nw", "n", "ne", "e"],
                r = ["ns", "nesw", "ew", "nwse"],
                i = {},
                o = "left",
                a = "top",
                s = "right",
                l = "bottom",
                c = "center",
                u = {
                  top: l,
                  bottom: a,
                  left: s,
                  right: o,
                  center: c
                },
                h = t.util.radiansToDegrees,
                p = Math.sign || function(e) {
                  return (e > 0) - (e < 0) || +e
                };

              function d(e, t) {
                var n = e.angle + h(Math.atan2(t.y, t.x)) + 360;
                return Math.round(n % 360 / 45)
              }

              function f(e, n) {
                var r = n.transform.target,
                  i = r.canvas,
                  o = t.util.object.clone(n);
                o.target = r, i && i.fire("object:" + e, o), r.fire(e, n)
              }

              function g(e, t) {
                var n = t.canvas,
                  r = e[n.uniScaleKey];
                return n.uniformScaling && !r || !n.uniformScaling && r
              }

              function m(e) {
                return e.originX === c && e.originY === c
              }

              function v(e, t, n) {
                var r = e.lockScalingX,
                  i = e.lockScalingY;
                return !(!r || !i) || (!(t || !r && !i || !n) || (!(!r || "x" !== t) || !(!i || "y" !== t)))
              }

              function _(e, t, n, r) {
                return {
                  e: e,
                  transform: t,
                  pointer: {
                    x: n,
                    y: r
                  }
                }
              }

              function b(e) {
                return function(t, n, r, i) {
                  var o = n.target,
                    a = o.getCenterPoint(),
                    s = o.translateToOriginPoint(a, n.originX, n.originY),
                    l = e(t, n, r, i);
                  return o.setPositionByOrigin(s, n.originX, n.originY), l
                }
              }

              function y(e, t) {
                return function(n, r, i, o) {
                  var a = t(n, r, i, o);
                  return a && f(e, _(n, r, i, o)), a
                }
              }

              function w(e, n, r, i, o) {
                var a = e.target,
                  s = a.controls[e.corner],
                  l = a.canvas.getZoom(),
                  c = a.padding / l,
                  u = a.toLocalPoint(new t.Point(i, o), n, r);
                return u.x >= c && (u.x -= c), u.x <= -c && (u.x += c), u.y >= c && (u.y -= c), u.y <= c && (u.y += c), u.x -= s.offsetX, u.y -= s.offsetY, u
              }

              function x(e) {
                return e.flipX !== e.flipY
              }

              function k(e, t, n, r, i) {
                if (0 !== e[t]) {
                  var o = i / e._getTransformedDimensions()[r] * e[n];
                  e.set(n, o)
                }
              }

              function C(e, t, n, r) {
                var i, c = t.target,
                  u = c._getTransformedDimensions(0, c.skewY),
                  p = w(t, t.originX, t.originY, n, r),
                  d = Math.abs(2 * p.x) - u.x,
                  f = c.skewX;
                d < 2 ? i = 0 : (i = h(Math.atan2(d / c.scaleX, u.y / c.scaleY)), t.originX === o && t.originY === l && (i = -i), t.originX === s && t.originY === a && (i = -i), x(c) && (i = -i));
                var g = f !== i;
                if (g) {
                  var m = c._getTransformedDimensions().y;
                  c.set("skewX", i), k(c, "skewY", "scaleY", "y", m)
                }
                return g
              }

              function S(e, t, n, r) {
                var i, c = t.target,
                  u = c._getTransformedDimensions(c.skewX, 0),
                  p = w(t, t.originX, t.originY, n, r),
                  d = Math.abs(2 * p.y) - u.y,
                  f = c.skewY;
                d < 2 ? i = 0 : (i = h(Math.atan2(d / c.scaleY, u.x / c.scaleX)), t.originX === o && t.originY === l && (i = -i), t.originX === s && t.originY === a && (i = -i), x(c) && (i = -i));
                var g = f !== i;
                if (g) {
                  var m = c._getTransformedDimensions().x;
                  c.set("skewY", i), k(c, "skewX", "scaleX", "x", m)
                }
                return g
              }

              function E(e, t, n, r, i) {
                i = i || {};
                var o, a, s, l, c, h, d = t.target,
                  f = d.lockScalingX,
                  _ = d.lockScalingY,
                  b = i.by,
                  y = g(e, d),
                  x = v(d, b, y),
                  k = t.gestureScale;
                if (x) return !1;
                if (k) a = t.scaleX * k, s = t.scaleY * k;
                else {
                  if (o = w(t, t.originX, t.originY, n, r), c = "y" !== b ? p(o.x) : 1, h = "x" !== b ? p(o.y) : 1, t.signX || (t.signX = c), t.signY || (t.signY = h), d.lockScalingFlip && (t.signX !== c || t.signY !== h)) return !1;
                  if (l = d._getTransformedDimensions(), y && !b) {
                    var C = Math.abs(o.x) + Math.abs(o.y),
                      S = t.original,
                      E = C / (Math.abs(l.x * S.scaleX / d.scaleX) + Math.abs(l.y * S.scaleY / d.scaleY));
                    a = S.scaleX * E, s = S.scaleY * E
                  } else a = Math.abs(o.x * d.scaleX / l.x), s = Math.abs(o.y * d.scaleY / l.y);
                  m(t) && (a *= 2, s *= 2), t.signX !== c && "y" !== b && (t.originX = u[t.originX], a *= -1, t.signX = c), t.signY !== h && "x" !== b && (t.originY = u[t.originY], s *= -1, t.signY = h)
                }
                var T = d.scaleX,
                  O = d.scaleY;
                return b ? ("x" === b && d.set("scaleX", a), "y" === b && d.set("scaleY", s)) : (!f && d.set("scaleX", a), !_ && d.set("scaleY", s)), T !== d.scaleX || O !== d.scaleY
              }
              i.scaleCursorStyleHandler = function(e, t, r) {
                var i = g(e, r),
                  o = "";
                if (0 !== t.x && 0 === t.y ? o = "x" : 0 === t.x && 0 !== t.y && (o = "y"), v(r, o, i)) return "not-allowed";
                var a = d(r, t);
                return n[a] + "-resize"
              }, i.skewCursorStyleHandler = function(e, t, n) {
                var i = "not-allowed";
                if (0 !== t.x && n.lockSkewingY) return i;
                if (0 !== t.y && n.lockSkewingX) return i;
                var o = d(n, t) % 4;
                return r[o] + "-resize"
              }, i.scaleSkewCursorStyleHandler = function(e, t, n) {
                return e[n.canvas.altActionKey] ? i.skewCursorStyleHandler(e, t, n) : i.scaleCursorStyleHandler(e, t, n)
              }, i.rotationWithSnapping = y("rotating", b((function(e, t, n, r) {
                var i = t,
                  o = i.target,
                  a = o.translateToOriginPoint(o.getCenterPoint(), i.originX, i.originY);
                if (o.lockRotation) return !1;
                var s, l = Math.atan2(i.ey - a.y, i.ex - a.x),
                  c = Math.atan2(r - a.y, n - a.x),
                  u = h(c - l + i.theta);
                if (o.snapAngle > 0) {
                  var p = o.snapAngle,
                    d = o.snapThreshold || p,
                    f = Math.ceil(u / p) * p,
                    g = Math.floor(u / p) * p;
                  Math.abs(u - g) < d ? u = g : Math.abs(u - f) < d && (u = f)
                }
                return u < 0 && (u = 360 + u), u %= 360, s = o.angle !== u, o.angle = u, s
              }))), i.scalingEqually = y("scaling", b((function(e, t, n, r) {
                return E(e, t, n, r)
              }))), i.scalingX = y("scaling", b((function(e, t, n, r) {
                return E(e, t, n, r, {
                  by: "x"
                })
              }))), i.scalingY = y("scaling", b((function(e, t, n, r) {
                return E(e, t, n, r, {
                  by: "y"
                })
              }))), i.scalingYOrSkewingX = function(e, t, n, r) {
                return e[t.target.canvas.altActionKey] ? i.skewHandlerX(e, t, n, r) : i.scalingY(e, t, n, r)
              }, i.scalingXOrSkewingY = function(e, t, n, r) {
                return e[t.target.canvas.altActionKey] ? i.skewHandlerY(e, t, n, r) : i.scalingX(e, t, n, r)
              }, i.changeWidth = y("resizing", b((function(e, t, n, r) {
                var i = t.target,
                  o = w(t, t.originX, t.originY, n, r),
                  a = i.strokeWidth / (i.strokeUniform ? i.scaleX : 1),
                  s = m(t) ? 2 : 1,
                  l = i.width,
                  c = Math.abs(o.x * s / i.scaleX) - a;
                return i.set("width", Math.max(c, 0)), l !== c
              }))), i.skewHandlerX = function(e, t, n, r) {
                var i, l = t.target,
                  u = l.skewX,
                  h = t.originY;
                return !l.lockSkewingX && (0 === u ? i = w(t, c, c, n, r).x > 0 ? o : s : (u > 0 && (i = h === a ? o : s), u < 0 && (i = h === a ? s : o), x(l) && (i = i === o ? s : o)), t.originX = i, y("skewing", b(C))(e, t, n, r))
              }, i.skewHandlerY = function(e, t, n, r) {
                var i, s = t.target,
                  u = s.skewY,
                  h = t.originX;
                return !s.lockSkewingY && (0 === u ? i = w(t, c, c, n, r).y > 0 ? a : l : (u > 0 && (i = h === o ? a : l), u < 0 && (i = h === o ? l : a), x(s) && (i = i === a ? l : a)), t.originY = i, y("skewing", b(S))(e, t, n, r))
              }, i.dragHandler = function(e, t, n, r) {
                var i = t.target,
                  o = n - t.offsetX,
                  a = r - t.offsetY,
                  s = !i.get("lockMovementX") && i.left !== o,
                  l = !i.get("lockMovementY") && i.top !== a;
                return s && i.set("left", o), l && i.set("top", a), (s || l) && f("moving", _(e, t, n, r)), s || l
              }, i.scaleOrSkewActionName = function(e, t, n) {
                var r = e[n.canvas.altActionKey];
                return 0 === t.x ? r ? "skewX" : "scaleY" : 0 === t.y ? r ? "skewY" : "scaleX" : void 0
              }, i.rotationStyleHandler = function(e, t, n) {
                return n.lockRotation ? "not-allowed" : t.cursorStyle
              }, i.fireEvent = f, i.wrapWithFixedAnchor = b, i.wrapWithFireEvent = y, i.getLocalPoint = w, t.controlsUtils = i
            }(e),
            function(e) {
              var t = e.fabric || (e.fabric = {}),
                n = t.util.degreesToRadians,
                r = t.controlsUtils;
              r.renderCircleControl = function(e, t, n, r, i) {
                r = r || {};
                var o, a = this.sizeX || r.cornerSize || i.cornerSize,
                  s = this.sizeY || r.cornerSize || i.cornerSize,
                  l = void 0 !== r.transparentCorners ? r.transparentCorners : i.transparentCorners,
                  c = l ? "stroke" : "fill",
                  u = !l && (r.cornerStrokeColor || i.cornerStrokeColor),
                  h = t,
                  p = n;
                e.save(), e.fillStyle = r.cornerColor || i.cornerColor, e.strokeStyle = r.cornerStrokeColor || i.cornerStrokeColor, a > s ? (o = a, e.scale(1, s / a), p = n * a / s) : s > a ? (o = s, e.scale(a / s, 1), h = t * s / a) : o = a, e
                  .lineWidth = 1, e.beginPath(), e.arc(h, p, o / 2, 0, 2 * Math.PI, !1), e[c](), u && e.stroke(), e.restore()
              }, r.renderSquareControl = function(e, t, r, i, o) {
                i = i || {};
                var a = this.sizeX || i.cornerSize || o.cornerSize,
                  s = this.sizeY || i.cornerSize || o.cornerSize,
                  l = void 0 !== i.transparentCorners ? i.transparentCorners : o.transparentCorners,
                  c = l ? "stroke" : "fill",
                  u = !l && (i.cornerStrokeColor || o.cornerStrokeColor),
                  h = a / 2,
                  p = s / 2;
                e.save(), e.fillStyle = i.cornerColor || o.cornerColor, e.strokeStyle = i.cornerStrokeColor || o.cornerStrokeColor, e.lineWidth = 1, e.translate(t, r), e.rotate(n(o.angle)), e[c + "Rect"](-h, -p, a, s), u && e.strokeRect(-h, -p,
                  a, s), e.restore()
              }
            }(e),
            function(e) {
              var t = e.fabric || (e.fabric = {});
              t.Control = function(e) {
                for (var t in e) this[t] = e[t]
              }, t.Control.prototype = {
                visible: !0,
                actionName: "scale",
                angle: 0,
                x: 0,
                y: 0,
                offsetX: 0,
                offsetY: 0,
                sizeX: null,
                sizeY: null,
                touchSizeX: null,
                touchSizeY: null,
                cursorStyle: "crosshair",
                withConnection: !1,
                actionHandler: function() {},
                mouseDownHandler: function() {},
                mouseUpHandler: function() {},
                getActionHandler: function() {
                  return this.actionHandler
                },
                getMouseDownHandler: function() {
                  return this.mouseDownHandler
                },
                getMouseUpHandler: function() {
                  return this.mouseUpHandler
                },
                cursorStyleHandler: function(e, t) {
                  return t.cursorStyle
                },
                getActionName: function(e, t) {
                  return t.actionName
                },
                getVisibility: function(e, t) {
                  var n = e._controlsVisibility;
                  return n && void 0 !== n[t] ? n[t] : this.visible
                },
                setVisibility: function(e) {
                  this.visible = e
                },
                positionHandler: function(e, n) {
                  return t.util.transformPoint({
                    x: this.x * e.x + this.offsetX,
                    y: this.y * e.y + this.offsetY
                  }, n)
                },
                calcCornerCoords: function(e, n, r, i, o) {
                  var a, s, l, c, u = o ? this.touchSizeX : this.sizeX,
                    h = o ? this.touchSizeY : this.sizeY;
                  if (u && h && u !== h) {
                    var p = Math.atan2(h, u),
                      d = Math.sqrt(u * u + h * h) / 2,
                      f = p - t.util.degreesToRadians(e),
                      g = Math.PI / 2 - p - t.util.degreesToRadians(e);
                    a = d * t.util.cos(f), s = d * t.util.sin(f), l = d * t.util.cos(g), c = d * t.util.sin(g)
                  } else {
                    d = .7071067812 * (u && h ? u : n);
                    f = t.util.degreesToRadians(45 - e);
                    a = l = d * t.util.cos(f), s = c = d * t.util.sin(f)
                  }
                  return {
                    tl: {
                      x: r - c,
                      y: i - l
                    },
                    tr: {
                      x: r + a,
                      y: i - s
                    },
                    bl: {
                      x: r - a,
                      y: i + s
                    },
                    br: {
                      x: r + c,
                      y: i + l
                    }
                  }
                },
                render: function(e, n, r, i, o) {
                  if ("circle" === ((i = i || {}).cornerStyle || o.cornerStyle)) t.controlsUtils.renderCircleControl.call(this, e, n, r, i, o);
                  else t.controlsUtils.renderSquareControl.call(this, e, n, r, i, o)
                }
              }
            }(e),
            function() {
              function e(e, t) {
                var n, r, i, o, a = e.getAttribute("style"),
                  s = e.getAttribute("offset") || 0;
                if (s = (s = parseFloat(s) / (/%$/.test(s) ? 100 : 1)) < 0 ? 0 : s > 1 ? 1 : s, a) {
                  var l = a.split(/\s*;\s*/);
                  for ("" === l[l.length - 1] && l.pop(), o = l.length; o--;) {
                    var c = l[o].split(/\s*:\s*/),
                      u = c[0].trim(),
                      h = c[1].trim();
                    "stop-color" === u ? n = h : "stop-opacity" === u && (i = h)
                  }
                }
                return n || (n = e.getAttribute("stop-color") || "rgb(0,0,0)"), i || (i = e.getAttribute("stop-opacity")), r = (n = new v.Color(n)).getAlpha(), i = isNaN(parseFloat(i)) ? 1 : parseFloat(i), i *= r * t, {
                  offset: s,
                  color: n.toRgb(),
                  opacity: i
                }
              }
              var t = v.util.object.clone;
              v.Gradient = v.util.createClass({
                offsetX: 0,
                offsetY: 0,
                gradientTransform: null,
                gradientUnits: "pixels",
                type: "linear",
                initialize: function(e) {
                  e || (e = {}), e.coords || (e.coords = {});
                  var t, n = this;
                  Object.keys(e).forEach((function(t) {
                    n[t] = e[t]
                  })), this.id ? this.id += "_" + v.Object.__uid++ : this.id = v.Object.__uid++, t = {
                    x1: e.coords.x1 || 0,
                    y1: e.coords.y1 || 0,
                    x2: e.coords.x2 || 0,
                    y2: e.coords.y2 || 0
                  }, "radial" === this.type && (t.r1 = e.coords.r1 || 0, t.r2 = e.coords.r2 || 0), this.coords = t, this.colorStops = e.colorStops.slice()
                },
                addColorStop: function(e) {
                  for (var t in e) {
                    var n = new v.Color(e[t]);
                    this.colorStops.push({
                      offset: parseFloat(t),
                      color: n.toRgb(),
                      opacity: n.getAlpha()
                    })
                  }
                  return this
                },
                toObject: function(e) {
                  var t = {
                    type: this.type,
                    coords: this.coords,
                    colorStops: this.colorStops,
                    offsetX: this.offsetX,
                    offsetY: this.offsetY,
                    gradientUnits: this.gradientUnits,
                    gradientTransform: this.gradientTransform ? this.gradientTransform.concat() : this.gradientTransform
                  };
                  return v.util.populateWithProperties(this, t, e), t
                },
                toSVG: function(e, n) {
                  var r, i, o, a, s = t(this.coords, !0),
                    l = (n = n || {}, t(this.colorStops, !0)),
                    c = s.r1 > s.r2,
                    u = this.gradientTransform ? this.gradientTransform.concat() : v.iMatrix.concat(),
                    h = -this.offsetX,
                    p = -this.offsetY,
                    d = !!n.additionalTransform,
                    f = "pixels" === this.gradientUnits ? "userSpaceOnUse" : "objectBoundingBox";
                  if (l.sort((function(e, t) {
                      return e.offset - t.offset
                    })), "objectBoundingBox" === f ? (h /= e.width, p /= e.height) : (h += e.width / 2, p += e.height / 2), "path" === e.type && "percentage" !== this.gradientUnits && (h -= e.pathOffset.x, p -= e.pathOffset.y), u[4] -= h,
                    u[5] -= p, a = 'id="SVGID_' + this.id + '" gradientUnits="' + f + '"', a += ' gradientTransform="' + (d ? n.additionalTransform + " " : "") + v.util.matrixToSVG(u) + '" ', "linear" === this.type ? o = [
                      "<linearGradient ", a, ' x1="', s.x1, '" y1="', s.y1, '" x2="', s.x2, '" y2="', s.y2, '">\n'
                    ] : "radial" === this.type && (o = ["<radialGradient ", a, ' cx="', c ? s.x1 : s.x2, '" cy="', c ? s.y1 : s.y2, '" r="', c ? s.r1 : s.r2, '" fx="', c ? s.x2 : s.x1, '" fy="', c ? s.y2 : s.y1, '">\n']), "radial" === this
                    .type) {
                    if (c)
                      for ((l = l.concat()).reverse(), r = 0, i = l.length; r < i; r++) l[r].offset = 1 - l[r].offset;
                    var g = Math.min(s.r1, s.r2);
                    if (g > 0) {
                      var m = g / Math.max(s.r1, s.r2);
                      for (r = 0, i = l.length; r < i; r++) l[r].offset += m * (1 - l[r].offset)
                    }
                  }
                  for (r = 0, i = l.length; r < i; r++) {
                    var _ = l[r];
                    o.push("<stop ", 'offset="', 100 * _.offset + "%", '" style="stop-color:', _.color, void 0 !== _.opacity ? ";stop-opacity: " + _.opacity : ";", '"/>\n')
                  }
                  return o.push("linear" === this.type ? "</linearGradient>\n" : "</radialGradient>\n"), o.join("")
                },
                toLive: function(e) {
                  var t, n, r, i = v.util.object.clone(this.coords);
                  if (this.type) {
                    for ("linear" === this.type ? t = e.createLinearGradient(i.x1, i.y1, i.x2, i.y2) : "radial" === this.type && (t = e.createRadialGradient(i.x1, i.y1, i.r1, i.x2, i.y2, i.r2)), n = 0, r = this.colorStops.length; n <
                      r; n++) {
                      var o = this.colorStops[n].color,
                        a = this.colorStops[n].opacity,
                        s = this.colorStops[n].offset;
                      void 0 !== a && (o = new v.Color(o).setAlpha(a).toRgba()), t.addColorStop(s, o)
                    }
                    return t
                  }
                }
              }), v.util.object.extend(v.Gradient, {
                fromElement: function(t, n, r, i) {
                  var o = parseFloat(r) / (/%$/.test(r) ? 100 : 1);
                  o = o < 0 ? 0 : o > 1 ? 1 : o, isNaN(o) && (o = 1);
                  var a, s, l, c, u = t.getElementsByTagName("stop"),
                    h = "userSpaceOnUse" === t.getAttribute("gradientUnits") ? "pixels" : "percentage",
                    p = t.getAttribute("gradientTransform") || "",
                    d = [],
                    f = 0,
                    g = 0;
                  for ("linearGradient" === t.nodeName || "LINEARGRADIENT" === t.nodeName ? (a = "linear", s = function(e) {
                      return {
                        x1: e.getAttribute("x1") || 0,
                        y1: e.getAttribute("y1") || 0,
                        x2: e.getAttribute("x2") || "100%",
                        y2: e.getAttribute("y2") || 0
                      }
                    }(t)) : (a = "radial", s = function(e) {
                      return {
                        x1: e.getAttribute("fx") || e.getAttribute("cx") || "50%",
                        y1: e.getAttribute("fy") || e.getAttribute("cy") || "50%",
                        r1: 0,
                        x2: e.getAttribute("cx") || "50%",
                        y2: e.getAttribute("cy") || "50%",
                        r2: e.getAttribute("r") || "50%"
                      }
                    }(t)), l = u.length; l--;) d.push(e(u[l], o));
                  return c = v.parseTransformAttribute(p),
                    function(e, t, n, r) {
                      var i, o;
                      Object.keys(t).forEach((function(e) {
                        "Infinity" === (i = t[e]) ? o = 1: "-Infinity" === i ? o = 0 : (o = parseFloat(t[e], 10), "string" == typeof i && /^(\d+\.\d+)%|(\d+)%$/.test(i) && (o *= .01, "pixels" === r && ("x1" !== e && "x2" !== e &&
                          "r2" !== e || (o *= n.viewBoxWidth || n.width), "y1" !== e && "y2" !== e || (o *= n.viewBoxHeight || n.height)))), t[e] = o
                      }))
                    }(0, s, i, h), "pixels" === h && (f = -n.left, g = -n.top), new v.Gradient({
                      id: t.getAttribute("id"),
                      type: a,
                      coords: s,
                      colorStops: d,
                      gradientUnits: h,
                      gradientTransform: c,
                      offsetX: f,
                      offsetY: g
                    })
                }
              })
            }(), p = v.util.toFixed, v.Pattern = v.util.createClass({
              repeat: "repeat",
              offsetX: 0,
              offsetY: 0,
              crossOrigin: "",
              patternTransform: null,
              initialize: function(e, t) {
                if (e || (e = {}), this.id = v.Object.__uid++, this.setOptions(e), !e.source || e.source && "string" != typeof e.source) t && t(this);
                else {
                  var n = this;
                  this.source = v.util.createImage(), v.util.loadImage(e.source, (function(e, r) {
                    n.source = e, t && t(n, r)
                  }), null, this.crossOrigin)
                }
              },
              toObject: function(e) {
                var t, n, r = v.Object.NUM_FRACTION_DIGITS;
                return "string" == typeof this.source.src ? t = this.source.src : "object" == typeof this.source && this.source.toDataURL && (t = this.source.toDataURL()), n = {
                  type: "pattern",
                  source: t,
                  repeat: this.repeat,
                  crossOrigin: this.crossOrigin,
                  offsetX: p(this.offsetX, r),
                  offsetY: p(this.offsetY, r),
                  patternTransform: this.patternTransform ? this.patternTransform.concat() : null
                }, v.util.populateWithProperties(this, n, e), n
              },
              toSVG: function(e) {
                var t = "function" == typeof this.source ? this.source() : this.source,
                  n = t.width / e.width,
                  r = t.height / e.height,
                  i = this.offsetX / e.width,
                  o = this.offsetY / e.height,
                  a = "";
                return "repeat-x" !== this.repeat && "no-repeat" !== this.repeat || (r = 1, o && (r += Math.abs(o))), "repeat-y" !== this.repeat && "no-repeat" !== this.repeat || (n = 1, i && (n += Math.abs(i))), t.src ? a = t.src : t
                  .toDataURL && (a = t.toDataURL()), '<pattern id="SVGID_' + this.id + '" x="' + i + '" y="' + o + '" width="' + n + '" height="' + r + '">\n<image x="0" y="0" width="' + t.width + '" height="' + t.height + '" xlink:href="' +
                  a + '"></image>\n</pattern>\n'
              },
              setOptions: function(e) {
                for (var t in e) this[t] = e[t]
              },
              toLive: function(e) {
                var t = this.source;
                if (!t) return "";
                if (void 0 !== t.src) {
                  if (!t.complete) return "";
                  if (0 === t.naturalWidth || 0 === t.naturalHeight) return ""
                }
                return e.createPattern(t, this.repeat)
              }
            }),
            function(e) {
              var t = e.fabric || (e.fabric = {}),
                n = t.util.toFixed;
              t.Shadow ? t.warn("fabric.Shadow is already defined.") : (t.Shadow = t.util.createClass({
                color: "rgb(0,0,0)",
                blur: 0,
                offsetX: 0,
                offsetY: 0,
                affectStroke: !1,
                includeDefaultValues: !0,
                nonScaling: !1,
                initialize: function(e) {
                  for (var n in "string" == typeof e && (e = this._parseShadow(e)), e) this[n] = e[n];
                  this.id = t.Object.__uid++
                },
                _parseShadow: function(e) {
                  var n = e.trim(),
                    r = t.Shadow.reOffsetsAndBlur.exec(n) || [];
                  return {
                    color: (n.replace(t.Shadow.reOffsetsAndBlur, "") || "rgb(0,0,0)").trim(),
                    offsetX: parseFloat(r[1], 10) || 0,
                    offsetY: parseFloat(r[2], 10) || 0,
                    blur: parseFloat(r[3], 10) || 0
                  }
                },
                toString: function() {
                  return [this.offsetX, this.offsetY, this.blur, this.color].join("px ")
                },
                toSVG: function(e) {
                  var r = 40,
                    i = 40,
                    o = t.Object.NUM_FRACTION_DIGITS,
                    a = t.util.rotateVector({
                      x: this.offsetX,
                      y: this.offsetY
                    }, t.util.degreesToRadians(-e.angle)),
                    s = new t.Color(this.color);
                  return e.width && e.height && (r = 100 * n((Math.abs(a.x) + this.blur) / e.width, o) + 20, i = 100 * n((Math.abs(a.y) + this.blur) / e.height, o) + 20), e.flipX && (a.x *= -1), e.flipY && (a.y *= -1),
                    '<filter id="SVGID_' + this.id + '" y="-' + i + '%" height="' + (100 + 2 * i) + '%" x="-' + r + '%" width="' + (100 + 2 * r) + '%" >\n\t<feGaussianBlur in="SourceAlpha" stdDeviation="' + n(this.blur ? this.blur / 2 :
                      0, o) + '"></feGaussianBlur>\n\t<feOffset dx="' + n(a.x, o) + '" dy="' + n(a.y, o) + '" result="oBlur" ></feOffset>\n\t<feFlood flood-color="' + s.toRgb() + '" flood-opacity="' + s.getAlpha() +
                    '"/>\n\t<feComposite in2="oBlur" operator="in" />\n\t<feMerge>\n\t\t<feMergeNode></feMergeNode>\n\t\t<feMergeNode in="SourceGraphic"></feMergeNode>\n\t</feMerge>\n</filter>\n'
                },
                toObject: function() {
                  if (this.includeDefaultValues) return {
                    color: this.color,
                    blur: this.blur,
                    offsetX: this.offsetX,
                    offsetY: this.offsetY,
                    affectStroke: this.affectStroke,
                    nonScaling: this.nonScaling
                  };
                  var e = {},
                    n = t.Shadow.prototype;
                  return ["color", "blur", "offsetX", "offsetY", "affectStroke", "nonScaling"].forEach((function(t) {
                    this[t] !== n[t] && (e[t] = this[t])
                  }), this), e
                }
              }), t.Shadow.reOffsetsAndBlur = /(?:\s|^)(-?\d+(?:\.\d*)?(?:px)?(?:\s?|$))?(-?\d+(?:\.\d*)?(?:px)?(?:\s?|$))?(\d+(?:\.\d*)?(?:px)?)?(?:\s?|$)(?:$|\s)/)
            }(e),
            function() {
              if (v.StaticCanvas) v.warn("fabric.StaticCanvas is already defined.");
              else {
                var e = v.util.object.extend,
                  t = v.util.getElementOffset,
                  n = v.util.removeFromArray,
                  r = v.util.toFixed,
                  i = v.util.transformPoint,
                  o = v.util.invertTransform,
                  a = v.util.getNodeCanvas,
                  s = v.util.createCanvasElement,
                  l = new Error("Could not initialize `canvas` element");
                v.StaticCanvas = v.util.createClass(v.CommonMethods, {
                  initialize: function(e, t) {
                    t || (t = {}), this.renderAndResetBound = this.renderAndReset.bind(this), this.requestRenderAllBound = this.requestRenderAll.bind(this), this._initStatic(e, t)
                  },
                  backgroundColor: "",
                  backgroundImage: null,
                  overlayColor: "",
                  overlayImage: null,
                  includeDefaultValues: !0,
                  stateful: !1,
                  renderOnAddRemove: !0,
                  controlsAboveOverlay: !1,
                  allowTouchScrolling: !1,
                  imageSmoothingEnabled: !0,
                  viewportTransform: v.iMatrix.concat(),
                  backgroundVpt: !0,
                  overlayVpt: !0,
                  enableRetinaScaling: !0,
                  vptCoords: {},
                  skipOffscreen: !0,
                  clipPath: void 0,
                  _initStatic: function(e, t) {
                    var n = this.requestRenderAllBound;
                    this._objects = [], this._createLowerCanvas(e), this._initOptions(t), this.interactive || this._initRetinaScaling(), t.overlayImage && this.setOverlayImage(t.overlayImage, n), t.backgroundImage && this
                      .setBackgroundImage(t.backgroundImage, n), t.backgroundColor && this.setBackgroundColor(t.backgroundColor, n), t.overlayColor && this.setOverlayColor(t.overlayColor, n), this.calcOffset()
                  },
                  _isRetinaScaling: function() {
                    return v.devicePixelRatio > 1 && this.enableRetinaScaling
                  },
                  getRetinaScaling: function() {
                    return this._isRetinaScaling() ? Math.max(1, v.devicePixelRatio) : 1
                  },
                  _initRetinaScaling: function() {
                    if (this._isRetinaScaling()) {
                      var e = v.devicePixelRatio;
                      this.__initRetinaScaling(e, this.lowerCanvasEl, this.contextContainer), this.upperCanvasEl && this.__initRetinaScaling(e, this.upperCanvasEl, this.contextTop)
                    }
                  },
                  __initRetinaScaling: function(e, t, n) {
                    t.setAttribute("width", this.width * e), t.setAttribute("height", this.height * e), n.scale(e, e)
                  },
                  calcOffset: function() {
                    return this._offset = t(this.lowerCanvasEl), this
                  },
                  setOverlayImage: function(e, t, n) {
                    return this.__setBgOverlayImage("overlayImage", e, t, n)
                  },
                  setBackgroundImage: function(e, t, n) {
                    return this.__setBgOverlayImage("backgroundImage", e, t, n)
                  },
                  setOverlayColor: function(e, t) {
                    return this.__setBgOverlayColor("overlayColor", e, t)
                  },
                  setBackgroundColor: function(e, t) {
                    return this.__setBgOverlayColor("backgroundColor", e, t)
                  },
                  __setBgOverlayImage: function(e, t, n, r) {
                    return "string" == typeof t ? v.util.loadImage(t, (function(t, i) {
                      if (t) {
                        var o = new v.Image(t, r);
                        this[e] = o, o.canvas = this
                      }
                      n && n(t, i)
                    }), this, r && r.crossOrigin) : (r && t.setOptions(r), this[e] = t, t && (t.canvas = this), n && n(t, !1)), this
                  },
                  __setBgOverlayColor: function(e, t, n) {
                    return this[e] = t, this._initGradient(t, e), this._initPattern(t, e, n), this
                  },
                  _createCanvasElement: function() {
                    var e = s();
                    if (!e) throw l;
                    if (e.style || (e.style = {}), void 0 === e.getContext) throw l;
                    return e
                  },
                  _initOptions: function(e) {
                    var t = this.lowerCanvasEl;
                    this._setOptions(e), this.width = this.width || parseInt(t.width, 10) || 0, this.height = this.height || parseInt(t.height, 10) || 0, this.lowerCanvasEl.style && (t.width = this.width, t.height = this.height, t.style
                      .width = this.width + "px", t.style.height = this.height + "px", this.viewportTransform = this.viewportTransform.slice())
                  },
                  _createLowerCanvas: function(e) {
                    e && e.getContext ? this.lowerCanvasEl = e : this.lowerCanvasEl = v.util.getById(e) || this._createCanvasElement(), v.util.addClass(this.lowerCanvasEl, "lower-canvas"), this._originalCanvasStyle = this.lowerCanvasEl
                      .style, this.interactive && this._applyCanvasStyle(this.lowerCanvasEl), this.contextContainer = this.lowerCanvasEl.getContext("2d")
                  },
                  getWidth: function() {
                    return this.width
                  },
                  getHeight: function() {
                    return this.height
                  },
                  setWidth: function(e, t) {
                    return this.setDimensions({
                      width: e
                    }, t)
                  },
                  setHeight: function(e, t) {
                    return this.setDimensions({
                      height: e
                    }, t)
                  },
                  setDimensions: function(e, t) {
                    var n;
                    for (var r in t = t || {}, e) n = e[r], t.cssOnly || (this._setBackstoreDimension(r, e[r]), n += "px", this.hasLostContext = !0), t.backstoreOnly || this._setCssDimension(r, n);
                    return this._isCurrentlyDrawing && this.freeDrawingBrush && this.freeDrawingBrush._setBrushStyles(this.contextTop), this._initRetinaScaling(), this.calcOffset(), t.cssOnly || this.requestRenderAll(), this
                  },
                  _setBackstoreDimension: function(e, t) {
                    return this.lowerCanvasEl[e] = t, this.upperCanvasEl && (this.upperCanvasEl[e] = t), this.cacheCanvasEl && (this.cacheCanvasEl[e] = t), this[e] = t, this
                  },
                  _setCssDimension: function(e, t) {
                    return this.lowerCanvasEl.style[e] = t, this.upperCanvasEl && (this.upperCanvasEl.style[e] = t), this.wrapperEl && (this.wrapperEl.style[e] = t), this
                  },
                  getZoom: function() {
                    return this.viewportTransform[0]
                  },
                  setViewportTransform: function(e) {
                    var t, n, r, i = this._activeObject,
                      o = this.backgroundImage,
                      a = this.overlayImage;
                    for (this.viewportTransform = e, n = 0, r = this._objects.length; n < r; n++)(t = this._objects[n]).group || t.setCoords(!0);
                    return i && i.setCoords(), o && o.setCoords(!0), a && a.setCoords(!0), this.calcViewportBoundaries(), this.renderOnAddRemove && this.requestRenderAll(), this
                  },
                  zoomToPoint: function(e, t) {
                    var n = e,
                      r = this.viewportTransform.slice(0);
                    e = i(e, o(this.viewportTransform)), r[0] = t, r[3] = t;
                    var a = i(e, r);
                    return r[4] += n.x - a.x, r[5] += n.y - a.y, this.setViewportTransform(r)
                  },
                  setZoom: function(e) {
                    return this.zoomToPoint(new v.Point(0, 0), e), this
                  },
                  absolutePan: function(e) {
                    var t = this.viewportTransform.slice(0);
                    return t[4] = -e.x, t[5] = -e.y, this.setViewportTransform(t)
                  },
                  relativePan: function(e) {
                    return this.absolutePan(new v.Point(-e.x - this.viewportTransform[4], -e.y - this.viewportTransform[5]))
                  },
                  getElement: function() {
                    return this.lowerCanvasEl
                  },
                  _onObjectAdded: function(e) {
                    this.stateful && e.setupState(), e._set("canvas", this), e.setCoords(), this.fire("object:added", {
                      target: e
                    }), e.fire("added")
                  },
                  _onObjectRemoved: function(e) {
                    this.fire("object:removed", {
                      target: e
                    }), e.fire("removed"), delete e.canvas
                  },
                  clearContext: function(e) {
                    return e.clearRect(0, 0, this.width, this.height), this
                  },
                  getContext: function() {
                    return this.contextContainer
                  },
                  clear: function() {
                    return this.remove.apply(this, this.getObjects()), this.backgroundImage = null, this.overlayImage = null, this.backgroundColor = "", this.overlayColor = "", this._hasITextHandlers && (this.off("mouse:up", this
                      ._mouseUpITextHandler), this._iTextInstances = null, this._hasITextHandlers = !1), this.clearContext(this.contextContainer), this.fire("canvas:cleared"), this.renderOnAddRemove && this.requestRenderAll(), this
                  },
                  renderAll: function() {
                    var e = this.contextContainer;
                    return this.renderCanvas(e, this._objects), this
                  },
                  renderAndReset: function() {
                    this.isRendering = 0, this.renderAll()
                  },
                  requestRenderAll: function() {
                    return this.isRendering || (this.isRendering = v.util.requestAnimFrame(this.renderAndResetBound)), this
                  },
                  calcViewportBoundaries: function() {
                    var e = {},
                      t = this.width,
                      n = this.height,
                      r = o(this.viewportTransform);
                    return e.tl = i({
                      x: 0,
                      y: 0
                    }, r), e.br = i({
                      x: t,
                      y: n
                    }, r), e.tr = new v.Point(e.br.x, e.tl.y), e.bl = new v.Point(e.tl.x, e.br.y), this.vptCoords = e, e
                  },
                  cancelRequestedRender: function() {
                    this.isRendering && (v.util.cancelAnimFrame(this.isRendering), this.isRendering = 0)
                  },
                  renderCanvas: function(e, t) {
                    var n = this.viewportTransform,
                      r = this.clipPath;
                    this.cancelRequestedRender(), this.calcViewportBoundaries(), this.clearContext(e), v.util.setImageSmoothing(e, this.imageSmoothingEnabled), this.fire("before:render", {
                      ctx: e
                    }), this._renderBackground(e), e.save(), e.transform(n[0], n[1], n[2], n[3], n[4], n[5]), this._renderObjects(e, t), e.restore(), !this.controlsAboveOverlay && this.interactive && this.drawControls(e), r && (r.canvas =
                      this, r.shouldCache(), r._transformDone = !0, r.renderCache({
                        forClipping: !0
                      }), this.drawClipPathOnCanvas(e)), this._renderOverlay(e), this.controlsAboveOverlay && this.interactive && this.drawControls(e), this.fire("after:render", {
                      ctx: e
                    })
                  },
                  drawClipPathOnCanvas: function(e) {
                    var t = this.viewportTransform,
                      n = this.clipPath;
                    e.save(), e.transform(t[0], t[1], t[2], t[3], t[4], t[5]), e.globalCompositeOperation = "destination-in", n.transform(e), e.scale(1 / n.zoomX, 1 / n.zoomY), e.drawImage(n._cacheCanvas, -n.cacheTranslationX, -n
                      .cacheTranslationY), e.restore()
                  },
                  _renderObjects: function(e, t) {
                    var n, r;
                    for (n = 0, r = t.length; n < r; ++n) t[n] && t[n].render(e)
                  },
                  _renderBackgroundOrOverlay: function(e, t) {
                    var n = this[t + "Color"],
                      r = this[t + "Image"],
                      i = this.viewportTransform,
                      o = this[t + "Vpt"];
                    if (n || r) {
                      if (n) {
                        e.save(), e.beginPath(), e.moveTo(0, 0), e.lineTo(this.width, 0), e.lineTo(this.width, this.height), e.lineTo(0, this.height), e.closePath(), e.fillStyle = n.toLive ? n.toLive(e, this) : n, o && e.transform(i[0], i[
                          1], i[2], i[3], i[4], i[5]), e.transform(1, 0, 0, 1, n.offsetX || 0, n.offsetY || 0);
                        var a = n.gradientTransform || n.patternTransform;
                        a && e.transform(a[0], a[1], a[2], a[3], a[4], a[5]), e.fill(), e.restore()
                      }
                      r && (e.save(), o && e.transform(i[0], i[1], i[2], i[3], i[4], i[5]), r.render(e), e.restore())
                    }
                  },
                  _renderBackground: function(e) {
                    this._renderBackgroundOrOverlay(e, "background")
                  },
                  _renderOverlay: function(e) {
                    this._renderBackgroundOrOverlay(e, "overlay")
                  },
                  getCenter: function() {
                    return {
                      top: this.height / 2,
                      left: this.width / 2
                    }
                  },
                  getCenterPoint: function() {
                    return new v.Point(this.width / 2, this.height / 2)
                  },
                  centerObjectH: function(e) {
                    return this._centerObject(e, new v.Point(this.getCenterPoint().x, e.getCenterPoint().y))
                  },
                  centerObjectV: function(e) {
                    return this._centerObject(e, new v.Point(e.getCenterPoint().x, this.getCenterPoint().y))
                  },
                  centerObject: function(e) {
                    var t = this.getCenterPoint();
                    return this._centerObject(e, t)
                  },
                  viewportCenterObject: function(e) {
                    var t = this.getVpCenter();
                    return this._centerObject(e, t)
                  },
                  viewportCenterObjectH: function(e) {
                    var t = this.getVpCenter();
                    return this._centerObject(e, new v.Point(t.x, e.getCenterPoint().y)), this
                  },
                  viewportCenterObjectV: function(e) {
                    var t = this.getVpCenter();
                    return this._centerObject(e, new v.Point(e.getCenterPoint().x, t.y))
                  },
                  getVpCenter: function() {
                    var e = this.getCenterPoint(),
                      t = o(this.viewportTransform);
                    return i(e, t)
                  },
                  _centerObject: function(e, t) {
                    return e.setPositionByOrigin(t, "center", "center"), e.setCoords(), this.renderOnAddRemove && this.requestRenderAll(), this
                  },
                  toDatalessJSON: function(e) {
                    return this.toDatalessObject(e)
                  },
                  toObject: function(e) {
                    return this._toObjectMethod("toObject", e)
                  },
                  toDatalessObject: function(e) {
                    return this._toObjectMethod("toDatalessObject", e)
                  },
                  _toObjectMethod: function(t, n) {
                    var r = this.clipPath,
                      i = {
                        version: v.version,
                        objects: this._toObjects(t, n)
                      };
                    return r && !r.excludeFromExport && (i.clipPath = this._toObject(this.clipPath, t, n)), e(i, this.__serializeBgOverlay(t, n)), v.util.populateWithProperties(this, i, n), i
                  },
                  _toObjects: function(e, t) {
                    return this._objects.filter((function(e) {
                      return !e.excludeFromExport
                    })).map((function(n) {
                      return this._toObject(n, e, t)
                    }), this)
                  },
                  _toObject: function(e, t, n) {
                    var r;
                    this.includeDefaultValues || (r = e.includeDefaultValues, e.includeDefaultValues = !1);
                    var i = e[t](n);
                    return this.includeDefaultValues || (e.includeDefaultValues = r), i
                  },
                  __serializeBgOverlay: function(e, t) {
                    var n = {},
                      r = this.backgroundImage,
                      i = this.overlayImage,
                      o = this.backgroundColor,
                      a = this.overlayColor;
                    return o && o.toObject ? o.excludeFromExport || (n.background = o.toObject(t)) : o && (n.background = o), a && a.toObject ? a.excludeFromExport || (n.overlay = a.toObject(t)) : a && (n.overlay = a), r && !r
                      .excludeFromExport && (n.backgroundImage = this._toObject(r, e, t)), i && !i.excludeFromExport && (n.overlayImage = this._toObject(i, e, t)), n
                  },
                  svgViewportTransformation: !0,
                  toSVG: function(e, t) {
                    e || (e = {}), e.reviver = t;
                    var n = [];
                    return this._setSVGPreamble(n, e), this._setSVGHeader(n, e), this.clipPath && n.push('<g clip-path="url(#' + this.clipPath.clipPathId + ')" >\n'), this._setSVGBgOverlayColor(n, "background"), this._setSVGBgOverlayImage(
                      n, "backgroundImage", t), this._setSVGObjects(n, t), this.clipPath && n.push("</g>\n"), this._setSVGBgOverlayColor(n, "overlay"), this._setSVGBgOverlayImage(n, "overlayImage", t), n.push("</svg>"), n.join("")
                  },
                  _setSVGPreamble: function(e, t) {
                    t.suppressPreamble || e.push('<?xml version="1.0" encoding="', t.encoding || "UTF-8", '" standalone="no" ?>\n', '<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" ', '"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\n')
                  },
                  _setSVGHeader: function(e, t) {
                    var n, i = t.width || this.width,
                      o = t.height || this.height,
                      a = 'viewBox="0 0 ' + this.width + " " + this.height + '" ',
                      s = v.Object.NUM_FRACTION_DIGITS;
                    t.viewBox ? a = 'viewBox="' + t.viewBox.x + " " + t.viewBox.y + " " + t.viewBox.width + " " + t.viewBox.height + '" ' : this.svgViewportTransformation && (n = this.viewportTransform, a = 'viewBox="' + r(-n[4] / n[0],
                      s) + " " + r(-n[5] / n[3], s) + " " + r(this.width / n[0], s) + " " + r(this.height / n[3], s) + '" '), e.push("<svg ", 'xmlns="http://www.w3.org/2000/svg" ', 'xmlns:xlink="http://www.w3.org/1999/xlink" ',
                      'version="1.1" ', 'width="', i, '" ', 'height="', o, '" ', a, 'xml:space="preserve">\n', "<desc>Created with Fabric.js ", v.version, "</desc>\n", "<defs>\n", this.createSVGFontFacesMarkup(), this
                      .createSVGRefElementsMarkup(), this.createSVGClipPathMarkup(t), "</defs>\n")
                  },
                  createSVGClipPathMarkup: function(e) {
                    var t = this.clipPath;
                    return t ? (t.clipPathId = "CLIPPATH_" + v.Object.__uid++, '<clipPath id="' + t.clipPathId + '" >\n' + this.clipPath.toClipPathSVG(e.reviver) + "</clipPath>\n") : ""
                  },
                  createSVGRefElementsMarkup: function() {
                    var e = this;
                    return ["background", "overlay"].map((function(t) {
                      var n = e[t + "Color"];
                      if (n && n.toLive) {
                        var r = e[t + "Vpt"],
                          i = e.viewportTransform,
                          o = {
                            width: e.width / (r ? i[0] : 1),
                            height: e.height / (r ? i[3] : 1)
                          };
                        return n.toSVG(o, {
                          additionalTransform: r ? v.util.matrixToSVG(i) : ""
                        })
                      }
                    })).join("")
                  },
                  createSVGFontFacesMarkup: function() {
                    var e, t, n, r, i, o, a, s, l = "",
                      c = {},
                      u = v.fontPaths,
                      h = [];
                    for (this._objects.forEach((function e(t) {
                        h.push(t), t._objects && t._objects.forEach(e)
                      })), a = 0, s = h.length; a < s; a++)
                      if (t = (e = h[a]).fontFamily, -1 !== e.type.indexOf("text") && !c[t] && u[t] && (c[t] = !0, e.styles))
                        for (i in n = e.styles)
                          for (o in r = n[i]) !c[t = r[o].fontFamily] && u[t] && (c[t] = !0);
                    for (var p in c) l += ["\t\t@font-face {\n", "\t\t\tfont-family: '", p, "';\n", "\t\t\tsrc: url('", u[p], "');\n", "\t\t}\n"].join("");
                    return l && (l = ['\t<style type="text/css">', "<![CDATA[\n", l, "]]>", "</style>\n"].join("")), l
                  },
                  _setSVGObjects: function(e, t) {
                    var n, r, i, o = this._objects;
                    for (r = 0, i = o.length; r < i; r++)(n = o[r]).excludeFromExport || this._setSVGObject(e, n, t)
                  },
                  _setSVGObject: function(e, t, n) {
                    e.push(t.toSVG(n))
                  },
                  _setSVGBgOverlayImage: function(e, t, n) {
                    this[t] && !this[t].excludeFromExport && this[t].toSVG && e.push(this[t].toSVG(n))
                  },
                  _setSVGBgOverlayColor: function(e, t) {
                    var n = this[t + "Color"],
                      r = this.viewportTransform,
                      i = this.width,
                      o = this.height;
                    if (n)
                      if (n.toLive) {
                        var a = n.repeat,
                          s = v.util.invertTransform(r),
                          l = this[t + "Vpt"] ? v.util.matrixToSVG(s) : "";
                        e.push('<rect transform="' + l + " translate(", i / 2, ",", o / 2, ')"', ' x="', n.offsetX - i / 2, '" y="', n.offsetY - o / 2, '" ', 'width="', "repeat-y" === a || "no-repeat" === a ? n.source.width : i,
                          '" height="', "repeat-x" === a || "no-repeat" === a ? n.source.height : o, '" fill="url(#SVGID_' + n.id + ')"', "></rect>\n")
                      } else e.push('<rect x="0" y="0" width="100%" height="100%" ', 'fill="', n, '"', "></rect>\n")
                  },
                  sendToBack: function(e) {
                    if (!e) return this;
                    var t, r, i, o = this._activeObject;
                    if (e === o && "activeSelection" === e.type)
                      for (t = (i = o._objects).length; t--;) r = i[t], n(this._objects, r), this._objects.unshift(r);
                    else n(this._objects, e), this._objects.unshift(e);
                    return this.renderOnAddRemove && this.requestRenderAll(), this
                  },
                  bringToFront: function(e) {
                    if (!e) return this;
                    var t, r, i, o = this._activeObject;
                    if (e === o && "activeSelection" === e.type)
                      for (i = o._objects, t = 0; t < i.length; t++) r = i[t], n(this._objects, r), this._objects.push(r);
                    else n(this._objects, e), this._objects.push(e);
                    return this.renderOnAddRemove && this.requestRenderAll(), this
                  },
                  sendBackwards: function(e, t) {
                    if (!e) return this;
                    var r, i, o, a, s, l = this._activeObject,
                      c = 0;
                    if (e === l && "activeSelection" === e.type)
                      for (s = l._objects, r = 0; r < s.length; r++) i = s[r], (o = this._objects.indexOf(i)) > 0 + c && (a = o - 1, n(this._objects, i), this._objects.splice(a, 0, i)), c++;
                    else 0 !== (o = this._objects.indexOf(e)) && (a = this._findNewLowerIndex(e, o, t), n(this._objects, e), this._objects.splice(a, 0, e));
                    return this.renderOnAddRemove && this.requestRenderAll(), this
                  },
                  _findNewLowerIndex: function(e, t, n) {
                    var r, i;
                    if (n)
                      for (r = t, i = t - 1; i >= 0; --i) {
                        if (e.intersectsWithObject(this._objects[i]) || e.isContainedWithinObject(this._objects[i]) || this._objects[i].isContainedWithinObject(e)) {
                          r = i;
                          break
                        }
                      } else r = t - 1;
                    return r
                  },
                  bringForward: function(e, t) {
                    if (!e) return this;
                    var r, i, o, a, s, l = this._activeObject,
                      c = 0;
                    if (e === l && "activeSelection" === e.type)
                      for (r = (s = l._objects).length; r--;) i = s[r], (o = this._objects.indexOf(i)) < this._objects.length - 1 - c && (a = o + 1, n(this._objects, i), this._objects.splice(a, 0, i)), c++;
                    else(o = this._objects.indexOf(e)) !== this._objects.length - 1 && (a = this._findNewUpperIndex(e, o, t), n(this._objects, e), this._objects.splice(a, 0, e));
                    return this.renderOnAddRemove && this.requestRenderAll(), this
                  },
                  _findNewUpperIndex: function(e, t, n) {
                    var r, i, o;
                    if (n)
                      for (r = t, i = t + 1, o = this._objects.length; i < o; ++i) {
                        if (e.intersectsWithObject(this._objects[i]) || e.isContainedWithinObject(this._objects[i]) || this._objects[i].isContainedWithinObject(e)) {
                          r = i;
                          break
                        }
                      } else r = t + 1;
                    return r
                  },
                  moveTo: function(e, t) {
                    return n(this._objects, e), this._objects.splice(t, 0, e), this.renderOnAddRemove && this.requestRenderAll()
                  },
                  dispose: function() {
                    return this.isRendering && (v.util.cancelAnimFrame(this.isRendering), this.isRendering = 0), this.forEachObject((function(e) {
                        e.dispose && e.dispose()
                      })), this._objects = [], this.backgroundImage && this.backgroundImage.dispose && this.backgroundImage.dispose(), this.backgroundImage = null, this.overlayImage && this.overlayImage.dispose && this.overlayImage
                      .dispose(), this.overlayImage = null, this._iTextInstances = null, this.contextContainer = null, this.lowerCanvasEl.classList.remove("lower-canvas"), v.util.setStyle(this.lowerCanvasEl, this._originalCanvasStyle),
                      delete this._originalCanvasStyle, this.lowerCanvasEl.setAttribute("width", this.width), this.lowerCanvasEl.setAttribute("height", this.height), v.util.cleanUpJsdomNode(this.lowerCanvasEl), this.lowerCanvasEl = void 0,
                      this
                  },
                  toString: function() {
                    return "#<fabric.Canvas (" + this.complexity() + "): { objects: " + this._objects.length + " }>"
                  }
                }), e(v.StaticCanvas.prototype, v.Observable), e(v.StaticCanvas.prototype, v.Collection), e(v.StaticCanvas.prototype, v.DataURLExporter), e(v.StaticCanvas, {
                  EMPTY_JSON: '{"objects": [], "background": "white"}',
                  supports: function(e) {
                    var t = s();
                    if (!t || !t.getContext) return null;
                    var n = t.getContext("2d");
                    return n && "setLineDash" === e ? void 0 !== n.setLineDash : null
                  }
                }), v.StaticCanvas.prototype.toJSON = v.StaticCanvas.prototype.toObject, v.isLikelyNode && (v.StaticCanvas.prototype.createPNGStream = function() {
                  var e = a(this.lowerCanvasEl);
                  return e && e.createPNGStream()
                }, v.StaticCanvas.prototype.createJPEGStream = function(e) {
                  var t = a(this.lowerCanvasEl);
                  return t && t.createJPEGStream(e)
                })
              }
            }(), v.BaseBrush = v.util.createClass({
              color: "rgb(0, 0, 0)",
              width: 1,
              shadow: null,
              strokeLineCap: "round",
              strokeLineJoin: "round",
              strokeMiterLimit: 10,
              strokeDashArray: null,
              limitedToCanvasSize: !1,
              _setBrushStyles: function(e) {
                e.strokeStyle = this.color, e.lineWidth = this.width, e.lineCap = this.strokeLineCap, e.miterLimit = this.strokeMiterLimit, e.lineJoin = this.strokeLineJoin, e.setLineDash(this.strokeDashArray || [])
              },
              _saveAndTransform: function(e) {
                var t = this.canvas.viewportTransform;
                e.save(), e.transform(t[0], t[1], t[2], t[3], t[4], t[5])
              },
              _setShadow: function() {
                if (this.shadow) {
                  var e = this.canvas,
                    t = this.shadow,
                    n = e.contextTop,
                    r = e.getZoom();
                  e && e._isRetinaScaling() && (r *= v.devicePixelRatio), n.shadowColor = t.color, n.shadowBlur = t.blur * r, n.shadowOffsetX = t.offsetX * r, n.shadowOffsetY = t.offsetY * r
                }
              },
              needsFullRender: function() {
                return new v.Color(this.color).getAlpha() < 1 || !!this.shadow
              },
              _resetShadow: function() {
                var e = this.canvas.contextTop;
                e.shadowColor = "", e.shadowBlur = e.shadowOffsetX = e.shadowOffsetY = 0
              },
              _isOutSideCanvas: function(e) {
                return e.x < 0 || e.x > this.canvas.getWidth() || e.y < 0 || e.y > this.canvas.getHeight()
              }
            }), v.PencilBrush = v.util.createClass(v.BaseBrush, {
              decimate: .4,
              drawStraightLine: !1,
              straightLineKey: "shiftKey",
              initialize: function(e) {
                this.canvas = e, this._points = []
              },
              needsFullRender: function() {
                return this.callSuper("needsFullRender") || this._hasStraightLine
              },
              _drawSegment: function(e, t, n) {
                var r = t.midPointFrom(n);
                return e.quadraticCurveTo(t.x, t.y, r.x, r.y), r
              },
              onMouseDown: function(e, t) {
                this.canvas._isMainEvent(t.e) && (this.drawStraightLine = t.e[this.straightLineKey], this._prepareForDrawing(e), this._captureDrawingPath(e), this._render())
              },
              onMouseMove: function(e, t) {
                if (this.canvas._isMainEvent(t.e) && (this.drawStraightLine = t.e[this.straightLineKey], (!0 !== this.limitedToCanvasSize || !this._isOutSideCanvas(e)) && this._captureDrawingPath(e) && this._points.length > 1))
                  if (this.needsFullRender()) this.canvas.clearContext(this.canvas.contextTop), this._render();
                  else {
                    var n = this._points,
                      r = n.length,
                      i = this.canvas.contextTop;
                    this._saveAndTransform(i), this.oldEnd && (i.beginPath(), i.moveTo(this.oldEnd.x, this.oldEnd.y)), this.oldEnd = this._drawSegment(i, n[r - 2], n[r - 1], !0), i.stroke(), i.restore()
                  }
              },
              onMouseUp: function(e) {
                return !this.canvas._isMainEvent(e.e) || (this.drawStraightLine = !1, this.oldEnd = void 0, this._finalizeAndAddPath(), !1)
              },
              _prepareForDrawing: function(e) {
                var t = new v.Point(e.x, e.y);
                this._reset(), this._addPoint(t), this.canvas.contextTop.moveTo(t.x, t.y)
              },
              _addPoint: function(e) {
                return !(this._points.length > 1 && e.eq(this._points[this._points.length - 1]) || (this.drawStraightLine && this._points.length > 1 && (this._hasStraightLine = !0, this._points.pop()), this._points.push(e), 0))
              },
              _reset: function() {
                this._points = [], this._setBrushStyles(this.canvas.contextTop), this._setShadow(), this._hasStraightLine = !1
              },
              _captureDrawingPath: function(e) {
                var t = new v.Point(e.x, e.y);
                return this._addPoint(t)
              },
              _render: function(e) {
                var t, n, r = this._points[0],
                  i = this._points[1];
                if (e = e || this.canvas.contextTop, this._saveAndTransform(e), e.beginPath(), 2 === this._points.length && r.x === i.x && r.y === i.y) {
                  var o = this.width / 1e3;
                  r = new v.Point(r.x, r.y), i = new v.Point(i.x, i.y), r.x -= o, i.x += o
                }
                for (e.moveTo(r.x, r.y), t = 1, n = this._points.length; t < n; t++) this._drawSegment(e, r, i), r = this._points[t], i = this._points[t + 1];
                e.lineTo(r.x, r.y), e.stroke(), e.restore()
              },
              convertPointsToSVGPath: function(e) {
                var t = this.width / 1e3;
                return v.util.getSmoothPathFromPoints(e, t)
              },
              _isEmptySVGPath: function(e) {
                return "M 0 0 Q 0 0 0 0 L 0 0" === v.util.joinPath(e)
              },
              createPath: function(e) {
                var t = new v.Path(e, {
                  fill: null,
                  stroke: this.color,
                  strokeWidth: this.width,
                  strokeLineCap: this.strokeLineCap,
                  strokeMiterLimit: this.strokeMiterLimit,
                  strokeLineJoin: this.strokeLineJoin,
                  strokeDashArray: this.strokeDashArray
                });
                return this.shadow && (this.shadow.affectStroke = !0, t.shadow = new v.Shadow(this.shadow)), t
              },
              decimatePoints: function(e, t) {
                if (e.length <= 2) return e;
                var n, r = this.canvas.getZoom(),
                  i = Math.pow(t / r, 2),
                  o = e.length - 1,
                  a = e[0],
                  s = [a];
                for (n = 1; n < o - 1; n++) Math.pow(a.x - e[n].x, 2) + Math.pow(a.y - e[n].y, 2) >= i && (a = e[n], s.push(a));
                return s.push(e[o]), s
              },
              _finalizeAndAddPath: function() {
                this.canvas.contextTop.closePath(), this.decimate && (this._points = this.decimatePoints(this._points, this.decimate));
                var e = this.convertPointsToSVGPath(this._points);
                if (this._isEmptySVGPath(e)) this.canvas.requestRenderAll();
                else {
                  var t = this.createPath(e);
                  this.canvas.clearContext(this.canvas.contextTop), this.canvas.fire("before:path:created", {
                    path: t
                  }), this.canvas.add(t), this.canvas.requestRenderAll(), t.setCoords(), this._resetShadow(), this.canvas.fire("path:created", {
                    path: t
                  })
                }
              }
            }), v.CircleBrush = v.util.createClass(v.BaseBrush, {
              width: 10,
              initialize: function(e) {
                this.canvas = e, this.points = []
              },
              drawDot: function(e) {
                var t = this.addPoint(e),
                  n = this.canvas.contextTop;
                this._saveAndTransform(n), this.dot(n, t), n.restore()
              },
              dot: function(e, t) {
                e.fillStyle = t.fill, e.beginPath(), e.arc(t.x, t.y, t.radius, 0, 2 * Math.PI, !1), e.closePath(), e.fill()
              },
              onMouseDown: function(e) {
                this.points.length = 0, this.canvas.clearContext(this.canvas.contextTop), this._setShadow(), this.drawDot(e)
              },
              _render: function() {
                var e, t, n = this.canvas.contextTop,
                  r = this.points;
                for (this._saveAndTransform(n), e = 0, t = r.length; e < t; e++) this.dot(n, r[e]);
                n.restore()
              },
              onMouseMove: function(e) {
                !0 === this.limitedToCanvasSize && this._isOutSideCanvas(e) || (this.needsFullRender() ? (this.canvas.clearContext(this.canvas.contextTop), this.addPoint(e), this._render()) : this.drawDot(e))
              },
              onMouseUp: function() {
                var e, t, n = this.canvas.renderOnAddRemove;
                this.canvas.renderOnAddRemove = !1;
                var r = [];
                for (e = 0, t = this.points.length; e < t; e++) {
                  var i = this.points[e],
                    o = new v.Circle({
                      radius: i.radius,
                      left: i.x,
                      top: i.y,
                      originX: "center",
                      originY: "center",
                      fill: i.fill
                    });
                  this.shadow && (o.shadow = new v.Shadow(this.shadow)), r.push(o)
                }
                var a = new v.Group(r);
                a.canvas = this.canvas, this.canvas.fire("before:path:created", {
                  path: a
                }), this.canvas.add(a), this.canvas.fire("path:created", {
                  path: a
                }), this.canvas.clearContext(this.canvas.contextTop), this._resetShadow(), this.canvas.renderOnAddRemove = n, this.canvas.requestRenderAll()
              },
              addPoint: function(e) {
                var t = new v.Point(e.x, e.y),
                  n = v.util.getRandomInt(Math.max(0, this.width - 20), this.width + 20) / 2,
                  r = new v.Color(this.color).setAlpha(v.util.getRandomInt(0, 100) / 100).toRgba();
                return t.radius = n, t.fill = r, this.points.push(t), t
              }
            }), v.SprayBrush = v.util.createClass(v.BaseBrush, {
              width: 10,
              density: 20,
              dotWidth: 1,
              dotWidthVariance: 1,
              randomOpacity: !1,
              optimizeOverlapping: !0,
              initialize: function(e) {
                this.canvas = e, this.sprayChunks = []
              },
              onMouseDown: function(e) {
                this.sprayChunks.length = 0, this.canvas.clearContext(this.canvas.contextTop), this._setShadow(), this.addSprayChunk(e), this.render(this.sprayChunkPoints)
              },
              onMouseMove: function(e) {
                !0 === this.limitedToCanvasSize && this._isOutSideCanvas(e) || (this.addSprayChunk(e), this.render(this.sprayChunkPoints))
              },
              onMouseUp: function() {
                var e = this.canvas.renderOnAddRemove;
                this.canvas.renderOnAddRemove = !1;
                for (var t = [], n = 0, r = this.sprayChunks.length; n < r; n++)
                  for (var i = this.sprayChunks[n], o = 0, a = i.length; o < a; o++) {
                    var s = new v.Rect({
                      width: i[o].width,
                      height: i[o].width,
                      left: i[o].x + 1,
                      top: i[o].y + 1,
                      originX: "center",
                      originY: "center",
                      fill: this.color
                    });
                    t.push(s)
                  }
                this.optimizeOverlapping && (t = this._getOptimizedRects(t));
                var l = new v.Group(t);
                this.shadow && l.set("shadow", new v.Shadow(this.shadow)), this.canvas.fire("before:path:created", {
                  path: l
                }), this.canvas.add(l), this.canvas.fire("path:created", {
                  path: l
                }), this.canvas.clearContext(this.canvas.contextTop), this._resetShadow(), this.canvas.renderOnAddRemove = e, this.canvas.requestRenderAll()
              },
              _getOptimizedRects: function(e) {
                var t, n, r, i = {};
                for (n = 0, r = e.length; n < r; n++) i[t = e[n].left + "" + e[n].top] || (i[t] = e[n]);
                var o = [];
                for (t in i) o.push(i[t]);
                return o
              },
              render: function(e) {
                var t, n, r = this.canvas.contextTop;
                for (r.fillStyle = this.color, this._saveAndTransform(r), t = 0, n = e.length; t < n; t++) {
                  var i = e[t];
                  void 0 !== i.opacity && (r.globalAlpha = i.opacity), r.fillRect(i.x, i.y, i.width, i.width)
                }
                r.restore()
              },
              _render: function() {
                var e, t, n = this.canvas.contextTop;
                for (n.fillStyle = this.color, this._saveAndTransform(n), e = 0, t = this.sprayChunks.length; e < t; e++) this.render(this.sprayChunks[e]);
                n.restore()
              },
              addSprayChunk: function(e) {
                this.sprayChunkPoints = [];
                var t, n, r, i, o = this.width / 2;
                for (i = 0; i < this.density; i++) {
                  t = v.util.getRandomInt(e.x - o, e.x + o), n = v.util.getRandomInt(e.y - o, e.y + o), r = this.dotWidthVariance ? v.util.getRandomInt(Math.max(1, this.dotWidth - this.dotWidthVariance), this.dotWidth + this
                    .dotWidthVariance) : this.dotWidth;
                  var a = new v.Point(t, n);
                  a.width = r, this.randomOpacity && (a.opacity = v.util.getRandomInt(0, 100) / 100), this.sprayChunkPoints.push(a)
                }
                this.sprayChunks.push(this.sprayChunkPoints)
              }
            }), v.PatternBrush = v.util.createClass(v.PencilBrush, {
              getPatternSrc: function() {
                var e = v.util.createCanvasElement(),
                  t = e.getContext("2d");
                return e.width = e.height = 25, t.fillStyle = this.color, t.beginPath(), t.arc(10, 10, 10, 0, 2 * Math.PI, !1), t.closePath(), t.fill(), e
              },
              getPatternSrcFunction: function() {
                return String(this.getPatternSrc).replace("this.color", '"' + this.color + '"')
              },
              getPattern: function(e) {
                return e.createPattern(this.source || this.getPatternSrc(), "repeat")
              },
              _setBrushStyles: function(e) {
                this.callSuper("_setBrushStyles", e), e.strokeStyle = this.getPattern(e)
              },
              createPath: function(e) {
                var t = this.callSuper("createPath", e),
                  n = t._getLeftTopCoords().scalarAdd(t.strokeWidth / 2);
                return t.stroke = new v.Pattern({
                  source: this.source || this.getPatternSrcFunction(),
                  offsetX: -n.x,
                  offsetY: -n.y
                }), t
              }
            }),
            function() {
              var e = v.util.getPointer,
                t = v.util.degreesToRadians,
                n = v.util.isTouchEvent;
              for (var r in v.Canvas = v.util.createClass(v.StaticCanvas, {
                  initialize: function(e, t) {
                    t || (t = {}), this.renderAndResetBound = this.renderAndReset.bind(this), this.requestRenderAllBound = this.requestRenderAll.bind(this), this._initStatic(e, t), this._initInteractive(), this._createCacheCanvas()
                  },
                  uniformScaling: !0,
                  uniScaleKey: "shiftKey",
                  centeredScaling: !1,
                  centeredRotation: !1,
                  centeredKey: "altKey",
                  altActionKey: "shiftKey",
                  interactive: !0,
                  selection: !0,
                  selectionKey: "shiftKey",
                  altSelectionKey: null,
                  selectionColor: "rgba(100, 100, 255, 0.3)",
                  selectionDashArray: [],
                  selectionBorderColor: "rgba(255, 255, 255, 0.3)",
                  selectionLineWidth: 1,
                  selectionFullyContained: !1,
                  hoverCursor: "move",
                  moveCursor: "move",
                  defaultCursor: "default",
                  freeDrawingCursor: "crosshair",
                  notAllowedCursor: "not-allowed",
                  containerClass: "canvas-container",
                  perPixelTargetFind: !1,
                  targetFindTolerance: 0,
                  skipTargetFind: !1,
                  isDrawingMode: !1,
                  preserveObjectStacking: !1,
                  snapAngle: 0,
                  snapThreshold: null,
                  stopContextMenu: !1,
                  fireRightClick: !1,
                  fireMiddleClick: !1,
                  targets: [],
                  enablePointerEvents: !1,
                  _hoveredTarget: null,
                  _hoveredTargets: [],
                  _initInteractive: function() {
                    this._currentTransform = null, this._groupSelector = null, this._initWrapperElement(), this._createUpperCanvas(), this._initEventListeners(), this._initRetinaScaling(), this.freeDrawingBrush = v.PencilBrush && new v
                      .PencilBrush(this), this.calcOffset()
                  },
                  _chooseObjectsToRender: function() {
                    var e, t, n, r = this.getActiveObjects();
                    if (r.length > 0 && !this.preserveObjectStacking) {
                      t = [], n = [];
                      for (var i = 0, o = this._objects.length; i < o; i++) e = this._objects[i], -1 === r.indexOf(e) ? t.push(e) : n.push(e);
                      r.length > 1 && (this._activeObject._objects = n), t.push.apply(t, n)
                    } else t = this._objects;
                    return t
                  },
                  renderAll: function() {
                    !this.contextTopDirty || this._groupSelector || this.isDrawingMode || (this.clearContext(this.contextTop), this.contextTopDirty = !1), this.hasLostContext && (this.renderTopLayer(this.contextTop), this.hasLostContext = !
                      1);
                    var e = this.contextContainer;
                    return this.renderCanvas(e, this._chooseObjectsToRender()), this
                  },
                  renderTopLayer: function(e) {
                    e.save(), this.isDrawingMode && this._isCurrentlyDrawing && (this.freeDrawingBrush && this.freeDrawingBrush._render(), this.contextTopDirty = !0), this.selection && this._groupSelector && (this._drawSelection(e), this
                      .contextTopDirty = !0), e.restore()
                  },
                  renderTop: function() {
                    var e = this.contextTop;
                    return this.clearContext(e), this.renderTopLayer(e), this.fire("after:render"), this
                  },
                  _normalizePointer: function(e, t) {
                    var n = e.calcTransformMatrix(),
                      r = v.util.invertTransform(n),
                      i = this.restorePointerVpt(t);
                    return v.util.transformPoint(i, r)
                  },
                  isTargetTransparent: function(e, t, n) {
                    if (e.shouldCache() && e._cacheCanvas && e !== this._activeObject) {
                      var r = this._normalizePointer(e, {
                          x: t,
                          y: n
                        }),
                        i = Math.max(e.cacheTranslationX + r.x * e.zoomX, 0),
                        o = Math.max(e.cacheTranslationY + r.y * e.zoomY, 0);
                      return v.util.isTransparent(e._cacheContext, Math.round(i), Math.round(o), this.targetFindTolerance)
                    }
                    var a = this.contextCache,
                      s = e.selectionBackgroundColor,
                      l = this.viewportTransform;
                    return e.selectionBackgroundColor = "", this.clearContext(a), a.save(), a.transform(l[0], l[1], l[2], l[3], l[4], l[5]), e.render(a), a.restore(), e.selectionBackgroundColor = s, v.util.isTransparent(a, t, n, this
                      .targetFindTolerance)
                  },
                  _isSelectionKeyPressed: function(e) {
                    return Array.isArray(this.selectionKey) ? !!this.selectionKey.find((function(t) {
                      return !0 === e[t]
                    })) : e[this.selectionKey]
                  },
                  _shouldClearSelection: function(e, t) {
                    var n = this.getActiveObjects(),
                      r = this._activeObject;
                    return !t || t && r && n.length > 1 && -1 === n.indexOf(t) && r !== t && !this._isSelectionKeyPressed(e) || t && !t.evented || t && !t.selectable && r && r !== t
                  },
                  _shouldCenterTransform: function(e, t, n) {
                    var r;
                    if (e) return "scale" === t || "scaleX" === t || "scaleY" === t || "resizing" === t ? r = this.centeredScaling || e.centeredScaling : "rotate" === t && (r = this.centeredRotation || e.centeredRotation), r ? !n : n
                  },
                  _getOriginFromCorner: function(e, t) {
                    var n = {
                      x: e.originX,
                      y: e.originY
                    };
                    return "ml" === t || "tl" === t || "bl" === t ? n.x = "right" : "mr" !== t && "tr" !== t && "br" !== t || (n.x = "left"), "tl" === t || "mt" === t || "tr" === t ? n.y = "bottom" : "bl" !== t && "mb" !== t && "br" !==
                      t || (n.y = "top"), n
                  },
                  _getActionFromCorner: function(e, t, n, r) {
                    if (!t || !e) return "drag";
                    var i = r.controls[t];
                    return i.getActionName(n, i, r)
                  },
                  _setupCurrentTransform: function(e, n, r) {
                    if (n) {
                      var i = this.getPointer(e),
                        o = n.__corner,
                        a = n.controls[o],
                        s = r && o ? a.getActionHandler(e, n, a) : v.controlsUtils.dragHandler,
                        l = this._getActionFromCorner(r, o, e, n),
                        c = this._getOriginFromCorner(n, o),
                        u = e[this.centeredKey],
                        h = {
                          target: n,
                          action: l,
                          actionHandler: s,
                          corner: o,
                          scaleX: n.scaleX,
                          scaleY: n.scaleY,
                          skewX: n.skewX,
                          skewY: n.skewY,
                          offsetX: i.x - n.left,
                          offsetY: i.y - n.top,
                          originX: c.x,
                          originY: c.y,
                          ex: i.x,
                          ey: i.y,
                          lastX: i.x,
                          lastY: i.y,
                          theta: t(n.angle),
                          width: n.width * n.scaleX,
                          shiftKey: e.shiftKey,
                          altKey: u,
                          original: v.util.saveObjectTransform(n)
                        };
                      this._shouldCenterTransform(n, l, u) && (h.originX = "center", h.originY = "center"), h.original.originX = c.x, h.original.originY = c.y, this._currentTransform = h, this._beforeTransform(e)
                    }
                  },
                  setCursor: function(e) {
                    this.upperCanvasEl.style.cursor = e
                  },
                  _drawSelection: function(e) {
                    var t = this._groupSelector,
                      n = new v.Point(t.ex, t.ey),
                      r = v.util.transformPoint(n, this.viewportTransform),
                      i = new v.Point(t.ex + t.left, t.ey + t.top),
                      o = v.util.transformPoint(i, this.viewportTransform),
                      a = Math.min(r.x, o.x),
                      s = Math.min(r.y, o.y),
                      l = Math.max(r.x, o.x),
                      c = Math.max(r.y, o.y),
                      u = this.selectionLineWidth / 2;
                    this.selectionColor && (e.fillStyle = this.selectionColor, e.fillRect(a, s, l - a, c - s)), this.selectionLineWidth && this.selectionBorderColor && (e.lineWidth = this.selectionLineWidth, e.strokeStyle = this
                      .selectionBorderColor, a += u, s += u, l -= u, c -= u, v.Object.prototype._setLineDash.call(this, e, this.selectionDashArray), e.strokeRect(a, s, l - a, c - s))
                  },
                  findTarget: function(e, t) {
                    if (!this.skipTargetFind) {
                      var r, i, o = this.getPointer(e, !0),
                        a = this._activeObject,
                        s = this.getActiveObjects(),
                        l = n(e),
                        c = s.length > 1 && !t || 1 === s.length;
                      if (this.targets = [], c && a._findTargetCorner(o, l)) return a;
                      if (s.length > 1 && !t && a === this._searchPossibleTargets([a], o)) return a;
                      if (1 === s.length && a === this._searchPossibleTargets([a], o)) {
                        if (!this.preserveObjectStacking) return a;
                        r = a, i = this.targets, this.targets = []
                      }
                      var u = this._searchPossibleTargets(this._objects, o);
                      return e[this.altSelectionKey] && u && r && u !== r && (u = r, this.targets = i), u
                    }
                  },
                  _checkTarget: function(e, t, n) {
                    if (t && t.visible && t.evented && t.containsPoint(e)) {
                      if (!this.perPixelTargetFind && !t.perPixelTargetFind || t.isEditing) return !0;
                      if (!this.isTargetTransparent(t, n.x, n.y)) return !0
                    }
                  },
                  _searchPossibleTargets: function(e, t) {
                    for (var n, r, i = e.length; i--;) {
                      var o = e[i],
                        a = o.group ? this._normalizePointer(o.group, t) : t;
                      if (this._checkTarget(a, o, t)) {
                        (n = e[i]).subTargetCheck && n instanceof v.Group && (r = this._searchPossibleTargets(n._objects, t)) && this.targets.push(r);
                        break
                      }
                    }
                    return n
                  },
                  restorePointerVpt: function(e) {
                    return v.util.transformPoint(e, v.util.invertTransform(this.viewportTransform))
                  },
                  getPointer: function(t, n) {
                    if (this._absolutePointer && !n) return this._absolutePointer;
                    if (this._pointer && n) return this._pointer;
                    var r, i = e(t),
                      o = this.upperCanvasEl,
                      a = o.getBoundingClientRect(),
                      s = a.width || 0,
                      l = a.height || 0;
                    s && l || ("top" in a && "bottom" in a && (l = Math.abs(a.top - a.bottom)), "right" in a && "left" in a && (s = Math.abs(a.right - a.left))), this.calcOffset(), i.x = i.x - this._offset.left, i.y = i.y - this._offset
                      .top, n || (i = this.restorePointerVpt(i));
                    var c = this.getRetinaScaling();
                    return 1 !== c && (i.x /= c, i.y /= c), r = 0 === s || 0 === l ? {
                      width: 1,
                      height: 1
                    } : {
                      width: o.width / s,
                      height: o.height / l
                    }, {
                      x: i.x * r.width,
                      y: i.y * r.height
                    }
                  },
                  _createUpperCanvas: function() {
                    var e = this.lowerCanvasEl.className.replace(/\s*lower-canvas\s*/, ""),
                      t = this.lowerCanvasEl,
                      n = this.upperCanvasEl;
                    n ? n.className = "" : (n = this._createCanvasElement(), this.upperCanvasEl = n), v.util.addClass(n, "upper-canvas " + e), this.wrapperEl.appendChild(n), this._copyCanvasStyle(t, n), this._applyCanvasStyle(n), this
                      .contextTop = n.getContext("2d")
                  },
                  getTopContext: function() {
                    return this.contextTop
                  },
                  _createCacheCanvas: function() {
                    this.cacheCanvasEl = this._createCanvasElement(), this.cacheCanvasEl.setAttribute("width", this.width), this.cacheCanvasEl.setAttribute("height", this.height), this.contextCache = this.cacheCanvasEl.getContext("2d")
                  },
                  _initWrapperElement: function() {
                    this.wrapperEl = v.util.wrapElement(this.lowerCanvasEl, "div", {
                      class: this.containerClass
                    }), v.util.setStyle(this.wrapperEl, {
                      width: this.width + "px",
                      height: this.height + "px",
                      position: "relative"
                    }), v.util.makeElementUnselectable(this.wrapperEl)
                  },
                  _applyCanvasStyle: function(e) {
                    var t = this.width || e.width,
                      n = this.height || e.height;
                    v.util.setStyle(e, {
                      position: "absolute",
                      width: t + "px",
                      height: n + "px",
                      left: 0,
                      top: 0,
                      "touch-action": this.allowTouchScrolling ? "manipulation" : "none",
                      "-ms-touch-action": this.allowTouchScrolling ? "manipulation" : "none"
                    }), e.width = t, e.height = n, v.util.makeElementUnselectable(e)
                  },
                  _copyCanvasStyle: function(e, t) {
                    t.style.cssText = e.style.cssText
                  },
                  getSelectionContext: function() {
                    return this.contextTop
                  },
                  getSelectionElement: function() {
                    return this.upperCanvasEl
                  },
                  getActiveObject: function() {
                    return this._activeObject
                  },
                  getActiveObjects: function() {
                    var e = this._activeObject;
                    return e ? "activeSelection" === e.type && e._objects ? e._objects.slice(0) : [e] : []
                  },
                  _onObjectRemoved: function(e) {
                    e === this._activeObject && (this.fire("before:selection:cleared", {
                      target: e
                    }), this._discardActiveObject(), this.fire("selection:cleared", {
                      target: e
                    }), e.fire("deselected")), e === this._hoveredTarget && (this._hoveredTarget = null, this._hoveredTargets = []), this.callSuper("_onObjectRemoved", e)
                  },
                  _fireSelectionEvents: function(e, t) {
                    var n = !1,
                      r = this.getActiveObjects(),
                      i = [],
                      o = [];
                    e.forEach((function(e) {
                      -1 === r.indexOf(e) && (n = !0, e.fire("deselected", {
                        e: t,
                        target: e
                      }), o.push(e))
                    })), r.forEach((function(r) {
                      -1 === e.indexOf(r) && (n = !0, r.fire("selected", {
                        e: t,
                        target: r
                      }), i.push(r))
                    })), e.length > 0 && r.length > 0 ? n && this.fire("selection:updated", {
                      e: t,
                      selected: i,
                      deselected: o
                    }) : r.length > 0 ? this.fire("selection:created", {
                      e: t,
                      selected: i
                    }) : e.length > 0 && this.fire("selection:cleared", {
                      e: t,
                      deselected: o
                    })
                  },
                  setActiveObject: function(e, t) {
                    var n = this.getActiveObjects();
                    return this._setActiveObject(e, t), this._fireSelectionEvents(n, t), this
                  },
                  _setActiveObject: function(e, t) {
                    return this._activeObject !== e && (!!this._discardActiveObject(t, e) && (!e.onSelect({
                      e: t
                    }) && (this._activeObject = e, !0)))
                  },
                  _discardActiveObject: function(e, t) {
                    var n = this._activeObject;
                    if (n) {
                      if (n.onDeselect({
                          e: e,
                          object: t
                        })) return !1;
                      this._activeObject = null
                    }
                    return !0
                  },
                  discardActiveObject: function(e) {
                    var t = this.getActiveObjects(),
                      n = this.getActiveObject();
                    return t.length && this.fire("before:selection:cleared", {
                      target: n,
                      e: e
                    }), this._discardActiveObject(e), this._fireSelectionEvents(t, e), this
                  },
                  dispose: function() {
                    var e = this.wrapperEl;
                    return this.removeListeners(), e.removeChild(this.upperCanvasEl), e.removeChild(this.lowerCanvasEl), this.contextCache = null, this.contextTop = null, ["upperCanvasEl", "cacheCanvasEl"].forEach(function(e) {
                      v.util.cleanUpJsdomNode(this[e]), this[e] = void 0
                    }.bind(this)), e.parentNode && e.parentNode.replaceChild(this.lowerCanvasEl, this.wrapperEl), delete this.wrapperEl, v.StaticCanvas.prototype.dispose.call(this), this
                  },
                  clear: function() {
                    return this.discardActiveObject(), this.clearContext(this.contextTop), this.callSuper("clear")
                  },
                  drawControls: function(e) {
                    var t = this._activeObject;
                    t && t._renderControls(e)
                  },
                  _toObject: function(e, t, n) {
                    var r = this._realizeGroupTransformOnObject(e),
                      i = this.callSuper("_toObject", e, t, n);
                    return this._unwindGroupTransformOnObject(e, r), i
                  },
                  _realizeGroupTransformOnObject: function(e) {
                    if (e.group && "activeSelection" === e.group.type && this._activeObject === e.group) {
                      var t = {};
                      return ["angle", "flipX", "flipY", "left", "scaleX", "scaleY", "skewX", "skewY", "top"].forEach((function(n) {
                        t[n] = e[n]
                      })), v.util.addTransformToObject(e, this._activeObject.calcOwnMatrix()), t
                    }
                    return null
                  },
                  _unwindGroupTransformOnObject: function(e, t) {
                    t && e.set(t)
                  },
                  _setSVGObject: function(e, t, n) {
                    var r = this._realizeGroupTransformOnObject(t);
                    this.callSuper("_setSVGObject", e, t, n), this._unwindGroupTransformOnObject(t, r)
                  },
                  setViewportTransform: function(e) {
                    this.renderOnAddRemove && this._activeObject && this._activeObject.isEditing && this._activeObject.clearContextTop(), v.StaticCanvas.prototype.setViewportTransform.call(this, e)
                  }
                }), v.StaticCanvas) "prototype" !== r && (v.Canvas[r] = v.StaticCanvas[r])
            }(),
            function() {
              var e = v.util.addListener,
                t = v.util.removeListener,
                n = {
                  passive: !1
                };

              function r(e, t) {
                return e.button && e.button === t - 1
              }
              v.util.object.extend(v.Canvas.prototype, {
                mainTouchId: null,
                _initEventListeners: function() {
                  this.removeListeners(), this._bindEvents(), this.addOrRemove(e, "add")
                },
                _getEventPrefix: function() {
                  return this.enablePointerEvents ? "pointer" : "mouse"
                },
                addOrRemove: function(e, t) {
                  var r = this.upperCanvasEl,
                    i = this._getEventPrefix();
                  e(v.window, "resize", this._onResize), e(r, i + "down", this._onMouseDown), e(r, i + "move", this._onMouseMove, n), e(r, i + "out", this._onMouseOut), e(r, i + "enter", this._onMouseEnter), e(r, "wheel", this
                    ._onMouseWheel), e(r, "contextmenu", this._onContextMenu), e(r, "dblclick", this._onDoubleClick), e(r, "dragover", this._onDragOver), e(r, "dragenter", this._onDragEnter), e(r, "dragleave", this._onDragLeave), e(r,
                    "drop", this._onDrop), this.enablePointerEvents || e(r, "touchstart", this._onTouchStart, n), "undefined" != typeof eventjs && t in eventjs && (eventjs[t](r, "gesture", this._onGesture), eventjs[t](r, "drag", this
                    ._onDrag), eventjs[t](r, "orientation", this._onOrientationChange), eventjs[t](r, "shake", this._onShake), eventjs[t](r, "longpress", this._onLongPress))
                },
                removeListeners: function() {
                  this.addOrRemove(t, "remove");
                  var e = this._getEventPrefix();
                  t(v.document, e + "up", this._onMouseUp), t(v.document, "touchend", this._onTouchEnd, n), t(v.document, e + "move", this._onMouseMove, n), t(v.document, "touchmove", this._onMouseMove, n)
                },
                _bindEvents: function() {
                  this.eventsBound || (this._onMouseDown = this._onMouseDown.bind(this), this._onTouchStart = this._onTouchStart.bind(this), this._onMouseMove = this._onMouseMove.bind(this), this._onMouseUp = this._onMouseUp.bind(this),
                    this._onTouchEnd = this._onTouchEnd.bind(this), this._onResize = this._onResize.bind(this), this._onGesture = this._onGesture.bind(this), this._onDrag = this._onDrag.bind(this), this._onShake = this._onShake.bind(
                    this), this._onLongPress = this._onLongPress.bind(this), this._onOrientationChange = this._onOrientationChange.bind(this), this._onMouseWheel = this._onMouseWheel.bind(this), this._onMouseOut = this._onMouseOut.bind(
                      this), this._onMouseEnter = this._onMouseEnter.bind(this), this._onContextMenu = this._onContextMenu.bind(this), this._onDoubleClick = this._onDoubleClick.bind(this), this._onDragOver = this._onDragOver.bind(this),
                    this._onDragEnter = this._simpleEventHandler.bind(this, "dragenter"), this._onDragLeave = this._simpleEventHandler.bind(this, "dragleave"), this._onDrop = this._onDrop.bind(this), this.eventsBound = !0)
                },
                _onGesture: function(e, t) {
                  this.__onTransformGesture && this.__onTransformGesture(e, t)
                },
                _onDrag: function(e, t) {
                  this.__onDrag && this.__onDrag(e, t)
                },
                _onMouseWheel: function(e) {
                  this.__onMouseWheel(e)
                },
                _onMouseOut: function(e) {
                  var t = this._hoveredTarget;
                  this.fire("mouse:out", {
                    target: t,
                    e: e
                  }), this._hoveredTarget = null, t && t.fire("mouseout", {
                    e: e
                  });
                  var n = this;
                  this._hoveredTargets.forEach((function(r) {
                    n.fire("mouse:out", {
                      target: t,
                      e: e
                    }), r && t.fire("mouseout", {
                      e: e
                    })
                  })), this._hoveredTargets = []
                },
                _onMouseEnter: function(e) {
                  this._currentTransform || this.findTarget(e) || (this.fire("mouse:over", {
                    target: null,
                    e: e
                  }), this._hoveredTarget = null, this._hoveredTargets = [])
                },
                _onOrientationChange: function(e, t) {
                  this.__onOrientationChange && this.__onOrientationChange(e, t)
                },
                _onShake: function(e, t) {
                  this.__onShake && this.__onShake(e, t)
                },
                _onLongPress: function(e, t) {
                  this.__onLongPress && this.__onLongPress(e, t)
                },
                _onDragOver: function(e) {
                  e.preventDefault();
                  var t = this._simpleEventHandler("dragover", e);
                  this._fireEnterLeaveEvents(t, e)
                },
                _onDrop: function(e) {
                  return this._simpleEventHandler("drop:before", e), this._simpleEventHandler("drop", e)
                },
                _onContextMenu: function(e) {
                  return this.stopContextMenu && (e.stopPropagation(), e.preventDefault()), !1
                },
                _onDoubleClick: function(e) {
                  this._cacheTransformEventData(e), this._handleEvent(e, "dblclick"), this._resetTransformEventData(e)
                },
                getPointerId: function(e) {
                  var t = e.changedTouches;
                  return t ? t[0] && t[0].identifier : this.enablePointerEvents ? e.pointerId : -1
                },
                _isMainEvent: function(e) {
                  return !0 === e.isPrimary || !1 !== e.isPrimary && ("touchend" === e.type && 0 === e.touches.length || (!e.changedTouches || e.changedTouches[0].identifier === this.mainTouchId))
                },
                _onTouchStart: function(r) {
                  r.preventDefault(), null === this.mainTouchId && (this.mainTouchId = this.getPointerId(r)), this.__onMouseDown(r), this._resetTransformEventData();
                  var i = this.upperCanvasEl,
                    o = this._getEventPrefix();
                  e(v.document, "touchend", this._onTouchEnd, n), e(v.document, "touchmove", this._onMouseMove, n), t(i, o + "down", this._onMouseDown)
                },
                _onMouseDown: function(r) {
                  this.__onMouseDown(r), this._resetTransformEventData();
                  var i = this.upperCanvasEl,
                    o = this._getEventPrefix();
                  t(i, o + "move", this._onMouseMove, n), e(v.document, o + "up", this._onMouseUp), e(v.document, o + "move", this._onMouseMove, n)
                },
                _onTouchEnd: function(r) {
                  if (!(r.touches.length > 0)) {
                    this.__onMouseUp(r), this._resetTransformEventData(), this.mainTouchId = null;
                    var i = this._getEventPrefix();
                    t(v.document, "touchend", this._onTouchEnd, n), t(v.document, "touchmove", this._onMouseMove, n);
                    var o = this;
                    this._willAddMouseDown && clearTimeout(this._willAddMouseDown), this._willAddMouseDown = setTimeout((function() {
                      e(o.upperCanvasEl, i + "down", o._onMouseDown), o._willAddMouseDown = 0
                    }), 400)
                  }
                },
                _onMouseUp: function(r) {
                  this.__onMouseUp(r), this._resetTransformEventData();
                  var i = this.upperCanvasEl,
                    o = this._getEventPrefix();
                  this._isMainEvent(r) && (t(v.document, o + "up", this._onMouseUp), t(v.document, o + "move", this._onMouseMove, n), e(i, o + "move", this._onMouseMove, n))
                },
                _onMouseMove: function(e) {
                  !this.allowTouchScrolling && e.preventDefault && e.preventDefault(), this.__onMouseMove(e)
                },
                _onResize: function() {
                  this.calcOffset()
                },
                _shouldRender: function(e) {
                  var t = this._activeObject;
                  return !!(!!t != !!e || t && e && t !== e) || (t && t.isEditing, !1)
                },
                __onMouseUp: function(e) {
                  var t, n = this._currentTransform,
                    i = this._groupSelector,
                    o = !1,
                    a = !i || 0 === i.left && 0 === i.top;
                  if (this._cacheTransformEventData(e), t = this._target, this._handleEvent(e, "up:before"), r(e, 3)) this.fireRightClick && this._handleEvent(e, "up", 3, a);
                  else {
                    if (r(e, 2)) return this.fireMiddleClick && this._handleEvent(e, "up", 2, a), void this._resetTransformEventData();
                    if (this.isDrawingMode && this._isCurrentlyDrawing) this._onMouseUpInDrawingMode(e);
                    else if (this._isMainEvent(e)) {
                      if (n && (this._finalizeCurrentTransform(e), o = n.actionPerformed), !a) {
                        var s = t === this._activeObject;
                        this._maybeGroupObjects(e), o || (o = this._shouldRender(t) || !s && t === this._activeObject)
                      }
                      var l, c;
                      if (t) {
                        if (l = t._findTargetCorner(this.getPointer(e, !0), v.util.isTouchEvent(e)), t.selectable && t !== this._activeObject && "up" === t.activeOn) this.setActiveObject(t, e), o = !0;
                        else {
                          var u = t.controls[l],
                            h = u && u.getMouseUpHandler(e, t, u);
                          h && h(e, n, (c = this.getPointer(e)).x, c.y)
                        }
                        t.isMoving = !1
                      }
                      if (n && (n.target !== t || n.corner !== l)) {
                        var p = n.target && n.target.controls[n.corner],
                          d = p && p.getMouseUpHandler(e, t, u);
                        c = c || this.getPointer(e), d && d(e, n, c.x, c.y)
                      }
                      this._setCursorFromEvent(e, t), this._handleEvent(e, "up", 1, a), this._groupSelector = null, this._currentTransform = null, t && (t.__corner = 0), o ? this.requestRenderAll() : a || this.renderTop()
                    }
                  }
                },
                _simpleEventHandler: function(e, t) {
                  var n = this.findTarget(t),
                    r = this.targets,
                    i = {
                      e: t,
                      target: n,
                      subTargets: r
                    };
                  if (this.fire(e, i), n && n.fire(e, i), !r) return n;
                  for (var o = 0; o < r.length; o++) r[o].fire(e, i);
                  return n
                },
                _handleEvent: function(e, t, n, r) {
                  var i = this._target,
                    o = this.targets || [],
                    a = {
                      e: e,
                      target: i,
                      subTargets: o,
                      button: n || 1,
                      isClick: r || !1,
                      pointer: this._pointer,
                      absolutePointer: this._absolutePointer,
                      transform: this._currentTransform
                    };
                  "up" === t && (a.currentTarget = this.findTarget(e), a.currentSubTargets = this.targets), this.fire("mouse:" + t, a), i && i.fire("mouse" + t, a);
                  for (var s = 0; s < o.length; s++) o[s].fire("mouse" + t, a)
                },
                _finalizeCurrentTransform: function(e) {
                  var t = this._currentTransform,
                    n = t.target,
                    r = {
                      e: e,
                      target: n,
                      transform: t,
                      action: t.action
                    };
                  n._scaling && (n._scaling = !1), n.setCoords(), (t.actionPerformed || this.stateful && n.hasStateChanged()) && this._fire("modified", r)
                },
                _onMouseDownInDrawingMode: function(e) {
                  this._isCurrentlyDrawing = !0, this.getActiveObject() && this.discardActiveObject(e).requestRenderAll();
                  var t = this.getPointer(e);
                  this.freeDrawingBrush.onMouseDown(t, {
                    e: e,
                    pointer: t
                  }), this._handleEvent(e, "down")
                },
                _onMouseMoveInDrawingMode: function(e) {
                  if (this._isCurrentlyDrawing) {
                    var t = this.getPointer(e);
                    this.freeDrawingBrush.onMouseMove(t, {
                      e: e,
                      pointer: t
                    })
                  }
                  this.setCursor(this.freeDrawingCursor), this._handleEvent(e, "move")
                },
                _onMouseUpInDrawingMode: function(e) {
                  var t = this.getPointer(e);
                  this._isCurrentlyDrawing = this.freeDrawingBrush.onMouseUp({
                    e: e,
                    pointer: t
                  }), this._handleEvent(e, "up")
                },
                __onMouseDown: function(e) {
                  this._cacheTransformEventData(e), this._handleEvent(e, "down:before");
                  var t = this._target;
                  if (r(e, 3)) this.fireRightClick && this._handleEvent(e, "down", 3);
                  else if (r(e, 2)) this.fireMiddleClick && this._handleEvent(e, "down", 2);
                  else if (this.isDrawingMode) this._onMouseDownInDrawingMode(e);
                  else if (this._isMainEvent(e) && !this._currentTransform) {
                    var n = this._pointer;
                    this._previousPointer = n;
                    var i = this._shouldRender(t),
                      o = this._shouldGroup(e, t);
                    if (this._shouldClearSelection(e, t) ? this.discardActiveObject(e) : o && (this._handleGrouping(e, t), t = this._activeObject), !this.selection || t && (t.selectable || t.isEditing || t === this._activeObject) || (this
                        ._groupSelector = {
                          ex: this._absolutePointer.x,
                          ey: this._absolutePointer.y,
                          top: 0,
                          left: 0
                        }), t) {
                      var a = t === this._activeObject;
                      t.selectable && "down" === t.activeOn && this.setActiveObject(t, e);
                      var s = t._findTargetCorner(this.getPointer(e, !0), v.util.isTouchEvent(e));
                      if (t.__corner = s, t === this._activeObject && (s || !o)) {
                        this._setupCurrentTransform(e, t, a);
                        var l = t.controls[s],
                          c = (n = this.getPointer(e), l && l.getMouseDownHandler(e, t, l));
                        c && c(e, this._currentTransform, n.x, n.y)
                      }
                    }
                    this._handleEvent(e, "down"), (i || o) && this.requestRenderAll()
                  }
                },
                _resetTransformEventData: function() {
                  this._target = null, this._pointer = null, this._absolutePointer = null
                },
                _cacheTransformEventData: function(e) {
                  this._resetTransformEventData(), this._pointer = this.getPointer(e, !0), this._absolutePointer = this.restorePointerVpt(this._pointer), this._target = this._currentTransform ? this._currentTransform.target : this
                    .findTarget(e) || null
                },
                _beforeTransform: function(e) {
                  var t = this._currentTransform;
                  this.stateful && t.target.saveState(), this.fire("before:transform", {
                    e: e,
                    transform: t
                  })
                },
                __onMouseMove: function(e) {
                  var t, n;
                  if (this._handleEvent(e, "move:before"), this._cacheTransformEventData(e), this.isDrawingMode) this._onMouseMoveInDrawingMode(e);
                  else if (this._isMainEvent(e)) {
                    var r = this._groupSelector;
                    r ? (n = this._absolutePointer, r.left = n.x - r.ex, r.top = n.y - r.ey, this.renderTop()) : this._currentTransform ? this._transformObject(e) : (t = this.findTarget(e) || null, this._setCursorFromEvent(e, t), this
                      ._fireOverOutEvents(t, e)), this._handleEvent(e, "move"), this._resetTransformEventData()
                  }
                },
                _fireOverOutEvents: function(e, t) {
                  var n = this._hoveredTarget,
                    r = this._hoveredTargets,
                    i = this.targets,
                    o = Math.max(r.length, i.length);
                  this.fireSyntheticInOutEvents(e, t, {
                    oldTarget: n,
                    evtOut: "mouseout",
                    canvasEvtOut: "mouse:out",
                    evtIn: "mouseover",
                    canvasEvtIn: "mouse:over"
                  });
                  for (var a = 0; a < o; a++) this.fireSyntheticInOutEvents(i[a], t, {
                    oldTarget: r[a],
                    evtOut: "mouseout",
                    evtIn: "mouseover"
                  });
                  this._hoveredTarget = e, this._hoveredTargets = this.targets.concat()
                },
                _fireEnterLeaveEvents: function(e, t) {
                  var n = this._draggedoverTarget,
                    r = this._hoveredTargets,
                    i = this.targets,
                    o = Math.max(r.length, i.length);
                  this.fireSyntheticInOutEvents(e, t, {
                    oldTarget: n,
                    evtOut: "dragleave",
                    evtIn: "dragenter"
                  });
                  for (var a = 0; a < o; a++) this.fireSyntheticInOutEvents(i[a], t, {
                    oldTarget: r[a],
                    evtOut: "dragleave",
                    evtIn: "dragenter"
                  });
                  this._draggedoverTarget = e
                },
                fireSyntheticInOutEvents: function(e, t, n) {
                  var r, i, o, a = n.oldTarget,
                    s = a !== e,
                    l = n.canvasEvtIn,
                    c = n.canvasEvtOut;
                  s && (r = {
                    e: t,
                    target: e,
                    previousTarget: a
                  }, i = {
                    e: t,
                    target: a,
                    nextTarget: e
                  }), o = e && s, a && s && (c && this.fire(c, i), a.fire(n.evtOut, i)), o && (l && this.fire(l, r), e.fire(n.evtIn, r))
                },
                __onMouseWheel: function(e) {
                  this._cacheTransformEventData(e), this._handleEvent(e, "wheel"), this._resetTransformEventData()
                },
                _transformObject: function(e) {
                  var t = this.getPointer(e),
                    n = this._currentTransform;
                  n.reset = !1, n.shiftKey = e.shiftKey, n.altKey = e[this.centeredKey], this._performTransformAction(e, n, t), n.actionPerformed && this.requestRenderAll()
                },
                _performTransformAction: function(e, t, n) {
                  var r = n.x,
                    i = n.y,
                    o = t.action,
                    a = !1,
                    s = t.actionHandler;
                  s && (a = s(e, t, r, i)), "drag" === o && a && (t.target.isMoving = !0, this.setCursor(t.target.moveCursor || this.moveCursor)), t.actionPerformed = t.actionPerformed || a
                },
                _fire: v.controlsUtils.fireEvent,
                _setCursorFromEvent: function(e, t) {
                  if (!t) return this.setCursor(this.defaultCursor), !1;
                  var n = t.hoverCursor || this.hoverCursor,
                    r = this._activeObject && "activeSelection" === this._activeObject.type ? this._activeObject : null,
                    i = (!r || !r.contains(t)) && t._findTargetCorner(this.getPointer(e, !0));
                  i ? this.setCursor(this.getCornerCursor(i, t, e)) : (t.subTargetCheck && this.targets.concat().reverse().map((function(e) {
                    n = e.hoverCursor || n
                  })), this.setCursor(n))
                },
                getCornerCursor: function(e, t, n) {
                  var r = t.controls[e];
                  return r.cursorStyleHandler(n, r, t)
                }
              })
            }(),
            function() {
              var e = Math.min,
                t = Math.max;
              v.util.object.extend(v.Canvas.prototype, {
                _shouldGroup: function(e, t) {
                  var n = this._activeObject;
                  return n && this._isSelectionKeyPressed(e) && t && t.selectable && this.selection && (n !== t || "activeSelection" === n.type) && !t.onSelect({
                    e: e
                  })
                },
                _handleGrouping: function(e, t) {
                  var n = this._activeObject;
                  n.__corner || (t !== n || (t = this.findTarget(e, !0)) && t.selectable) && (n && "activeSelection" === n.type ? this._updateActiveSelection(t, e) : this._createActiveSelection(t, e))
                },
                _updateActiveSelection: function(e, t) {
                  var n = this._activeObject,
                    r = n._objects.slice(0);
                  n.contains(e) ? (n.removeWithUpdate(e), this._hoveredTarget = e, this._hoveredTargets = this.targets.concat(), 1 === n.size() && this._setActiveObject(n.item(0), t)) : (n.addWithUpdate(e), this._hoveredTarget = n, this
                    ._hoveredTargets = this.targets.concat()), this._fireSelectionEvents(r, t)
                },
                _createActiveSelection: function(e, t) {
                  var n = this.getActiveObjects(),
                    r = this._createGroup(e);
                  this._hoveredTarget = r, this._setActiveObject(r, t), this._fireSelectionEvents(n, t)
                },
                _createGroup: function(e) {
                  var t = this._objects,
                    n = t.indexOf(this._activeObject) < t.indexOf(e) ? [this._activeObject, e] : [e, this._activeObject];
                  return this._activeObject.isEditing && this._activeObject.exitEditing(), new v.ActiveSelection(n, {
                    canvas: this
                  })
                },
                _groupSelectedObjects: function(e) {
                  var t, n = this._collectObjects(e);
                  1 === n.length ? this.setActiveObject(n[0], e) : n.length > 1 && (t = new v.ActiveSelection(n.reverse(), {
                    canvas: this
                  }), this.setActiveObject(t, e))
                },
                _collectObjects: function(n) {
                  for (var r, i = [], o = this._groupSelector.ex, a = this._groupSelector.ey, s = o + this._groupSelector.left, l = a + this._groupSelector.top, c = new v.Point(e(o, s), e(a, l)), u = new v.Point(t(o, s), t(a, l)), h = !this
                      .selectionFullyContained, p = o === s && a === l, d = this._objects.length; d-- && !((r = this._objects[d]) && r.selectable && r.visible && (h && r.intersectsWithRect(c, u, !0) || r.isContainedWithinRect(c, u, !0) ||
                      h && r.containsPoint(c, null, !0) || h && r.containsPoint(u, null, !0)) && (i.push(r), p)););
                  return i.length > 1 && (i = i.filter((function(e) {
                    return !e.onSelect({
                      e: n
                    })
                  }))), i
                },
                _maybeGroupObjects: function(e) {
                  this.selection && this._groupSelector && this._groupSelectedObjects(e), this.setCursor(this.defaultCursor), this._groupSelector = null
                }
              })
            }(), v.util.object.extend(v.StaticCanvas.prototype, {
              toDataURL: function(e) {
                e || (e = {});
                var t = e.format || "png",
                  n = e.quality || 1,
                  r = (e.multiplier || 1) * (e.enableRetinaScaling ? this.getRetinaScaling() : 1),
                  i = this.toCanvasElement(r, e);
                return v.util.toDataURL(i, t, n)
              },
              toCanvasElement: function(e, t) {
                e = e || 1;
                var n = ((t = t || {}).width || this.width) * e,
                  r = (t.height || this.height) * e,
                  i = this.getZoom(),
                  o = this.width,
                  a = this.height,
                  s = i * e,
                  l = this.viewportTransform,
                  c = (l[4] - (t.left || 0)) * e,
                  u = (l[5] - (t.top || 0)) * e,
                  h = this.interactive,
                  p = [s, 0, 0, s, c, u],
                  d = this.enableRetinaScaling,
                  f = v.util.createCanvasElement(),
                  g = this.contextTop;
                return f.width = n, f.height = r, this.contextTop = null, this.enableRetinaScaling = !1, this.interactive = !1, this.viewportTransform = p, this.width = n, this.height = r, this.calcViewportBoundaries(), this.renderCanvas(f
                  .getContext("2d"), this._objects), this.viewportTransform = l, this.width = o, this.height = a, this.calcViewportBoundaries(), this.interactive = h, this.enableRetinaScaling = d, this.contextTop = g, f
              }
            }), v.util.object.extend(v.StaticCanvas.prototype, {
              loadFromJSON: function(e, t, n) {
                if (e) {
                  var r = "string" == typeof e ? JSON.parse(e) : v.util.object.clone(e),
                    i = this,
                    o = r.clipPath,
                    a = this.renderOnAddRemove;
                  return this.renderOnAddRemove = !1, delete r.clipPath, this._enlivenObjects(r.objects, (function(e) {
                    i.clear(), i._setBgOverlay(r, (function() {
                      o ? i._enlivenObjects([o], (function(n) {
                        i.clipPath = n[0], i.__setupCanvas.call(i, r, e, a, t)
                      })) : i.__setupCanvas.call(i, r, e, a, t)
                    }))
                  }), n), this
                }
              },
              __setupCanvas: function(e, t, n, r) {
                var i = this;
                t.forEach((function(e, t) {
                  i.insertAt(e, t)
                })), this.renderOnAddRemove = n, delete e.objects, delete e.backgroundImage, delete e.overlayImage, delete e.background, delete e.overlay, this._setOptions(e), this.renderAll(), r && r()
              },
              _setBgOverlay: function(e, t) {
                var n = {
                  backgroundColor: !1,
                  overlayColor: !1,
                  backgroundImage: !1,
                  overlayImage: !1
                };
                if (e.backgroundImage || e.overlayImage || e.background || e.overlay) {
                  var r = function() {
                    n.backgroundImage && n.overlayImage && n.backgroundColor && n.overlayColor && t && t()
                  };
                  this.__setBgOverlay("backgroundImage", e.backgroundImage, n, r), this.__setBgOverlay("overlayImage", e.overlayImage, n, r), this.__setBgOverlay("backgroundColor", e.background, n, r), this.__setBgOverlay("overlayColor", e
                    .overlay, n, r)
                } else t && t()
              },
              __setBgOverlay: function(e, t, n, r) {
                var i = this;
                if (!t) return n[e] = !0, void(r && r());
                "backgroundImage" === e || "overlayImage" === e ? v.util.enlivenObjects([t], (function(t) {
                  i[e] = t[0], n[e] = !0, r && r()
                })) : this["set" + v.util.string.capitalize(e, !0)](t, (function() {
                  n[e] = !0, r && r()
                }))
              },
              _enlivenObjects: function(e, t, n) {
                e && 0 !== e.length ? v.util.enlivenObjects(e, (function(e) {
                  t && t(e)
                }), null, n) : t && t([])
              },
              _toDataURL: function(e, t) {
                this.clone((function(n) {
                  t(n.toDataURL(e))
                }))
              },
              _toDataURLWithMultiplier: function(e, t, n) {
                this.clone((function(r) {
                  n(r.toDataURLWithMultiplier(e, t))
                }))
              },
              clone: function(e, t) {
                var n = JSON.stringify(this.toJSON(t));
                this.cloneWithoutData((function(t) {
                  t.loadFromJSON(n, (function() {
                    e && e(t)
                  }))
                }))
              },
              cloneWithoutData: function(e) {
                var t = v.util.createCanvasElement();
                t.width = this.width, t.height = this.height;
                var n = new v.Canvas(t);
                this.backgroundImage ? (n.setBackgroundImage(this.backgroundImage.src, (function() {
                  n.renderAll(), e && e(n)
                })), n.backgroundImageOpacity = this.backgroundImageOpacity, n.backgroundImageStretch = this.backgroundImageStretch) : e && e(n)
              }
            }),
            function(e) {
              var t = e.fabric || (e.fabric = {}),
                n = t.util.object.extend,
                r = t.util.object.clone,
                i = t.util.toFixed,
                o = t.util.string.capitalize,
                a = t.util.degreesToRadians,
                s = !t.isLikelyNode;
              t.Object || (t.Object = t.util.createClass(t.CommonMethods, {
                type: "object",
                originX: "left",
                originY: "top",
                top: 0,
                left: 0,
                width: 0,
                height: 0,
                scaleX: 1,
                scaleY: 1,
                flipX: !1,
                flipY: !1,
                opacity: 1,
                angle: 0,
                skewX: 0,
                skewY: 0,
                cornerSize: 13,
                touchCornerSize: 24,
                transparentCorners: !0,
                hoverCursor: null,
                moveCursor: null,
                padding: 0,
                borderColor: "rgb(178,204,255)",
                borderDashArray: null,
                cornerColor: "rgb(178,204,255)",
                cornerStrokeColor: null,
                cornerStyle: "rect",
                cornerDashArray: null,
                centeredScaling: !1,
                centeredRotation: !0,
                fill: "rgb(0,0,0)",
                fillRule: "nonzero",
                globalCompositeOperation: "source-over",
                backgroundColor: "",
                selectionBackgroundColor: "",
                stroke: null,
                strokeWidth: 1,
                strokeDashArray: null,
                strokeDashOffset: 0,
                strokeLineCap: "butt",
                strokeLineJoin: "miter",
                strokeMiterLimit: 4,
                shadow: null,
                borderOpacityWhenMoving: .4,
                borderScaleFactor: 1,
                minScaleLimit: 0,
                selectable: !0,
                evented: !0,
                visible: !0,
                hasControls: !0,
                hasBorders: !0,
                perPixelTargetFind: !1,
                includeDefaultValues: !0,
                lockMovementX: !1,
                lockMovementY: !1,
                lockRotation: !1,
                lockScalingX: !1,
                lockScalingY: !1,
                lockSkewingX: !1,
                lockSkewingY: !1,
                lockScalingFlip: !1,
                excludeFromExport: !1,
                objectCaching: s,
                statefullCache: !1,
                noScaleCache: !0,
                strokeUniform: !1,
                dirty: !0,
                __corner: 0,
                paintFirst: "fill",
                activeOn: "down",
                stateProperties: "top left width height scaleX scaleY flipX flipY originX originY transformMatrix stroke strokeWidth strokeDashArray strokeLineCap strokeDashOffset strokeLineJoin strokeMiterLimit angle opacity fill globalCompositeOperation shadow visible backgroundColor skewX skewY fillRule paintFirst clipPath strokeUniform"
                  .split(" "),
                cacheProperties: "fill stroke strokeWidth strokeDashArray width height paintFirst strokeUniform strokeLineCap strokeDashOffset strokeLineJoin strokeMiterLimit backgroundColor clipPath".split(" "),
                colorProperties: "fill stroke backgroundColor".split(" "),
                clipPath: void 0,
                inverted: !1,
                absolutePositioned: !1,
                initialize: function(e) {
                  e && this.setOptions(e)
                },
                _createCacheCanvas: function() {
                  this._cacheProperties = {}, this._cacheCanvas = t.util.createCanvasElement(), this._cacheContext = this._cacheCanvas.getContext("2d"), this._updateCacheCanvas(), this.dirty = !0
                },
                _limitCacheSize: function(e) {
                  var n = t.perfLimitSizeTotal,
                    r = e.width,
                    i = e.height,
                    o = t.maxCacheSideLimit,
                    a = t.minCacheSideLimit;
                  if (r <= o && i <= o && r * i <= n) return r < a && (e.width = a), i < a && (e.height = a), e;
                  var s = r / i,
                    l = t.util.limitDimsByArea(s, n),
                    c = t.util.capValue,
                    u = c(a, l.x, o),
                    h = c(a, l.y, o);
                  return r > u && (e.zoomX /= r / u, e.width = u, e.capped = !0), i > h && (e.zoomY /= i / h, e.height = h, e.capped = !0), e
                },
                _getCacheCanvasDimensions: function() {
                  var e = this.getTotalObjectScaling(),
                    t = this._getTransformedDimensions(0, 0),
                    n = t.x * e.scaleX / this.scaleX,
                    r = t.y * e.scaleY / this.scaleY;
                  return {
                    width: n + 2,
                    height: r + 2,
                    zoomX: e.scaleX,
                    zoomY: e.scaleY,
                    x: n,
                    y: r
                  }
                },
                _updateCacheCanvas: function() {
                  var e = this.canvas;
                  if (this.noScaleCache && e && e._currentTransform) {
                    var n = e._currentTransform.target,
                      r = e._currentTransform.action;
                    if (this === n && r.slice && "scale" === r.slice(0, 5)) return !1
                  }
                  var i, o, a = this._cacheCanvas,
                    s = this._limitCacheSize(this._getCacheCanvasDimensions()),
                    l = t.minCacheSideLimit,
                    c = s.width,
                    u = s.height,
                    h = s.zoomX,
                    p = s.zoomY,
                    d = c !== this.cacheWidth || u !== this.cacheHeight,
                    f = this.zoomX !== h || this.zoomY !== p,
                    g = d || f,
                    m = 0,
                    v = 0,
                    _ = !1;
                  if (d) {
                    var b = this._cacheCanvas.width,
                      y = this._cacheCanvas.height,
                      w = c > b || u > y;
                    _ = w || (c < .9 * b || u < .9 * y) && b > l && y > l, w && !s.capped && (c > l || u > l) && (m = .1 * c, v = .1 * u)
                  }
                  return this instanceof t.Text && this.path && (g = !0, _ = !0, m += this.getHeightOfLine(0) * this.zoomX, v += this.getHeightOfLine(0) * this.zoomY), !!g && (_ ? (a.width = Math.ceil(c + m), a.height = Math.ceil(u +
                    v)) : (this._cacheContext.setTransform(1, 0, 0, 1, 0, 0), this._cacheContext.clearRect(0, 0, a.width, a.height)), i = s.x / 2, o = s.y / 2, this.cacheTranslationX = Math.round(a.width / 2 - i) + i, this
                    .cacheTranslationY = Math.round(a.height / 2 - o) + o, this.cacheWidth = c, this.cacheHeight = u, this._cacheContext.translate(this.cacheTranslationX, this.cacheTranslationY), this._cacheContext.scale(h, p), this
                    .zoomX = h, this.zoomY = p, !0)
                },
                setOptions: function(e) {
                  this._setOptions(e), this._initGradient(e.fill, "fill"), this._initGradient(e.stroke, "stroke"), this._initPattern(e.fill, "fill"), this._initPattern(e.stroke, "stroke")
                },
                transform: function(e) {
                  var t = this.group && !this.group._transformDone || this.group && this.canvas && e === this.canvas.contextTop,
                    n = this.calcTransformMatrix(!t);
                  e.transform(n[0], n[1], n[2], n[3], n[4], n[5])
                },
                toObject: function(e) {
                  var n = t.Object.NUM_FRACTION_DIGITS,
                    r = {
                      type: this.type,
                      version: t.version,
                      originX: this.originX,
                      originY: this.originY,
                      left: i(this.left, n),
                      top: i(this.top, n),
                      width: i(this.width, n),
                      height: i(this.height, n),
                      fill: this.fill && this.fill.toObject ? this.fill.toObject() : this.fill,
                      stroke: this.stroke && this.stroke.toObject ? this.stroke.toObject() : this.stroke,
                      strokeWidth: i(this.strokeWidth, n),
                      strokeDashArray: this.strokeDashArray ? this.strokeDashArray.concat() : this.strokeDashArray,
                      strokeLineCap: this.strokeLineCap,
                      strokeDashOffset: this.strokeDashOffset,
                      strokeLineJoin: this.strokeLineJoin,
                      strokeUniform: this.strokeUniform,
                      strokeMiterLimit: i(this.strokeMiterLimit, n),
                      scaleX: i(this.scaleX, n),
                      scaleY: i(this.scaleY, n),
                      angle: i(this.angle, n),
                      flipX: this.flipX,
                      flipY: this.flipY,
                      opacity: i(this.opacity, n),
                      shadow: this.shadow && this.shadow.toObject ? this.shadow.toObject() : this.shadow,
                      visible: this.visible,
                      backgroundColor: this.backgroundColor,
                      fillRule: this.fillRule,
                      paintFirst: this.paintFirst,
                      globalCompositeOperation: this.globalCompositeOperation,
                      skewX: i(this.skewX, n),
                      skewY: i(this.skewY, n)
                    };
                  return this.clipPath && !this.clipPath.excludeFromExport && (r.clipPath = this.clipPath.toObject(e), r.clipPath.inverted = this.clipPath.inverted, r.clipPath.absolutePositioned = this.clipPath.absolutePositioned), t.util
                    .populateWithProperties(this, r, e), this.includeDefaultValues || (r = this._removeDefaultValues(r)), r
                },
                toDatalessObject: function(e) {
                  return this.toObject(e)
                },
                _removeDefaultValues: function(e) {
                  var n = t.util.getKlass(e.type).prototype;
                  return n.stateProperties.forEach((function(t) {
                    "left" !== t && "top" !== t && (e[t] === n[t] && delete e[t], Array.isArray(e[t]) && Array.isArray(n[t]) && 0 === e[t].length && 0 === n[t].length && delete e[t])
                  })), e
                },
                toString: function() {
                  return "#<fabric." + o(this.type) + ">"
                },
                getObjectScaling: function() {
                  if (!this.group) return {
                    scaleX: this.scaleX,
                    scaleY: this.scaleY
                  };
                  var e = t.util.qrDecompose(this.calcTransformMatrix());
                  return {
                    scaleX: Math.abs(e.scaleX),
                    scaleY: Math.abs(e.scaleY)
                  }
                },
                getTotalObjectScaling: function() {
                  var e = this.getObjectScaling(),
                    t = e.scaleX,
                    n = e.scaleY;
                  if (this.canvas) {
                    var r = this.canvas.getZoom(),
                      i = this.canvas.getRetinaScaling();
                    t *= r * i, n *= r * i
                  }
                  return {
                    scaleX: t,
                    scaleY: n
                  }
                },
                getObjectOpacity: function() {
                  var e = this.opacity;
                  return this.group && (e *= this.group.getObjectOpacity()), e
                },
                _set: function(e, n) {
                  var r = "scaleX" === e || "scaleY" === e,
                    i = this[e] !== n,
                    o = !1;
                  return r && (n = this._constrainScale(n)), "scaleX" === e && n < 0 ? (this.flipX = !this.flipX, n *= -1) : "scaleY" === e && n < 0 ? (this.flipY = !this.flipY, n *= -1) : "shadow" !== e || !n || n instanceof t.Shadow ?
                    "dirty" === e && this.group && this.group.set("dirty", n) : n = new t.Shadow(n), this[e] = n, i && (o = this.group && this.group.isOnACache(), this.cacheProperties.indexOf(e) > -1 ? (this.dirty = !0, o && this.group
                      .set("dirty", !0)) : o && this.stateProperties.indexOf(e) > -1 && this.group.set("dirty", !0)), this
                },
                setOnGroup: function() {},
                getViewportTransform: function() {
                  return this.canvas && this.canvas.viewportTransform ? this.canvas.viewportTransform : t.iMatrix.concat()
                },
                isNotVisible: function() {
                  return 0 === this.opacity || !this.width && !this.height && 0 === this.strokeWidth || !this.visible
                },
                render: function(e) {
                  this.isNotVisible() || this.canvas && this.canvas.skipOffscreen && !this.group && !this.isOnScreen() || (e.save(), this._setupCompositeOperation(e), this.drawSelectionBackground(e), this.transform(e), this._setOpacity(
                    e), this._setShadow(e, this), this.shouldCache() ? (this.renderCache(), this.drawCacheOnCanvas(e)) : (this._removeCacheCanvas(), this.dirty = !1, this.drawObject(e), this.objectCaching && this.statefullCache && this
                      .saveState({
                        propertySet: "cacheProperties"
                      })), e.restore())
                },
                renderCache: function(e) {
                  e = e || {}, this._cacheCanvas && this._cacheContext || this._createCacheCanvas(), this.isCacheDirty() && (this.statefullCache && this.saveState({
                    propertySet: "cacheProperties"
                  }), this.drawObject(this._cacheContext, e.forClipping), this.dirty = !1)
                },
                _removeCacheCanvas: function() {
                  this._cacheCanvas = null, this._cacheContext = null, this.cacheWidth = 0, this.cacheHeight = 0
                },
                hasStroke: function() {
                  return this.stroke && "transparent" !== this.stroke && 0 !== this.strokeWidth
                },
                hasFill: function() {
                  return this.fill && "transparent" !== this.fill
                },
                needsItsOwnCache: function() {
                  return !("stroke" !== this.paintFirst || !this.hasFill() || !this.hasStroke() || "object" != typeof this.shadow) || !!this.clipPath
                },
                shouldCache: function() {
                  return this.ownCaching = this.needsItsOwnCache() || this.objectCaching && (!this.group || !this.group.isOnACache()), this.ownCaching
                },
                willDrawShadow: function() {
                  return !!this.shadow && (0 !== this.shadow.offsetX || 0 !== this.shadow.offsetY)
                },
                drawClipPathOnCache: function(e, n) {
                  if (e.save(), n.inverted ? e.globalCompositeOperation = "destination-out" : e.globalCompositeOperation = "destination-in", n.absolutePositioned) {
                    var r = t.util.invertTransform(this.calcTransformMatrix());
                    e.transform(r[0], r[1], r[2], r[3], r[4], r[5])
                  }
                  n.transform(e), e.scale(1 / n.zoomX, 1 / n.zoomY), e.drawImage(n._cacheCanvas, -n.cacheTranslationX, -n.cacheTranslationY), e.restore()
                },
                drawObject: function(e, t) {
                  var n = this.fill,
                    r = this.stroke;
                  t ? (this.fill = "black", this.stroke = "", this._setClippingProperties(e)) : this._renderBackground(e), this._render(e), this._drawClipPath(e, this.clipPath), this.fill = n, this.stroke = r
                },
                _drawClipPath: function(e, t) {
                  t && (t.canvas = this.canvas, t.shouldCache(), t._transformDone = !0, t.renderCache({
                    forClipping: !0
                  }), this.drawClipPathOnCache(e, t))
                },
                drawCacheOnCanvas: function(e) {
                  e.scale(1 / this.zoomX, 1 / this.zoomY), e.drawImage(this._cacheCanvas, -this.cacheTranslationX, -this.cacheTranslationY)
                },
                isCacheDirty: function(e) {
                  if (this.isNotVisible()) return !1;
                  if (this._cacheCanvas && this._cacheContext && !e && this._updateCacheCanvas()) return !0;
                  if (this.dirty || this.clipPath && this.clipPath.absolutePositioned || this.statefullCache && this.hasStateChanged("cacheProperties")) {
                    if (this._cacheCanvas && this._cacheContext && !e) {
                      var t = this.cacheWidth / this.zoomX,
                        n = this.cacheHeight / this.zoomY;
                      this._cacheContext.clearRect(-t / 2, -n / 2, t, n)
                    }
                    return !0
                  }
                  return !1
                },
                _renderBackground: function(e) {
                  if (this.backgroundColor) {
                    var t = this._getNonTransformedDimensions();
                    e.fillStyle = this.backgroundColor, e.fillRect(-t.x / 2, -t.y / 2, t.x, t.y), this._removeShadow(e)
                  }
                },
                _setOpacity: function(e) {
                  this.group && !this.group._transformDone ? e.globalAlpha = this.getObjectOpacity() : e.globalAlpha *= this.opacity
                },
                _setStrokeStyles: function(e, t) {
                  var n = t.stroke;
                  n && (e.lineWidth = t.strokeWidth, e.lineCap = t.strokeLineCap, e.lineDashOffset = t.strokeDashOffset, e.lineJoin = t.strokeLineJoin, e.miterLimit = t.strokeMiterLimit, n.toLive ? "percentage" === n.gradientUnits || n
                    .gradientTransform || n.patternTransform ? this._applyPatternForTransformedGradient(e, n) : (e.strokeStyle = n.toLive(e, this), this._applyPatternGradientTransform(e, n)) : e.strokeStyle = t.stroke)
                },
                _setFillStyles: function(e, t) {
                  var n = t.fill;
                  n && (n.toLive ? (e.fillStyle = n.toLive(e, this), this._applyPatternGradientTransform(e, t.fill)) : e.fillStyle = n)
                },
                _setClippingProperties: function(e) {
                  e.globalAlpha = 1, e.strokeStyle = "transparent", e.fillStyle = "#000000"
                },
                _setLineDash: function(e, t) {
                  t && 0 !== t.length && (1 & t.length && t.push.apply(t, t), e.setLineDash(t))
                },
                _renderControls: function(e, n) {
                  var r, i, o, s = this.getViewportTransform(),
                    l = this.calcTransformMatrix();
                  i = void 0 !== (n = n || {}).hasBorders ? n.hasBorders : this.hasBorders, o = void 0 !== n.hasControls ? n.hasControls : this.hasControls, l = t.util.multiplyTransformMatrices(s, l), r = t.util.qrDecompose(l), e.save(),
                    e.translate(r.translateX, r.translateY), e.lineWidth = 1 * this.borderScaleFactor, this.group || (e.globalAlpha = this.isMoving ? this.borderOpacityWhenMoving : 1), this.flipX && (r.angle -= 180), e.rotate(a(this
                      .group ? r.angle : this.angle)), n.forActiveSelection || this.group ? i && this.drawBordersInGroup(e, r, n) : i && this.drawBorders(e, n), o && this.drawControls(e, n), e.restore()
                },
                _setShadow: function(e) {
                  if (this.shadow) {
                    var n, r = this.shadow,
                      i = this.canvas,
                      o = i && i.viewportTransform[0] || 1,
                      a = i && i.viewportTransform[3] || 1;
                    n = r.nonScaling ? {
                      scaleX: 1,
                      scaleY: 1
                    } : this.getObjectScaling(), i && i._isRetinaScaling() && (o *= t.devicePixelRatio, a *= t.devicePixelRatio), e.shadowColor = r.color, e.shadowBlur = r.blur * t.browserShadowBlurConstant * (o + a) * (n.scaleX + n
                      .scaleY) / 4, e.shadowOffsetX = r.offsetX * o * n.scaleX, e.shadowOffsetY = r.offsetY * a * n.scaleY
                  }
                },
                _removeShadow: function(e) {
                  this.shadow && (e.shadowColor = "", e.shadowBlur = e.shadowOffsetX = e.shadowOffsetY = 0)
                },
                _applyPatternGradientTransform: function(e, t) {
                  if (!t || !t.toLive) return {
                    offsetX: 0,
                    offsetY: 0
                  };
                  var n = t.gradientTransform || t.patternTransform,
                    r = -this.width / 2 + t.offsetX || 0,
                    i = -this.height / 2 + t.offsetY || 0;
                  return "percentage" === t.gradientUnits ? e.transform(this.width, 0, 0, this.height, r, i) : e.transform(1, 0, 0, 1, r, i), n && e.transform(n[0], n[1], n[2], n[3], n[4], n[5]), {
                    offsetX: r,
                    offsetY: i
                  }
                },
                _renderPaintInOrder: function(e) {
                  "stroke" === this.paintFirst ? (this._renderStroke(e), this._renderFill(e)) : (this._renderFill(e), this._renderStroke(e))
                },
                _render: function() {},
                _renderFill: function(e) {
                  this.fill && (e.save(), this._setFillStyles(e, this), "evenodd" === this.fillRule ? e.fill("evenodd") : e.fill(), e.restore())
                },
                _renderStroke: function(e) {
                  if (this.stroke && 0 !== this.strokeWidth) {
                    if (this.shadow && !this.shadow.affectStroke && this._removeShadow(e), e.save(), this.strokeUniform && this.group) {
                      var t = this.getObjectScaling();
                      e.scale(1 / t.scaleX, 1 / t.scaleY)
                    } else this.strokeUniform && e.scale(1 / this.scaleX, 1 / this.scaleY);
                    this._setLineDash(e, this.strokeDashArray), this._setStrokeStyles(e, this), e.stroke(), e.restore()
                  }
                },
                _applyPatternForTransformedGradient: function(e, n) {
                  var r, i = this._limitCacheSize(this._getCacheCanvasDimensions()),
                    o = t.util.createCanvasElement(),
                    a = this.canvas.getRetinaScaling(),
                    s = i.x / this.scaleX / a,
                    l = i.y / this.scaleY / a;
                  o.width = s, o.height = l, (r = o.getContext("2d")).beginPath(), r.moveTo(0, 0), r.lineTo(s, 0), r.lineTo(s, l), r.lineTo(0, l), r.closePath(), r.translate(s / 2, l / 2), r.scale(i.zoomX / this.scaleX / a, i.zoomY / this
                    .scaleY / a), this._applyPatternGradientTransform(r, n), r.fillStyle = n.toLive(e), r.fill(), e.translate(-this.width / 2 - this.strokeWidth / 2, -this.height / 2 - this.strokeWidth / 2), e.scale(a * this.scaleX / i
                    .zoomX, a * this.scaleY / i.zoomY), e.strokeStyle = r.createPattern(o, "no-repeat")
                },
                _findCenterFromElement: function() {
                  return {
                    x: this.left + this.width / 2,
                    y: this.top + this.height / 2
                  }
                },
                _assignTransformMatrixProps: function() {
                  if (this.transformMatrix) {
                    var e = t.util.qrDecompose(this.transformMatrix);
                    this.flipX = !1, this.flipY = !1, this.set("scaleX", e.scaleX), this.set("scaleY", e.scaleY), this.angle = e.angle, this.skewX = e.skewX, this.skewY = 0
                  }
                },
                _removeTransformMatrix: function(e) {
                  var n = this._findCenterFromElement();
                  this.transformMatrix && (this._assignTransformMatrixProps(), n = t.util.transformPoint(n, this.transformMatrix)), this.transformMatrix = null, e && (this.scaleX *= e.scaleX, this.scaleY *= e.scaleY, this.cropX = e.cropX,
                    this.cropY = e.cropY, n.x += e.offsetLeft, n.y += e.offsetTop, this.width = e.width, this.height = e.height), this.setPositionByOrigin(n, "center", "center")
                },
                clone: function(e, n) {
                  var r = this.toObject(n);
                  this.constructor.fromObject ? this.constructor.fromObject(r, e) : t.Object._fromObject("Object", r, e)
                },
                cloneAsImage: function(e, n) {
                  var r = this.toCanvasElement(n);
                  return e && e(new t.Image(r)), this
                },
                toCanvasElement: function(e) {
                  e || (e = {});
                  var n = t.util,
                    r = n.saveObjectTransform(this),
                    i = this.group,
                    o = this.shadow,
                    a = Math.abs,
                    s = (e.multiplier || 1) * (e.enableRetinaScaling ? t.devicePixelRatio : 1);
                  delete this.group, e.withoutTransform && n.resetObjectTransform(this), e.withoutShadow && (this.shadow = null);
                  var l, c, u, h, p = t.util.createCanvasElement(),
                    d = this.getBoundingRect(!0, !0),
                    f = this.shadow,
                    g = {
                      x: 0,
                      y: 0
                    };
                  f && (c = f.blur, l = f.nonScaling ? {
                      scaleX: 1,
                      scaleY: 1
                    } : this.getObjectScaling(), g.x = 2 * Math.round(a(f.offsetX) + c) * a(l.scaleX), g.y = 2 * Math.round(a(f.offsetY) + c) * a(l.scaleY)), u = d.width + g.x, h = d.height + g.y, p.width = Math.ceil(u), p.height = Math
                    .ceil(h);
                  var m = new t.StaticCanvas(p, {
                    enableRetinaScaling: !1,
                    renderOnAddRemove: !1,
                    skipOffscreen: !1
                  });
                  "jpeg" === e.format && (m.backgroundColor = "#fff"), this.setPositionByOrigin(new t.Point(m.width / 2, m.height / 2), "center", "center");
                  var v = this.canvas;
                  m.add(this);
                  var _ = m.toCanvasElement(s || 1, e);
                  return this.shadow = o, this.set("canvas", v), i && (this.group = i), this.set(r).setCoords(), m._objects = [], m.dispose(), m = null, _
                },
                toDataURL: function(e) {
                  return e || (e = {}), t.util.toDataURL(this.toCanvasElement(e), e.format || "png", e.quality || 1)
                },
                isType: function(e) {
                  return arguments.length > 1 ? Array.from(arguments).includes(this.type) : this.type === e
                },
                complexity: function() {
                  return 1
                },
                toJSON: function(e) {
                  return this.toObject(e)
                },
                rotate: function(e) {
                  var t = ("center" !== this.originX || "center" !== this.originY) && this.centeredRotation;
                  return t && this._setOriginToCenter(), this.set("angle", e), t && this._resetOrigin(), this
                },
                centerH: function() {
                  return this.canvas && this.canvas.centerObjectH(this), this
                },
                viewportCenterH: function() {
                  return this.canvas && this.canvas.viewportCenterObjectH(this), this
                },
                centerV: function() {
                  return this.canvas && this.canvas.centerObjectV(this), this
                },
                viewportCenterV: function() {
                  return this.canvas && this.canvas.viewportCenterObjectV(this), this
                },
                center: function() {
                  return this.canvas && this.canvas.centerObject(this), this
                },
                viewportCenter: function() {
                  return this.canvas && this.canvas.viewportCenterObject(this), this
                },
                getLocalPointer: function(e, n) {
                  n = n || this.canvas.getPointer(e);
                  var r = new t.Point(n.x, n.y),
                    i = this._getLeftTopCoords();
                  return this.angle && (r = t.util.rotatePoint(r, i, a(-this.angle))), {
                    x: r.x - i.x,
                    y: r.y - i.y
                  }
                },
                _setupCompositeOperation: function(e) {
                  this.globalCompositeOperation && (e.globalCompositeOperation = this.globalCompositeOperation)
                },
                dispose: function() {
                  t.runningAnimations && t.runningAnimations.cancelByTarget(this)
                }
              }), t.util.createAccessors && t.util.createAccessors(t.Object), n(t.Object.prototype, t.Observable), t.Object.NUM_FRACTION_DIGITS = 2, t.Object.ENLIVEN_PROPS = ["clipPath"], t.Object._fromObject = function(e, n, i, o) {
                var a = t[e];
                n = r(n, !0), t.util.enlivenPatterns([n.fill, n.stroke], (function(e) {
                  void 0 !== e[0] && (n.fill = e[0]), void 0 !== e[1] && (n.stroke = e[1]), t.util.enlivenObjectEnlivables(n, n, (function() {
                    var e = o ? new a(n[o], n) : new a(n);
                    i && i(e)
                  }))
                }))
              }, t.Object.__uid = 0)
            }(e), d = v.util.degreesToRadians, f = {
              left: -.5,
              center: 0,
              right: .5
            }, g = {
              top: -.5,
              center: 0,
              bottom: .5
            }, v.util.object.extend(v.Object.prototype, {
              translateToGivenOrigin: function(e, t, n, r, i) {
                var o, a, s, l = e.x,
                  c = e.y;
                return "string" == typeof t ? t = f[t] : t -= .5, "string" == typeof r ? r = f[r] : r -= .5, "string" == typeof n ? n = g[n] : n -= .5, "string" == typeof i ? i = g[i] : i -= .5, a = i - n, ((o = r - t) || a) && (s = this
                  ._getTransformedDimensions(), l = e.x + o * s.x, c = e.y + a * s.y), new v.Point(l, c)
              },
              translateToCenterPoint: function(e, t, n) {
                var r = this.translateToGivenOrigin(e, t, n, "center", "center");
                return this.angle ? v.util.rotatePoint(r, e, d(this.angle)) : r
              },
              translateToOriginPoint: function(e, t, n) {
                var r = this.translateToGivenOrigin(e, "center", "center", t, n);
                return this.angle ? v.util.rotatePoint(r, e, d(this.angle)) : r
              },
              getCenterPoint: function() {
                var e = new v.Point(this.left, this.top);
                return this.translateToCenterPoint(e, this.originX, this.originY)
              },
              getPointByOrigin: function(e, t) {
                var n = this.getCenterPoint();
                return this.translateToOriginPoint(n, e, t)
              },
              toLocalPoint: function(e, t, n) {
                var r, i, o = this.getCenterPoint();
                return r = void 0 !== t && void 0 !== n ? this.translateToGivenOrigin(o, "center", "center", t, n) : new v.Point(this.left, this.top), i = new v.Point(e.x, e.y), this.angle && (i = v.util.rotatePoint(i, o, -d(this.angle))), i
                  .subtractEquals(r)
              },
              setPositionByOrigin: function(e, t, n) {
                var r = this.translateToCenterPoint(e, t, n),
                  i = this.translateToOriginPoint(r, this.originX, this.originY);
                this.set("left", i.x), this.set("top", i.y)
              },
              adjustPosition: function(e) {
                var t, n, r = d(this.angle),
                  i = this.getScaledWidth(),
                  o = v.util.cos(r) * i,
                  a = v.util.sin(r) * i;
                t = "string" == typeof this.originX ? f[this.originX] : this.originX - .5, n = "string" == typeof e ? f[e] : e - .5, this.left += o * (n - t), this.top += a * (n - t), this.setCoords(), this.originX = e
              },
              _setOriginToCenter: function() {
                this._originalOriginX = this.originX, this._originalOriginY = this.originY;
                var e = this.getCenterPoint();
                this.originX = "center", this.originY = "center", this.left = e.x, this.top = e.y
              },
              _resetOrigin: function() {
                var e = this.translateToOriginPoint(this.getCenterPoint(), this._originalOriginX, this._originalOriginY);
                this.originX = this._originalOriginX, this.originY = this._originalOriginY, this.left = e.x, this.top = e.y, this._originalOriginX = null, this._originalOriginY = null
              },
              _getLeftTopCoords: function() {
                return this.translateToOriginPoint(this.getCenterPoint(), "left", "top")
              }
            }),
            function() {
              var e = v.util,
                t = e.degreesToRadians,
                n = e.multiplyTransformMatrices,
                r = e.transformPoint;
              e.object.extend(v.Object.prototype, {
                oCoords: null,
                aCoords: null,
                lineCoords: null,
                ownMatrixCache: null,
                matrixCache: null,
                controls: {},
                _getCoords: function(e, t) {
                  return t ? e ? this.calcACoords() : this.calcLineCoords() : (this.aCoords && this.lineCoords || this.setCoords(!0), e ? this.aCoords : this.lineCoords)
                },
                getCoords: function(e, t) {
                  return n = this._getCoords(e, t), [new v.Point(n.tl.x, n.tl.y), new v.Point(n.tr.x, n.tr.y), new v.Point(n.br.x, n.br.y), new v.Point(n.bl.x, n.bl.y)];
                  var n
                },
                intersectsWithRect: function(e, t, n, r) {
                  var i = this.getCoords(n, r);
                  return "Intersection" === v.Intersection.intersectPolygonRectangle(i, e, t).status
                },
                intersectsWithObject: function(e, t, n) {
                  return "Intersection" === v.Intersection.intersectPolygonPolygon(this.getCoords(t, n), e.getCoords(t, n)).status || e.isContainedWithinObject(this, t, n) || this.isContainedWithinObject(e, t, n)
                },
                isContainedWithinObject: function(e, t, n) {
                  for (var r = this.getCoords(t, n), i = t ? e.aCoords : e.lineCoords, o = 0, a = e._getImageLines(i); o < 4; o++)
                    if (!e.containsPoint(r[o], a)) return !1;
                  return !0
                },
                isContainedWithinRect: function(e, t, n, r) {
                  var i = this.getBoundingRect(n, r);
                  return i.left >= e.x && i.left + i.width <= t.x && i.top >= e.y && i.top + i.height <= t.y
                },
                containsPoint: function(e, t, n, r) {
                  var i = this._getCoords(n, r),
                    o = (t = t || this._getImageLines(i), this._findCrossPoints(e, t));
                  return 0 !== o && o % 2 == 1
                },
                isOnScreen: function(e) {
                  if (!this.canvas) return !1;
                  var t = this.canvas.vptCoords.tl,
                    n = this.canvas.vptCoords.br;
                  return !!this.getCoords(!0, e).some((function(e) {
                    return e.x <= n.x && e.x >= t.x && e.y <= n.y && e.y >= t.y
                  })) || (!!this.intersectsWithRect(t, n, !0, e) || this._containsCenterOfCanvas(t, n, e))
                },
                _containsCenterOfCanvas: function(e, t, n) {
                  var r = {
                    x: (e.x + t.x) / 2,
                    y: (e.y + t.y) / 2
                  };
                  return !!this.containsPoint(r, null, !0, n)
                },
                isPartiallyOnScreen: function(e) {
                  if (!this.canvas) return !1;
                  var t = this.canvas.vptCoords.tl,
                    n = this.canvas.vptCoords.br;
                  return !!this.intersectsWithRect(t, n, !0, e) || this.getCoords(!0, e).every((function(e) {
                    return (e.x >= n.x || e.x <= t.x) && (e.y >= n.y || e.y <= t.y)
                  })) && this._containsCenterOfCanvas(t, n, e)
                },
                _getImageLines: function(e) {
                  return {
                    topline: {
                      o: e.tl,
                      d: e.tr
                    },
                    rightline: {
                      o: e.tr,
                      d: e.br
                    },
                    bottomline: {
                      o: e.br,
                      d: e.bl
                    },
                    leftline: {
                      o: e.bl,
                      d: e.tl
                    }
                  }
                },
                _findCrossPoints: function(e, t) {
                  var n, r, i, o = 0;
                  for (var a in t)
                    if (!((i = t[a]).o.y < e.y && i.d.y < e.y || i.o.y >= e.y && i.d.y >= e.y || (i.o.x === i.d.x && i.o.x >= e.x ? r = i.o.x : (0, n = (i.d.y - i.o.y) / (i.d.x - i.o.x), r = -(e.y - 0 * e.x - (i.o.y - n * i.o.x)) / (0 -
                        n)), r >= e.x && (o += 1), 2 !== o))) break;
                  return o
                },
                getBoundingRect: function(t, n) {
                  var r = this.getCoords(t, n);
                  return e.makeBoundingBoxFromPoints(r)
                },
                getScaledWidth: function() {
                  return this._getTransformedDimensions().x
                },
                getScaledHeight: function() {
                  return this._getTransformedDimensions().y
                },
                _constrainScale: function(e) {
                  return Math.abs(e) < this.minScaleLimit ? e < 0 ? -this.minScaleLimit : this.minScaleLimit : 0 === e ? 1e-4 : e
                },
                scale: function(e) {
                  return this._set("scaleX", e), this._set("scaleY", e), this.setCoords()
                },
                scaleToWidth: function(e, t) {
                  var n = this.getBoundingRect(t).width / this.getScaledWidth();
                  return this.scale(e / this.width / n)
                },
                scaleToHeight: function(e, t) {
                  var n = this.getBoundingRect(t).height / this.getScaledHeight();
                  return this.scale(e / this.height / n)
                },
                calcLineCoords: function() {
                  var n = this.getViewportTransform(),
                    i = this.padding,
                    o = t(this.angle),
                    a = e.cos(o) * i,
                    s = e.sin(o) * i,
                    l = a + s,
                    c = a - s,
                    u = this.calcACoords(),
                    h = {
                      tl: r(u.tl, n),
                      tr: r(u.tr, n),
                      bl: r(u.bl, n),
                      br: r(u.br, n)
                    };
                  return i && (h.tl.x -= c, h.tl.y -= l, h.tr.x += l, h.tr.y -= c, h.bl.x -= l, h.bl.y += c, h.br.x += c, h.br.y += l), h
                },
                calcOCoords: function() {
                  var e = this._calcRotateMatrix(),
                    t = this._calcTranslateMatrix(),
                    r = this.getViewportTransform(),
                    i = n(r, t),
                    o = n(i, e),
                    a = (o = n(o, [1 / r[0], 0, 0, 1 / r[3], 0, 0]), this._calculateCurrentDimensions()),
                    s = {};
                  return this.forEachControl((function(e, t, n) {
                    s[t] = e.positionHandler(a, o, n)
                  })), s
                },
                calcACoords: function() {
                  var e = this._calcRotateMatrix(),
                    t = this._calcTranslateMatrix(),
                    i = n(t, e),
                    o = this._getTransformedDimensions(),
                    a = o.x / 2,
                    s = o.y / 2;
                  return {
                    tl: r({
                      x: -a,
                      y: -s
                    }, i),
                    tr: r({
                      x: a,
                      y: -s
                    }, i),
                    bl: r({
                      x: -a,
                      y: s
                    }, i),
                    br: r({
                      x: a,
                      y: s
                    }, i)
                  }
                },
                setCoords: function(e) {
                  return this.aCoords = this.calcACoords(), this.lineCoords = this.group ? this.aCoords : this.calcLineCoords(), e || (this.oCoords = this.calcOCoords(), this._setCornerCoords && this._setCornerCoords()), this
                },
                _calcRotateMatrix: function() {
                  return e.calcRotateMatrix(this)
                },
                _calcTranslateMatrix: function() {
                  var e = this.getCenterPoint();
                  return [1, 0, 0, 1, e.x, e.y]
                },
                transformMatrixKey: function(e) {
                  var t = "_",
                    n = "";
                  return !e && this.group && (n = this.group.transformMatrixKey(e) + t), n + this.top + t + this.left + t + this.scaleX + t + this.scaleY + t + this.skewX + t + this.skewY + t + this.angle + t + this.originX + t + this
                    .originY + t + this.width + t + this.height + t + this.strokeWidth + this.flipX + this.flipY
                },
                calcTransformMatrix: function(e) {
                  var t = this.calcOwnMatrix();
                  if (e || !this.group) return t;
                  var r = this.transformMatrixKey(e),
                    i = this.matrixCache || (this.matrixCache = {});
                  return i.key === r ? i.value : (this.group && (t = n(this.group.calcTransformMatrix(!1), t)), i.key = r, i.value = t, t)
                },
                calcOwnMatrix: function() {
                  var t = this.transformMatrixKey(!0),
                    n = this.ownMatrixCache || (this.ownMatrixCache = {});
                  if (n.key === t) return n.value;
                  var r = this._calcTranslateMatrix(),
                    i = {
                      angle: this.angle,
                      translateX: r[4],
                      translateY: r[5],
                      scaleX: this.scaleX,
                      scaleY: this.scaleY,
                      skewX: this.skewX,
                      skewY: this.skewY,
                      flipX: this.flipX,
                      flipY: this.flipY
                    };
                  return n.key = t, n.value = e.composeMatrix(i), n.value
                },
                _getNonTransformedDimensions: function() {
                  var e = this.strokeWidth;
                  return {
                    x: this.width + e,
                    y: this.height + e
                  }
                },
                _getTransformedDimensions: function(t, n) {
                  void 0 === t && (t = this.skewX), void 0 === n && (n = this.skewY);
                  var r, i, o, a = 0 === t && 0 === n;
                  if (this.strokeUniform ? (i = this.width, o = this.height) : (i = (r = this._getNonTransformedDimensions()).x, o = r.y), a) return this._finalizeDimensions(i * this.scaleX, o * this.scaleY);
                  var s = e.sizeAfterTransform(i, o, {
                    scaleX: this.scaleX,
                    scaleY: this.scaleY,
                    skewX: t,
                    skewY: n
                  });
                  return this._finalizeDimensions(s.x, s.y)
                },
                _finalizeDimensions: function(e, t) {
                  return this.strokeUniform ? {
                    x: e + this.strokeWidth,
                    y: t + this.strokeWidth
                  } : {
                    x: e,
                    y: t
                  }
                },
                _calculateCurrentDimensions: function() {
                  var e = this.getViewportTransform(),
                    t = this._getTransformedDimensions();
                  return r(t, e, !0).scalarAdd(2 * this.padding)
                }
              })
            }(), v.util.object.extend(v.Object.prototype, {
              sendToBack: function() {
                return this.group ? v.StaticCanvas.prototype.sendToBack.call(this.group, this) : this.canvas && this.canvas.sendToBack(this), this
              },
              bringToFront: function() {
                return this.group ? v.StaticCanvas.prototype.bringToFront.call(this.group, this) : this.canvas && this.canvas.bringToFront(this), this
              },
              sendBackwards: function(e) {
                return this.group ? v.StaticCanvas.prototype.sendBackwards.call(this.group, this, e) : this.canvas && this.canvas.sendBackwards(this, e), this
              },
              bringForward: function(e) {
                return this.group ? v.StaticCanvas.prototype.bringForward.call(this.group, this, e) : this.canvas && this.canvas.bringForward(this, e), this
              },
              moveTo: function(e) {
                return this.group && "activeSelection" !== this.group.type ? v.StaticCanvas.prototype.moveTo.call(this.group, this, e) : this.canvas && this.canvas.moveTo(this, e), this
              }
            }),
            function() {
              function e(e, t) {
                if (t) {
                  if (t.toLive) return e + ": url(#SVGID_" + t.id + "); ";
                  var n = new v.Color(t),
                    r = e + ": " + n.toRgb() + "; ",
                    i = n.getAlpha();
                  return 1 !== i && (r += e + "-opacity: " + i.toString() + "; "), r
                }
                return e + ": none; "
              }
              var t = v.util.toFixed;
              v.util.object.extend(v.Object.prototype, {
                getSvgStyles: function(t) {
                  var n = this.fillRule ? this.fillRule : "nonzero",
                    r = this.strokeWidth ? this.strokeWidth : "0",
                    i = this.strokeDashArray ? this.strokeDashArray.join(" ") : "none",
                    o = this.strokeDashOffset ? this.strokeDashOffset : "0",
                    a = this.strokeLineCap ? this.strokeLineCap : "butt",
                    s = this.strokeLineJoin ? this.strokeLineJoin : "miter",
                    l = this.strokeMiterLimit ? this.strokeMiterLimit : "4",
                    c = void 0 !== this.opacity ? this.opacity : "1",
                    u = this.visible ? "" : " visibility: hidden;",
                    h = t ? "" : this.getSvgFilter(),
                    p = e("fill", this.fill);
                  return [e("stroke", this.stroke), "stroke-width: ", r, "; ", "stroke-dasharray: ", i, "; ", "stroke-linecap: ", a, "; ", "stroke-dashoffset: ", o, "; ", "stroke-linejoin: ", s, "; ", "stroke-miterlimit: ", l, "; ", p,
                    "fill-rule: ", n, "; ", "opacity: ", c, ";", h, u
                  ].join("")
                },
                getSvgSpanStyles: function(t, n) {
                  var r = "; ",
                    i = t.fontFamily ? "font-family: " + (-1 === t.fontFamily.indexOf("'") && -1 === t.fontFamily.indexOf('"') ? "'" + t.fontFamily + "'" : t.fontFamily) + r : "",
                    o = t.strokeWidth ? "stroke-width: " + t.strokeWidth + r : "",
                    a = (i = i, t.fontSize ? "font-size: " + t.fontSize + "px" + r : ""),
                    s = t.fontStyle ? "font-style: " + t.fontStyle + r : "",
                    l = t.fontWeight ? "font-weight: " + t.fontWeight + r : "",
                    c = t.fill ? e("fill", t.fill) : "",
                    u = t.stroke ? e("stroke", t.stroke) : "",
                    h = this.getSvgTextDecoration(t);
                  return h && (h = "text-decoration: " + h + r), [u, o, i, a, s, l, h, c, t.deltaY ? "baseline-shift: " + -t.deltaY + "; " : "", n ? "white-space: pre; " : ""].join("")
                },
                getSvgTextDecoration: function(e) {
                  return ["overline", "underline", "line-through"].filter((function(t) {
                    return e[t.replace("-", "")]
                  })).join(" ")
                },
                getSvgFilter: function() {
                  return this.shadow ? "filter: url(#SVGID_" + this.shadow.id + ");" : ""
                },
                getSvgCommons: function() {
                  return [this.id ? 'id="' + this.id + '" ' : "", this.clipPath ? 'clip-path="url(#' + this.clipPath.clipPathId + ')" ' : ""].join("")
                },
                getSvgTransform: function(e, t) {
                  var n = e ? this.calcTransformMatrix() : this.calcOwnMatrix();
                  return 'transform="' + v.util.matrixToSVG(n) + (t || "") + '" '
                },
                _setSVGBg: function(e) {
                  if (this.backgroundColor) {
                    var n = v.Object.NUM_FRACTION_DIGITS;
                    e.push("\t\t<rect ", this._getFillAttributes(this.backgroundColor), ' x="', t(-this.width / 2, n), '" y="', t(-this.height / 2, n), '" width="', t(this.width, n), '" height="', t(this.height, n), '"></rect>\n')
                  }
                },
                toSVG: function(e) {
                  return this._createBaseSVGMarkup(this._toSVG(e), {
                    reviver: e
                  })
                },
                toClipPathSVG: function(e) {
                  return "\t" + this._createBaseClipPathSVGMarkup(this._toSVG(e), {
                    reviver: e
                  })
                },
                _createBaseClipPathSVGMarkup: function(e, t) {
                  var n = (t = t || {}).reviver,
                    r = t.additionalTransform || "",
                    i = [this.getSvgTransform(!0, r), this.getSvgCommons()].join(""),
                    o = e.indexOf("COMMON_PARTS");
                  return e[o] = i, n ? n(e.join("")) : e.join("")
                },
                _createBaseSVGMarkup: function(e, t) {
                  var n, r, i = (t = t || {}).noStyle,
                    o = t.reviver,
                    a = i ? "" : 'style="' + this.getSvgStyles() + '" ',
                    s = t.withShadow ? 'style="' + this.getSvgFilter() + '" ' : "",
                    l = this.clipPath,
                    c = this.strokeUniform ? 'vector-effect="non-scaling-stroke" ' : "",
                    u = l && l.absolutePositioned,
                    h = this.stroke,
                    p = this.fill,
                    d = this.shadow,
                    f = [],
                    g = e.indexOf("COMMON_PARTS"),
                    m = t.additionalTransform;
                  return l && (l.clipPathId = "CLIPPATH_" + v.Object.__uid++, r = '<clipPath id="' + l.clipPathId + '" >\n' + l.toClipPathSVG(o) + "</clipPath>\n"), u && f.push("<g ", s, this.getSvgCommons(), " >\n"), f.push("<g ", this
                      .getSvgTransform(!1), u ? "" : s + this.getSvgCommons(), " >\n"), n = [a, c, i ? "" : this.addPaintOrder(), " ", m ? 'transform="' + m + '" ' : ""].join(""), e[g] = n, p && p.toLive && f.push(p.toSVG(this)), h && h
                    .toLive && f.push(h.toSVG(this)), d && f.push(d.toSVG(this)), l && f.push(r), f.push(e.join("")), f.push("</g>\n"), u && f.push("</g>\n"), o ? o(f.join("")) : f.join("")
                },
                addPaintOrder: function() {
                  return "fill" !== this.paintFirst ? ' paint-order="' + this.paintFirst + '" ' : ""
                }
              })
            }(),
            function() {
              var e = v.util.object.extend,
                t = "stateProperties";

              function n(t, n, r) {
                var i = {};
                r.forEach((function(e) {
                  i[e] = t[e]
                })), e(t[n], i, !0)
              }

              function r(e, t, n) {
                if (e === t) return !0;
                if (Array.isArray(e)) {
                  if (!Array.isArray(t) || e.length !== t.length) return !1;
                  for (var i = 0, o = e.length; i < o; i++)
                    if (!r(e[i], t[i])) return !1;
                  return !0
                }
                if (e && "object" == typeof e) {
                  var a, s = Object.keys(e);
                  if (!t || "object" != typeof t || !n && s.length !== Object.keys(t).length) return !1;
                  for (i = 0, o = s.length; i < o; i++)
                    if ("canvas" !== (a = s[i]) && "group" !== a && !r(e[a], t[a])) return !1;
                  return !0
                }
              }
              v.util.object.extend(v.Object.prototype, {
                hasStateChanged: function(e) {
                  var n = "_" + (e = e || t);
                  return Object.keys(this[n]).length < this[e].length || !r(this[n], this, !0)
                },
                saveState: function(e) {
                  var r = e && e.propertySet || t,
                    i = "_" + r;
                  return this[i] ? (n(this, i, this[r]), e && e.stateProperties && n(this, i, e.stateProperties), this) : this.setupState(e)
                },
                setupState: function(e) {
                  var n = (e = e || {}).propertySet || t;
                  return e.propertySet = n, this["_" + n] = {}, this.saveState(e), this
                }
              })
            }(),
            function() {
              var e = v.util.degreesToRadians;
              v.util.object.extend(v.Object.prototype, {
                _findTargetCorner: function(e, t) {
                  if (!this.hasControls || this.group || !this.canvas || this.canvas._activeObject !== this) return !1;
                  var n, r, i, o = e.x,
                    a = e.y,
                    s = Object.keys(this.oCoords),
                    l = s.length - 1;
                  for (this.__corner = 0; l >= 0; l--)
                    if (i = s[l], this.isControlVisible(i) && (r = this._getImageLines(t ? this.oCoords[i].touchCorner : this.oCoords[i].corner), 0 !== (n = this._findCrossPoints({
                        x: o,
                        y: a
                      }, r)) && n % 2 == 1)) return this.__corner = i, i;
                  return !1
                },
                forEachControl: function(e) {
                  for (var t in this.controls) e(this.controls[t], t, this)
                },
                _setCornerCoords: function() {
                  var e = this.oCoords;
                  for (var t in e) {
                    var n = this.controls[t];
                    e[t].corner = n.calcCornerCoords(this.angle, this.cornerSize, e[t].x, e[t].y, !1), e[t].touchCorner = n.calcCornerCoords(this.angle, this.touchCornerSize, e[t].x, e[t].y, !0)
                  }
                },
                drawSelectionBackground: function(t) {
                  if (!this.selectionBackgroundColor || this.canvas && !this.canvas.interactive || this.canvas && this.canvas._activeObject !== this) return this;
                  t.save();
                  var n = this.getCenterPoint(),
                    r = this._calculateCurrentDimensions(),
                    i = this.canvas.viewportTransform;
                  return t.translate(n.x, n.y), t.scale(1 / i[0], 1 / i[3]), t.rotate(e(this.angle)), t.fillStyle = this.selectionBackgroundColor, t.fillRect(-r.x / 2, -r.y / 2, r.x, r.y), t.restore(), this
                },
                drawBorders: function(e, t) {
                  t = t || {};
                  var n = this._calculateCurrentDimensions(),
                    r = this.borderScaleFactor,
                    i = n.x + r,
                    o = n.y + r,
                    a = void 0 !== t.hasControls ? t.hasControls : this.hasControls,
                    s = !1;
                  return e.save(), e.strokeStyle = t.borderColor || this.borderColor, this._setLineDash(e, t.borderDashArray || this.borderDashArray), e.strokeRect(-i / 2, -o / 2, i, o), a && (e.beginPath(), this.forEachControl((function(t,
                    n, r) {
                    t.withConnection && t.getVisibility(r, n) && (s = !0, e.moveTo(t.x * i, t.y * o), e.lineTo(t.x * i + t.offsetX, t.y * o + t.offsetY))
                  })), s && e.stroke()), e.restore(), this
                },
                drawBordersInGroup: function(e, t, n) {
                  n = n || {};
                  var r = v.util.sizeAfterTransform(this.width, this.height, t),
                    i = this.strokeWidth,
                    o = this.strokeUniform,
                    a = this.borderScaleFactor,
                    s = r.x + i * (o ? this.canvas.getZoom() : t.scaleX) + a,
                    l = r.y + i * (o ? this.canvas.getZoom() : t.scaleY) + a;
                  return e.save(), this._setLineDash(e, n.borderDashArray || this.borderDashArray), e.strokeStyle = n.borderColor || this.borderColor, e.strokeRect(-s / 2, -l / 2, s, l), e.restore(), this
                },
                drawControls: function(e, t) {
                  t = t || {}, e.save();
                  var n, r, i = this.canvas.getRetinaScaling();
                  return e.setTransform(i, 0, 0, i, 0, 0), e.strokeStyle = e.fillStyle = t.cornerColor || this.cornerColor, this.transparentCorners || (e.strokeStyle = t.cornerStrokeColor || this.cornerStrokeColor), this._setLineDash(e, t
                    .cornerDashArray || this.cornerDashArray), this.setCoords(), this.group && (n = this.group.calcTransformMatrix()), this.forEachControl((function(i, o, a) {
                    r = a.oCoords[o], i.getVisibility(a, o) && (n && (r = v.util.transformPoint(r, n)), i.render(e, r.x, r.y, t, a))
                  })), e.restore(), this
                },
                isControlVisible: function(e) {
                  return this.controls[e] && this.controls[e].getVisibility(this, e)
                },
                setControlVisible: function(e, t) {
                  return this._controlsVisibility || (this._controlsVisibility = {}), this._controlsVisibility[e] = t, this
                },
                setControlsVisibility: function(e) {
                  for (var t in e || (e = {}), e) this.setControlVisible(t, e[t]);
                  return this
                },
                onDeselect: function() {},
                onSelect: function() {}
              })
            }(), v.util.object.extend(v.StaticCanvas.prototype, {
              FX_DURATION: 500,
              fxCenterObjectH: function(e, t) {
                var n = function() {},
                  r = (t = t || {}).onComplete || n,
                  i = t.onChange || n,
                  o = this;
                return v.util.animate({
                  target: this,
                  startValue: e.left,
                  endValue: this.getCenterPoint().x,
                  duration: this.FX_DURATION,
                  onChange: function(t) {
                    e.set("left", t), o.requestRenderAll(), i()
                  },
                  onComplete: function() {
                    e.setCoords(), r()
                  }
                })
              },
              fxCenterObjectV: function(e, t) {
                var n = function() {},
                  r = (t = t || {}).onComplete || n,
                  i = t.onChange || n,
                  o = this;
                return v.util.animate({
                  target: this,
                  startValue: e.top,
                  endValue: this.getCenterPoint().y,
                  duration: this.FX_DURATION,
                  onChange: function(t) {
                    e.set("top", t), o.requestRenderAll(), i()
                  },
                  onComplete: function() {
                    e.setCoords(), r()
                  }
                })
              },
              fxRemove: function(e, t) {
                var n = function() {},
                  r = (t = t || {}).onComplete || n,
                  i = t.onChange || n,
                  o = this;
                return v.util.animate({
                  target: this,
                  startValue: e.opacity,
                  endValue: 0,
                  duration: this.FX_DURATION,
                  onChange: function(t) {
                    e.set("opacity", t), o.requestRenderAll(), i()
                  },
                  onComplete: function() {
                    o.remove(e), r()
                  }
                })
              }
            }), v.util.object.extend(v.Object.prototype, {
              animate: function() {
                if (arguments[0] && "object" == typeof arguments[0]) {
                  var e, t, n = [],
                    r = [];
                  for (e in arguments[0]) n.push(e);
                  for (var i = 0, o = n.length; i < o; i++) e = n[i], t = i !== o - 1, r.push(this._animate(e, arguments[0][e], arguments[1], t));
                  return r
                }
                return this._animate.apply(this, arguments)
              },
              _animate: function(e, t, n, r) {
                var i, o = this;
                t = t.toString(), n = n ? v.util.object.clone(n) : {}, ~e.indexOf(".") && (i = e.split("."));
                var a = o.colorProperties.indexOf(e) > -1 || i && o.colorProperties.indexOf(i[1]) > -1,
                  s = i ? this.get(i[0])[i[1]] : this.get(e);
                "from" in n || (n.from = s), a || (t = ~t.indexOf("=") ? s + parseFloat(t.replace("=", "")) : parseFloat(t));
                var l = {
                  target: this,
                  startValue: n.from,
                  endValue: t,
                  byValue: n.by,
                  easing: n.easing,
                  duration: n.duration,
                  abort: n.abort && function(e, t, r) {
                    return n.abort.call(o, e, t, r)
                  },
                  onChange: function(t, a, s) {
                    i ? o[i[0]][i[1]] = t : o.set(e, t), r || n.onChange && n.onChange(t, a, s)
                  },
                  onComplete: function(e, t, i) {
                    r || (o.setCoords(), n.onComplete && n.onComplete(e, t, i))
                  }
                };
                return a ? v.util.animateColor(l.startValue, l.endValue, l.duration, l) : v.util.animate(l)
              }
            }),
            function(e) {
              var t = e.fabric || (e.fabric = {}),
                n = t.util.object.extend,
                r = t.util.object.clone,
                i = {
                  x1: 1,
                  x2: 1,
                  y1: 1,
                  y2: 1
                };

              function o(e, t) {
                var n = e.origin,
                  r = e.axis1,
                  i = e.axis2,
                  o = e.dimension,
                  a = t.nearest,
                  s = t.center,
                  l = t.farthest;
                return function() {
                  switch (this.get(n)) {
                    case a:
                      return Math.min(this.get(r), this.get(i));
                    case s:
                      return Math.min(this.get(r), this.get(i)) + .5 * this.get(o);
                    case l:
                      return Math.max(this.get(r), this.get(i))
                  }
                }
              }
              t.Line ? t.warn("fabric.Line is already defined") : (t.Line = t.util.createClass(t.Object, {
                type: "line",
                x1: 0,
                y1: 0,
                x2: 0,
                y2: 0,
                cacheProperties: t.Object.prototype.cacheProperties.concat("x1", "x2", "y1", "y2"),
                initialize: function(e, t) {
                  e || (e = [0, 0, 0, 0]), this.callSuper("initialize", t), this.set("x1", e[0]), this.set("y1", e[1]), this.set("x2", e[2]), this.set("y2", e[3]), this._setWidthHeight(t)
                },
                _setWidthHeight: function(e) {
                  e || (e = {}), this.width = Math.abs(this.x2 - this.x1), this.height = Math.abs(this.y2 - this.y1), this.left = "left" in e ? e.left : this._getLeftToOriginX(), this.top = "top" in e ? e.top : this._getTopToOriginY()
                },
                _set: function(e, t) {
                  return this.callSuper("_set", e, t), void 0 !== i[e] && this._setWidthHeight(), this
                },
                _getLeftToOriginX: o({
                  origin: "originX",
                  axis1: "x1",
                  axis2: "x2",
                  dimension: "width"
                }, {
                  nearest: "left",
                  center: "center",
                  farthest: "right"
                }),
                _getTopToOriginY: o({
                  origin: "originY",
                  axis1: "y1",
                  axis2: "y2",
                  dimension: "height"
                }, {
                  nearest: "top",
                  center: "center",
                  farthest: "bottom"
                }),
                _render: function(e) {
                  e.beginPath();
                  var t = this.calcLinePoints();
                  e.moveTo(t.x1, t.y1), e.lineTo(t.x2, t.y2), e.lineWidth = this.strokeWidth;
                  var n = e.strokeStyle;
                  e.strokeStyle = this.stroke || e.fillStyle, this.stroke && this._renderStroke(e), e.strokeStyle = n
                },
                _findCenterFromElement: function() {
                  return {
                    x: (this.x1 + this.x2) / 2,
                    y: (this.y1 + this.y2) / 2
                  }
                },
                toObject: function(e) {
                  return n(this.callSuper("toObject", e), this.calcLinePoints())
                },
                _getNonTransformedDimensions: function() {
                  var e = this.callSuper("_getNonTransformedDimensions");
                  return "butt" === this.strokeLineCap && (0 === this.width && (e.y -= this.strokeWidth), 0 === this.height && (e.x -= this.strokeWidth)), e
                },
                calcLinePoints: function() {
                  var e = this.x1 <= this.x2 ? -1 : 1,
                    t = this.y1 <= this.y2 ? -1 : 1,
                    n = e * this.width * .5,
                    r = t * this.height * .5;
                  return {
                    x1: n,
                    x2: e * this.width * -.5,
                    y1: r,
                    y2: t * this.height * -.5
                  }
                },
                _toSVG: function() {
                  var e = this.calcLinePoints();
                  return ["<line ", "COMMON_PARTS", 'x1="', e.x1, '" y1="', e.y1, '" x2="', e.x2, '" y2="', e.y2, '" />\n']
                }
              }), t.Line.ATTRIBUTE_NAMES = t.SHARED_ATTRIBUTES.concat("x1 y1 x2 y2".split(" ")), t.Line.fromElement = function(e, r, i) {
                i = i || {};
                var o = t.parseAttributes(e, t.Line.ATTRIBUTE_NAMES),
                  a = [o.x1 || 0, o.y1 || 0, o.x2 || 0, o.y2 || 0];
                r(new t.Line(a, n(o, i)))
              }, t.Line.fromObject = function(e, n) {
                var i = r(e, !0);
                i.points = [e.x1, e.y1, e.x2, e.y2], t.Object._fromObject("Line", i, (function(e) {
                  delete e.points, n && n(e)
                }), "points")
              })
            }(e),
            function(e) {
              var t = e.fabric || (e.fabric = {}),
                n = t.util.degreesToRadians;
              t.Circle ? t.warn("fabric.Circle is already defined.") : (t.Circle = t.util.createClass(t.Object, {
                type: "circle",
                radius: 0,
                startAngle: 0,
                endAngle: 360,
                cacheProperties: t.Object.prototype.cacheProperties.concat("radius", "startAngle", "endAngle"),
                _set: function(e, t) {
                  return this.callSuper("_set", e, t), "radius" === e && this.setRadius(t), this
                },
                toObject: function(e) {
                  return this.callSuper("toObject", ["radius", "startAngle", "endAngle"].concat(e))
                },
                _toSVG: function() {
                  var e, r = (this.endAngle - this.startAngle) % 360;
                  if (0 === r) e = ["<circle ", "COMMON_PARTS", 'cx="0" cy="0" ', 'r="', this.radius, '" />\n'];
                  else {
                    var i = n(this.startAngle),
                      o = n(this.endAngle),
                      a = this.radius;
                    e = ['<path d="M ' + t.util.cos(i) * a + " " + t.util.sin(i) * a, " A " + a + " " + a, " 0 ", +(r > 180 ? "1" : "0") + " 1", " " + t.util.cos(o) * a + " " + t.util.sin(o) * a, '" ', "COMMON_PARTS", " />\n"]
                  }
                  return e
                },
                _render: function(e) {
                  e.beginPath(), e.arc(0, 0, this.radius, n(this.startAngle), n(this.endAngle), !1), this._renderPaintInOrder(e)
                },
                getRadiusX: function() {
                  return this.get("radius") * this.get("scaleX")
                },
                getRadiusY: function() {
                  return this.get("radius") * this.get("scaleY")
                },
                setRadius: function(e) {
                  return this.radius = e, this.set("width", 2 * e).set("height", 2 * e)
                }
              }), t.Circle.ATTRIBUTE_NAMES = t.SHARED_ATTRIBUTES.concat("cx cy r".split(" ")), t.Circle.fromElement = function(e, n) {
                var r = t.parseAttributes(e, t.Circle.ATTRIBUTE_NAMES);
                if (! function(e) {
                    return "radius" in e && e.radius >= 0
                  }(r)) throw new Error("value of `r` attribute is required and can not be negative");
                r.left = (r.left || 0) - r.radius, r.top = (r.top || 0) - r.radius, n(new t.Circle(r))
              }, t.Circle.fromObject = function(e, n) {
                t.Object._fromObject("Circle", e, n)
              })
            }(e),
            function(e) {
              var t = e.fabric || (e.fabric = {});
              t.Triangle ? t.warn("fabric.Triangle is already defined") : (t.Triangle = t.util.createClass(t.Object, {
                type: "triangle",
                width: 100,
                height: 100,
                _render: function(e) {
                  var t = this.width / 2,
                    n = this.height / 2;
                  e.beginPath(), e.moveTo(-t, n), e.lineTo(0, -n), e.lineTo(t, n), e.closePath(), this._renderPaintInOrder(e)
                },
                _toSVG: function() {
                  var e = this.width / 2,
                    t = this.height / 2;
                  return ["<polygon ", "COMMON_PARTS", 'points="', [-e + " " + t, "0 " + -t, e + " " + t].join(","), '" />']
                }
              }), t.Triangle.fromObject = function(e, n) {
                return t.Object._fromObject("Triangle", e, n)
              })
            }(e),
            function(e) {
              var t = e.fabric || (e.fabric = {}),
                n = 2 * Math.PI;
              t.Ellipse ? t.warn("fabric.Ellipse is already defined.") : (t.Ellipse = t.util.createClass(t.Object, {
                type: "ellipse",
                rx: 0,
                ry: 0,
                cacheProperties: t.Object.prototype.cacheProperties.concat("rx", "ry"),
                initialize: function(e) {
                  this.callSuper("initialize", e), this.set("rx", e && e.rx || 0), this.set("ry", e && e.ry || 0)
                },
                _set: function(e, t) {
                  switch (this.callSuper("_set", e, t), e) {
                    case "rx":
                      this.rx = t, this.set("width", 2 * t);
                      break;
                    case "ry":
                      this.ry = t, this.set("height", 2 * t)
                  }
                  return this
                },
                getRx: function() {
                  return this.get("rx") * this.get("scaleX")
                },
                getRy: function() {
                  return this.get("ry") * this.get("scaleY")
                },
                toObject: function(e) {
                  return this.callSuper("toObject", ["rx", "ry"].concat(e))
                },
                _toSVG: function() {
                  return ["<ellipse ", "COMMON_PARTS", 'cx="0" cy="0" ', 'rx="', this.rx, '" ry="', this.ry, '" />\n']
                },
                _render: function(e) {
                  e.beginPath(), e.save(), e.transform(1, 0, 0, this.ry / this.rx, 0, 0), e.arc(0, 0, this.rx, 0, n, !1), e.restore(), this._renderPaintInOrder(e)
                }
              }), t.Ellipse.ATTRIBUTE_NAMES = t.SHARED_ATTRIBUTES.concat("cx cy rx ry".split(" ")), t.Ellipse.fromElement = function(e, n) {
                var r = t.parseAttributes(e, t.Ellipse.ATTRIBUTE_NAMES);
                r.left = (r.left || 0) - r.rx, r.top = (r.top || 0) - r.ry, n(new t.Ellipse(r))
              }, t.Ellipse.fromObject = function(e, n) {
                t.Object._fromObject("Ellipse", e, n)
              })
            }(e),
            function(e) {
              var t = e.fabric || (e.fabric = {}),
                n = t.util.object.extend;
              t.Rect ? t.warn("fabric.Rect is already defined") : (t.Rect = t.util.createClass(t.Object, {
                stateProperties: t.Object.prototype.stateProperties.concat("rx", "ry"),
                type: "rect",
                rx: 0,
                ry: 0,
                cacheProperties: t.Object.prototype.cacheProperties.concat("rx", "ry"),
                initialize: function(e) {
                  this.callSuper("initialize", e), this._initRxRy()
                },
                _initRxRy: function() {
                  this.rx && !this.ry ? this.ry = this.rx : this.ry && !this.rx && (this.rx = this.ry)
                },
                _render: function(e) {
                  var t = this.rx ? Math.min(this.rx, this.width / 2) : 0,
                    n = this.ry ? Math.min(this.ry, this.height / 2) : 0,
                    r = this.width,
                    i = this.height,
                    o = -this.width / 2,
                    a = -this.height / 2,
                    s = 0 !== t || 0 !== n,
                    l = .4477152502;
                  e.beginPath(), e.moveTo(o + t, a), e.lineTo(o + r - t, a), s && e.bezierCurveTo(o + r - l * t, a, o + r, a + l * n, o + r, a + n), e.lineTo(o + r, a + i - n), s && e.bezierCurveTo(o + r, a + i - l * n, o + r - l * t, a +
                      i, o + r - t, a + i), e.lineTo(o + t, a + i), s && e.bezierCurveTo(o + l * t, a + i, o, a + i - l * n, o, a + i - n), e.lineTo(o, a + n), s && e.bezierCurveTo(o, a + l * n, o + l * t, a, o + t, a), e.closePath(),
                    this._renderPaintInOrder(e)
                },
                toObject: function(e) {
                  return this.callSuper("toObject", ["rx", "ry"].concat(e))
                },
                _toSVG: function() {
                  return ["<rect ", "COMMON_PARTS", 'x="', -this.width / 2, '" y="', -this.height / 2, '" rx="', this.rx, '" ry="', this.ry, '" width="', this.width, '" height="', this.height, '" />\n']
                }
              }), t.Rect.ATTRIBUTE_NAMES = t.SHARED_ATTRIBUTES.concat("x y rx ry width height".split(" ")), t.Rect.fromElement = function(e, r, i) {
                if (!e) return r(null);
                i = i || {};
                var o = t.parseAttributes(e, t.Rect.ATTRIBUTE_NAMES);
                o.left = o.left || 0, o.top = o.top || 0, o.height = o.height || 0, o.width = o.width || 0;
                var a = new t.Rect(n(i ? t.util.object.clone(i) : {}, o));
                a.visible = a.visible && a.width > 0 && a.height > 0, r(a)
              }, t.Rect.fromObject = function(e, n) {
                return t.Object._fromObject("Rect", e, n)
              })
            }(e),
            function(e) {
              var t = e.fabric || (e.fabric = {}),
                n = t.util.object.extend,
                r = t.util.array.min,
                i = t.util.array.max,
                o = t.util.toFixed,
                a = t.util.projectStrokeOnPoints;
              t.Polyline ? t.warn("fabric.Polyline is already defined") : (t.Polyline = t.util.createClass(t.Object, {
                type: "polyline",
                points: null,
                exactBoundingBox: !1,
                cacheProperties: t.Object.prototype.cacheProperties.concat("points"),
                initialize: function(e, t) {
                  t = t || {}, this.points = e || [], this.callSuper("initialize", t), this._setPositionDimensions(t)
                },
                _projectStrokeOnPoints: function() {
                  return a(this.points, this, !0)
                },
                _setPositionDimensions: function(e) {
                  var t, n = this._calcDimensions(e),
                    r = this.exactBoundingBox ? this.strokeWidth : 0;
                  this.width = n.width - r, this.height = n.height - r, e.fromSVG || (t = this.translateToGivenOrigin({
                    x: n.left - this.strokeWidth / 2 + r / 2,
                    y: n.top - this.strokeWidth / 2 + r / 2
                  }, "left", "top", this.originX, this.originY)), void 0 === e.left && (this.left = e.fromSVG ? n.left : t.x), void 0 === e.top && (this.top = e.fromSVG ? n.top : t.y), this.pathOffset = {
                    x: n.left + this.width / 2 + r / 2,
                    y: n.top + this.height / 2 + r / 2
                  }
                },
                _calcDimensions: function() {
                  var e = this.exactBoundingBox ? this._projectStrokeOnPoints() : this.points,
                    t = r(e, "x") || 0,
                    n = r(e, "y") || 0;
                  return {
                    left: t,
                    top: n,
                    width: (i(e, "x") || 0) - t,
                    height: (i(e, "y") || 0) - n
                  }
                },
                toObject: function(e) {
                  return n(this.callSuper("toObject", e), {
                    points: this.points.concat()
                  })
                },
                _toSVG: function() {
                  for (var e = [], n = this.pathOffset.x, r = this.pathOffset.y, i = t.Object.NUM_FRACTION_DIGITS, a = 0, s = this.points.length; a < s; a++) e.push(o(this.points[a].x - n, i), ",", o(this.points[a].y - r, i), " ");
                  return ["<" + this.type + " ", "COMMON_PARTS", 'points="', e.join(""), '" />\n']
                },
                commonRender: function(e) {
                  var t, n = this.points.length,
                    r = this.pathOffset.x,
                    i = this.pathOffset.y;
                  if (!n || isNaN(this.points[n - 1].y)) return !1;
                  e.beginPath(), e.moveTo(this.points[0].x - r, this.points[0].y - i);
                  for (var o = 0; o < n; o++) t = this.points[o], e.lineTo(t.x - r, t.y - i);
                  return !0
                },
                _render: function(e) {
                  this.commonRender(e) && this._renderPaintInOrder(e)
                },
                complexity: function() {
                  return this.get("points").length
                }
              }), t.Polyline.ATTRIBUTE_NAMES = t.SHARED_ATTRIBUTES.concat(), t.Polyline.fromElementGenerator = function(e) {
                return function(r, i, o) {
                  if (!r) return i(null);
                  o || (o = {});
                  var a = t.parsePointsAttribute(r.getAttribute("points")),
                    s = t.parseAttributes(r, t[e].ATTRIBUTE_NAMES);
                  s.fromSVG = !0, i(new t[e](a, n(s, o)))
                }
              }, t.Polyline.fromElement = t.Polyline.fromElementGenerator("Polyline"), t.Polyline.fromObject = function(e, n) {
                return t.Object._fromObject("Polyline", e, n, "points")
              })
            }(e),
            function(e) {
              var t = e.fabric || (e.fabric = {}),
                n = t.util.projectStrokeOnPoints;
              t.Polygon ? t.warn("fabric.Polygon is already defined") : (t.Polygon = t.util.createClass(t.Polyline, {
                type: "polygon",
                _projectStrokeOnPoints: function() {
                  return n(this.points, this)
                },
                _render: function(e) {
                  this.commonRender(e) && (e.closePath(), this._renderPaintInOrder(e))
                }
              }), t.Polygon.ATTRIBUTE_NAMES = t.SHARED_ATTRIBUTES.concat(), t.Polygon.fromElement = t.Polyline.fromElementGenerator("Polygon"), t.Polygon.fromObject = function(e, n) {
                t.Object._fromObject("Polygon", e, n, "points")
              })
            }(e),
            function(e) {
              var t = e.fabric || (e.fabric = {}),
                n = t.util.array.min,
                r = t.util.array.max,
                i = t.util.object.extend,
                o = t.util.object.clone,
                a = t.util.toFixed;
              t.Path ? t.warn("fabric.Path is already defined") : (t.Path = t.util.createClass(t.Object, {
                type: "path",
                path: null,
                cacheProperties: t.Object.prototype.cacheProperties.concat("path", "fillRule"),
                stateProperties: t.Object.prototype.stateProperties.concat("path"),
                initialize: function(e, t) {
                  delete(t = o(t || {})).path, this.callSuper("initialize", t), this._setPath(e || [], t)
                },
                _setPath: function(e, n) {
                  this.path = t.util.makePathSimpler(Array.isArray(e) ? e : t.util.parsePath(e)), t.Polyline.prototype._setPositionDimensions.call(this, n || {})
                },
                _renderPathCommands: function(e) {
                  var t, n = 0,
                    r = 0,
                    i = 0,
                    o = 0,
                    a = 0,
                    s = 0,
                    l = -this.pathOffset.x,
                    c = -this.pathOffset.y;
                  e.beginPath();
                  for (var u = 0, h = this.path.length; u < h; ++u) switch ((t = this.path[u])[0]) {
                    case "L":
                      i = t[1], o = t[2], e.lineTo(i + l, o + c);
                      break;
                    case "M":
                      n = i = t[1], r = o = t[2], e.moveTo(i + l, o + c);
                      break;
                    case "C":
                      i = t[5], o = t[6], a = t[3], s = t[4], e.bezierCurveTo(t[1] + l, t[2] + c, a + l, s + c, i + l, o + c);
                      break;
                    case "Q":
                      e.quadraticCurveTo(t[1] + l, t[2] + c, t[3] + l, t[4] + c), i = t[3], o = t[4], a = t[1], s = t[2];
                      break;
                    case "z":
                    case "Z":
                      i = n, o = r, e.closePath()
                  }
                },
                _render: function(e) {
                  this._renderPathCommands(e), this._renderPaintInOrder(e)
                },
                toString: function() {
                  return "#<fabric.Path (" + this.complexity() + '): { "top": ' + this.top + ', "left": ' + this.left + " }>"
                },
                toObject: function(e) {
                  return i(this.callSuper("toObject", e), {
                    path: this.path.map((function(e) {
                      return e.slice()
                    }))
                  })
                },
                toDatalessObject: function(e) {
                  var t = this.toObject(["sourcePath"].concat(e));
                  return t.sourcePath && delete t.path, t
                },
                _toSVG: function() {
                  return ["<path ", "COMMON_PARTS", 'd="', t.util.joinPath(this.path), '" stroke-linecap="round" ', "/>\n"]
                },
                _getOffsetTransform: function() {
                  var e = t.Object.NUM_FRACTION_DIGITS;
                  return " translate(" + a(-this.pathOffset.x, e) + ", " + a(-this.pathOffset.y, e) + ")"
                },
                toClipPathSVG: function(e) {
                  var t = this._getOffsetTransform();
                  return "\t" + this._createBaseClipPathSVGMarkup(this._toSVG(), {
                    reviver: e,
                    additionalTransform: t
                  })
                },
                toSVG: function(e) {
                  var t = this._getOffsetTransform();
                  return this._createBaseSVGMarkup(this._toSVG(), {
                    reviver: e,
                    additionalTransform: t
                  })
                },
                complexity: function() {
                  return this.path.length
                },
                _calcDimensions: function() {
                  for (var e, i, o = [], a = [], s = 0, l = 0, c = 0, u = 0, h = 0, p = this.path.length; h < p; ++h) {
                    switch ((e = this.path[h])[0]) {
                      case "L":
                        c = e[1], u = e[2], i = [];
                        break;
                      case "M":
                        s = c = e[1], l = u = e[2], i = [];
                        break;
                      case "C":
                        i = t.util.getBoundsOfCurve(c, u, e[1], e[2], e[3], e[4], e[5], e[6]), c = e[5], u = e[6];
                        break;
                      case "Q":
                        i = t.util.getBoundsOfCurve(c, u, e[1], e[2], e[1], e[2], e[3], e[4]), c = e[3], u = e[4];
                        break;
                      case "z":
                      case "Z":
                        c = s, u = l
                    }
                    i.forEach((function(e) {
                      o.push(e.x), a.push(e.y)
                    })), o.push(c), a.push(u)
                  }
                  var d = n(o) || 0,
                    f = n(a) || 0;
                  return {
                    left: d,
                    top: f,
                    width: (r(o) || 0) - d,
                    height: (r(a) || 0) - f
                  }
                }
              }), t.Path.fromObject = function(e, n) {
                if ("string" == typeof e.sourcePath) {
                  var r = e.sourcePath;
                  t.loadSVGFromURL(r, (function(r) {
                    var i = r[0];
                    i.setOptions(e), e.clipPath ? t.util.enlivenObjects([e.clipPath], (function(e) {
                      i.clipPath = e[0], n && n(i)
                    })) : n && n(i)
                  }))
                } else t.Object._fromObject("Path", e, n, "path")
              }, t.Path.ATTRIBUTE_NAMES = t.SHARED_ATTRIBUTES.concat(["d"]), t.Path.fromElement = function(e, n, r) {
                var o = t.parseAttributes(e, t.Path.ATTRIBUTE_NAMES);
                o.fromSVG = !0, n(new t.Path(o.d, i(o, r)))
              })
            }(e),
            function(e) {
              var t = e.fabric || (e.fabric = {}),
                n = t.util.array.min,
                r = t.util.array.max;
              t.Group || (t.Group = t.util.createClass(t.Object, t.Collection, {
                type: "group",
                strokeWidth: 0,
                subTargetCheck: !1,
                cacheProperties: [],
                useSetOnGroup: !1,
                initialize: function(e, t, n) {
                  t = t || {}, this._objects = [], n && this.callSuper("initialize", t), this._objects = e || [];
                  for (var r = this._objects.length; r--;) this._objects[r].group = this;
                  if (n) this._updateObjectsACoords();
                  else {
                    var i = t && t.centerPoint;
                    void 0 !== t.originX && (this.originX = t.originX), void 0 !== t.originY && (this.originY = t.originY), i || this._calcBounds(), this._updateObjectsCoords(i), delete t.centerPoint, this.callSuper("initialize", t)
                  }
                  this.setCoords()
                },
                _updateObjectsACoords: function() {
                  for (var e = this._objects.length; e--;) this._objects[e].setCoords(true)
                },
                _updateObjectsCoords: function(e) {
                  e = e || this.getCenterPoint();
                  for (var t = this._objects.length; t--;) this._updateObjectCoords(this._objects[t], e)
                },
                _updateObjectCoords: function(e, t) {
                  var n = e.left,
                    r = e.top;
                  e.set({
                    left: n - t.x,
                    top: r - t.y
                  }), e.group = this, e.setCoords(!0)
                },
                toString: function() {
                  return "#<fabric.Group: (" + this.complexity() + ")>"
                },
                addWithUpdate: function(e) {
                  var n = !!this.group;
                  return this._restoreObjectsState(), t.util.resetObjectTransform(this), e && (n && t.util.removeTransformFromObject(e, this.group.calcTransformMatrix()), this._objects.push(e), e.group = this, e._set("canvas", this
                    .canvas)), this._calcBounds(), this._updateObjectsCoords(), this.dirty = !0, n ? this.group.addWithUpdate() : this.setCoords(), this
                },
                removeWithUpdate: function(e) {
                  return this._restoreObjectsState(), t.util.resetObjectTransform(this), this.remove(e), this._calcBounds(), this._updateObjectsCoords(), this.setCoords(), this.dirty = !0, this
                },
                _onObjectAdded: function(e) {
                  this.dirty = !0, e.group = this, e._set("canvas", this.canvas)
                },
                _onObjectRemoved: function(e) {
                  this.dirty = !0, delete e.group
                },
                _set: function(e, n) {
                  var r = this._objects.length;
                  if (this.useSetOnGroup)
                    for (; r--;) this._objects[r].setOnGroup(e, n);
                  if ("canvas" === e)
                    for (; r--;) this._objects[r]._set(e, n);
                  t.Object.prototype._set.call(this, e, n)
                },
                toObject: function(e) {
                  var n = this.includeDefaultValues,
                    r = this._objects.filter((function(e) {
                      return !e.excludeFromExport
                    })).map((function(t) {
                      var r = t.includeDefaultValues;
                      t.includeDefaultValues = n;
                      var i = t.toObject(e);
                      return t.includeDefaultValues = r, i
                    })),
                    i = t.Object.prototype.toObject.call(this, e);
                  return i.objects = r, i
                },
                toDatalessObject: function(e) {
                  var n, r = this.sourcePath;
                  if (r) n = r;
                  else {
                    var i = this.includeDefaultValues;
                    n = this._objects.map((function(t) {
                      var n = t.includeDefaultValues;
                      t.includeDefaultValues = i;
                      var r = t.toDatalessObject(e);
                      return t.includeDefaultValues = n, r
                    }))
                  }
                  var o = t.Object.prototype.toDatalessObject.call(this, e);
                  return o.objects = n, o
                },
                render: function(e) {
                  this._transformDone = !0, this.callSuper("render", e), this._transformDone = !1
                },
                shouldCache: function() {
                  var e = t.Object.prototype.shouldCache.call(this);
                  if (e)
                    for (var n = 0, r = this._objects.length; n < r; n++)
                      if (this._objects[n].willDrawShadow()) return this.ownCaching = !1, !1;
                  return e
                },
                willDrawShadow: function() {
                  if (t.Object.prototype.willDrawShadow.call(this)) return !0;
                  for (var e = 0, n = this._objects.length; e < n; e++)
                    if (this._objects[e].willDrawShadow()) return !0;
                  return !1
                },
                isOnACache: function() {
                  return this.ownCaching || this.group && this.group.isOnACache()
                },
                drawObject: function(e) {
                  for (var t = 0, n = this._objects.length; t < n; t++) this._objects[t].render(e);
                  this._drawClipPath(e, this.clipPath)
                },
                isCacheDirty: function(e) {
                  if (this.callSuper("isCacheDirty", e)) return !0;
                  if (!this.statefullCache) return !1;
                  for (var t = 0, n = this._objects.length; t < n; t++)
                    if (this._objects[t].isCacheDirty(!0)) {
                      if (this._cacheCanvas) {
                        var r = this.cacheWidth / this.zoomX,
                          i = this.cacheHeight / this.zoomY;
                        this._cacheContext.clearRect(-r / 2, -i / 2, r, i)
                      }
                      return !0
                    } return !1
                },
                _restoreObjectsState: function() {
                  var e = this.calcOwnMatrix();
                  return this._objects.forEach((function(n) {
                    t.util.addTransformToObject(n, e), delete n.group, n.setCoords()
                  })), this
                },
                destroy: function() {
                  return this._objects.forEach((function(e) {
                    e.set("dirty", !0)
                  })), this._restoreObjectsState()
                },
                dispose: function() {
                  this.callSuper("dispose"), this.forEachObject((function(e) {
                    e.dispose && e.dispose()
                  })), this._objects = []
                },
                toActiveSelection: function() {
                  if (this.canvas) {
                    var e = this._objects,
                      n = this.canvas;
                    this._objects = [];
                    var r = this.toObject();
                    delete r.objects;
                    var i = new t.ActiveSelection([]);
                    return i.set(r), i.type = "activeSelection", n.remove(this), e.forEach((function(e) {
                      e.group = i, e.dirty = !0, n.add(e)
                    })), i.canvas = n, i._objects = e, n._activeObject = i, i.setCoords(), i
                  }
                },
                ungroupOnCanvas: function() {
                  return this._restoreObjectsState()
                },
                setObjectsCoords: function() {
                  return this.forEachObject((function(e) {
                    e.setCoords(true)
                  })), this
                },
                _calcBounds: function(e) {
                  for (var t, n, r, i, o = [], a = [], s = ["tr", "br", "bl", "tl"], l = 0, c = this._objects.length, u = s.length; l < c; ++l) {
                    for (r = (t = this._objects[l]).calcACoords(), i = 0; i < u; i++) n = s[i], o.push(r[n].x), a.push(r[n].y);
                    t.aCoords = r
                  }
                  this._getBounds(o, a, e)
                },
                _getBounds: function(e, i, o) {
                  var a = new t.Point(n(e), n(i)),
                    s = new t.Point(r(e), r(i)),
                    l = a.y || 0,
                    c = a.x || 0,
                    u = s.x - a.x || 0,
                    h = s.y - a.y || 0;
                  this.width = u, this.height = h, o || this.setPositionByOrigin({
                    x: c,
                    y: l
                  }, "left", "top")
                },
                _toSVG: function(e) {
                  for (var t = ["<g ", "COMMON_PARTS", " >\n"], n = 0, r = this._objects.length; n < r; n++) t.push("\t\t", this._objects[n].toSVG(e));
                  return t.push("</g>\n"), t
                },
                getSvgStyles: function() {
                  var e = void 0 !== this.opacity && 1 !== this.opacity ? "opacity: " + this.opacity + ";" : "",
                    t = this.visible ? "" : " visibility: hidden;";
                  return [e, this.getSvgFilter(), t].join("")
                },
                toClipPathSVG: function(e) {
                  for (var t = [], n = 0, r = this._objects.length; n < r; n++) t.push("\t", this._objects[n].toClipPathSVG(e));
                  return this._createBaseClipPathSVGMarkup(t, {
                    reviver: e
                  })
                }
              }), t.Group.fromObject = function(e, n) {
                var r = e.objects,
                  i = t.util.object.clone(e, !0);
                delete i.objects, "string" != typeof r ? t.util.enlivenObjects(r, (function(r) {
                  t.util.enlivenObjectEnlivables(e, i, (function() {
                    n && n(new t.Group(r, i, !0))
                  }))
                })) : t.loadSVGFromURL(r, (function(o) {
                  var a = t.util.groupSVGElements(o, e, r),
                    s = i.clipPath;
                  delete i.clipPath, a.set(i), s ? t.util.enlivenObjects([s], (function(e) {
                    a.clipPath = e[0], n && n(a)
                  })) : n && n(a)
                }))
              })
            }(e),
            function(e) {
              var t = e.fabric || (e.fabric = {});
              t.ActiveSelection || (t.ActiveSelection = t.util.createClass(t.Group, {
                type: "activeSelection",
                initialize: function(e, n) {
                  n = n || {}, this._objects = e || [];
                  for (var r = this._objects.length; r--;) this._objects[r].group = this;
                  n.originX && (this.originX = n.originX), n.originY && (this.originY = n.originY), this._calcBounds(), this._updateObjectsCoords(), t.Object.prototype.initialize.call(this, n), this.setCoords()
                },
                toGroup: function() {
                  var e = this._objects.concat();
                  this._objects = [];
                  var n = t.Object.prototype.toObject.call(this),
                    r = new t.Group([]);
                  if (delete n.type, r.set(n), e.forEach((function(e) {
                      e.canvas.remove(e), e.group = r
                    })), r._objects = e, !this.canvas) return r;
                  var i = this.canvas;
                  return i.add(r), i._activeObject = r, r.setCoords(), r
                },
                onDeselect: function() {
                  return this.destroy(), !1
                },
                toString: function() {
                  return "#<fabric.ActiveSelection: (" + this.complexity() + ")>"
                },
                shouldCache: function() {
                  return !1
                },
                isOnACache: function() {
                  return !1
                },
                _renderControls: function(e, t, n) {
                  e.save(), e.globalAlpha = this.isMoving ? this.borderOpacityWhenMoving : 1, this.callSuper("_renderControls", e, t), void 0 === (n = n || {}).hasControls && (n.hasControls = !1), n.forActiveSelection = !0;
                  for (var r = 0, i = this._objects.length; r < i; r++) this._objects[r]._renderControls(e, n);
                  e.restore()
                }
              }), t.ActiveSelection.fromObject = function(e, n) {
                t.util.enlivenObjects(e.objects, (function(r) {
                  delete e.objects, n && n(new t.ActiveSelection(r, e, !0))
                }))
              })
            }(e),
            function(e) {
              var t = v.util.object.extend;
              e.fabric || (e.fabric = {}), e.fabric.Image ? v.warn("fabric.Image is already defined.") : (v.Image = v.util.createClass(v.Object, {
                type: "image",
                strokeWidth: 0,
                srcFromAttribute: !1,
                _lastScaleX: 1,
                _lastScaleY: 1,
                _filterScalingX: 1,
                _filterScalingY: 1,
                minimumScaleTrigger: .5,
                stateProperties: v.Object.prototype.stateProperties.concat("cropX", "cropY"),
                cacheProperties: v.Object.prototype.cacheProperties.concat("cropX", "cropY"),
                cacheKey: "",
                cropX: 0,
                cropY: 0,
                imageSmoothing: !0,
                initialize: function(e, t) {
                  t || (t = {}), this.filters = [], this.cacheKey = "texture" + v.Object.__uid++, this.callSuper("initialize", t), this._initElement(e, t)
                },
                getElement: function() {
                  return this._element || {}
                },
                setElement: function(e, t) {
                  return this.removeTexture(this.cacheKey), this.removeTexture(this.cacheKey + "_filtered"), this._element = e, this._originalElement = e, this._initConfig(t), 0 !== this.filters.length && this.applyFilters(), this
                    .resizeFilter && this.applyResizeFilters(), this
                },
                removeTexture: function(e) {
                  var t = v.filterBackend;
                  t && t.evictCachesForKey && t.evictCachesForKey(e)
                },
                dispose: function() {
                  this.callSuper("dispose"), this.removeTexture(this.cacheKey), this.removeTexture(this.cacheKey + "_filtered"), this._cacheContext = void 0, ["_originalElement", "_element", "_filteredEl", "_cacheCanvas"].forEach(
                    function(e) {
                      v.util.cleanUpJsdomNode(this[e]), this[e] = void 0
                    }.bind(this))
                },
                getCrossOrigin: function() {
                  return this._originalElement && (this._originalElement.crossOrigin || null)
                },
                getOriginalSize: function() {
                  var e = this.getElement();
                  return {
                    width: e.naturalWidth || e.width,
                    height: e.naturalHeight || e.height
                  }
                },
                _stroke: function(e) {
                  if (this.stroke && 0 !== this.strokeWidth) {
                    var t = this.width / 2,
                      n = this.height / 2;
                    e.beginPath(), e.moveTo(-t, -n), e.lineTo(t, -n), e.lineTo(t, n), e.lineTo(-t, n), e.lineTo(-t, -n), e.closePath()
                  }
                },
                toObject: function(e) {
                  var n = [];
                  this.filters.forEach((function(e) {
                    e && n.push(e.toObject())
                  }));
                  var r = t(this.callSuper("toObject", ["cropX", "cropY"].concat(e)), {
                    src: this.getSrc(),
                    crossOrigin: this.getCrossOrigin(),
                    filters: n
                  });
                  return this.resizeFilter && (r.resizeFilter = this.resizeFilter.toObject()), r
                },
                hasCrop: function() {
                  return this.cropX || this.cropY || this.width < this._element.width || this.height < this._element.height
                },
                _toSVG: function() {
                  var e, t = [],
                    n = [],
                    r = this._element,
                    i = -this.width / 2,
                    o = -this.height / 2,
                    a = "",
                    s = "";
                  if (!r) return [];
                  if (this.hasCrop()) {
                    var l = v.Object.__uid++;
                    t.push('<clipPath id="imageCrop_' + l + '">\n', '\t<rect x="' + i + '" y="' + o + '" width="' + this.width + '" height="' + this.height + '" />\n', "</clipPath>\n"), a = ' clip-path="url(#imageCrop_' + l + ')" '
                  }
                  if (this.imageSmoothing || (s = '" image-rendering="optimizeSpeed'), n.push("\t<image ", "COMMON_PARTS", 'xlink:href="', this.getSvgSrc(!0), '" x="', i - this.cropX, '" y="', o - this.cropY, '" width="', r.width || r
                      .naturalWidth, '" height="', r.height || r.height, s, '"', a, "></image>\n"), this.stroke || this.strokeDashArray) {
                    var c = this.fill;
                    this.fill = null, e = ["\t<rect ", 'x="', i, '" y="', o, '" width="', this.width, '" height="', this.height, '" style="', this.getSvgStyles(), '"/>\n'], this.fill = c
                  }
                  return t = "fill" !== this.paintFirst ? t.concat(e, n) : t.concat(n, e)
                },
                getSrc: function(e) {
                  var t = e ? this._element : this._originalElement;
                  return t ? t.toDataURL ? t.toDataURL() : this.srcFromAttribute ? t.getAttribute("src") : t.src : this.src || ""
                },
                setSrc: function(e, t, n) {
                  return v.util.loadImage(e, (function(e, r) {
                    this.setElement(e, n), this._setWidthHeight(), t && t(this, r)
                  }), this, n && n.crossOrigin), this
                },
                toString: function() {
                  return '#<fabric.Image: { src: "' + this.getSrc() + '" }>'
                },
                applyResizeFilters: function() {
                  var e = this.resizeFilter,
                    t = this.minimumScaleTrigger,
                    n = this.getTotalObjectScaling(),
                    r = n.scaleX,
                    i = n.scaleY,
                    o = this._filteredEl || this._originalElement;
                  if (this.group && this.set("dirty", !0), !e || r > t && i > t) return this._element = o, this._filterScalingX = 1, this._filterScalingY = 1, this._lastScaleX = r, void(this._lastScaleY = i);
                  v.filterBackend || (v.filterBackend = v.initFilterBackend());
                  var a = v.util.createCanvasElement(),
                    s = this._filteredEl ? this.cacheKey + "_filtered" : this.cacheKey,
                    l = o.width,
                    c = o.height;
                  a.width = l, a.height = c, this._element = a, this._lastScaleX = e.scaleX = r, this._lastScaleY = e.scaleY = i, v.filterBackend.applyFilters([e], o, l, c, this._element, s), this._filterScalingX = a.width / this
                    ._originalElement.width, this._filterScalingY = a.height / this._originalElement.height
                },
                applyFilters: function(e) {
                  if (e = (e = e || this.filters || []).filter((function(e) {
                      return e && !e.isNeutralState()
                    })), this.set("dirty", !0), this.removeTexture(this.cacheKey + "_filtered"), 0 === e.length) return this._element = this._originalElement, this._filteredEl = null, this._filterScalingX = 1, this._filterScalingY = 1,
                    this;
                  var t = this._originalElement,
                    n = t.naturalWidth || t.width,
                    r = t.naturalHeight || t.height;
                  if (this._element === this._originalElement) {
                    var i = v.util.createCanvasElement();
                    i.width = n, i.height = r, this._element = i, this._filteredEl = i
                  } else this._element = this._filteredEl, this._filteredEl.getContext("2d").clearRect(0, 0, n, r), this._lastScaleX = 1, this._lastScaleY = 1;
                  return v.filterBackend || (v.filterBackend = v.initFilterBackend()), v.filterBackend.applyFilters(e, this._originalElement, n, r, this._element, this.cacheKey), this._originalElement.width === this._element.width && this
                    ._originalElement.height === this._element.height || (this._filterScalingX = this._element.width / this._originalElement.width, this._filterScalingY = this._element.height / this._originalElement.height), this
                },
                _render: function(e) {
                  v.util.setImageSmoothing(e, this.imageSmoothing), !0 !== this.isMoving && this.resizeFilter && this._needsResize() && this.applyResizeFilters(), this._stroke(e), this._renderPaintInOrder(e)
                },
                drawCacheOnCanvas: function(e) {
                  v.util.setImageSmoothing(e, this.imageSmoothing), v.Object.prototype.drawCacheOnCanvas.call(this, e)
                },
                shouldCache: function() {
                  return this.needsItsOwnCache()
                },
                _renderFill: function(e) {
                  var t = this._element;
                  if (t) {
                    var n = this._filterScalingX,
                      r = this._filterScalingY,
                      i = this.width,
                      o = this.height,
                      a = Math.min,
                      s = Math.max,
                      l = s(this.cropX, 0),
                      c = s(this.cropY, 0),
                      u = t.naturalWidth || t.width,
                      h = t.naturalHeight || t.height,
                      p = l * n,
                      d = c * r,
                      f = a(i * n, u - p),
                      g = a(o * r, h - d),
                      m = -i / 2,
                      v = -o / 2,
                      _ = a(i, u / n - l),
                      b = a(o, h / r - c);
                    t && e.drawImage(t, p, d, f, g, m, v, _, b)
                  }
                },
                _needsResize: function() {
                  var e = this.getTotalObjectScaling();
                  return e.scaleX !== this._lastScaleX || e.scaleY !== this._lastScaleY
                },
                _resetWidthHeight: function() {
                  this.set(this.getOriginalSize())
                },
                _initElement: function(e, t) {
                  this.setElement(v.util.getById(e), t), v.util.addClass(this.getElement(), v.Image.CSS_CANVAS)
                },
                _initConfig: function(e) {
                  e || (e = {}), this.setOptions(e), this._setWidthHeight(e)
                },
                _initFilters: function(e, t) {
                  e && e.length ? v.util.enlivenObjects(e, (function(e) {
                    t && t(e)
                  }), "fabric.Image.filters") : t && t()
                },
                _setWidthHeight: function(e) {
                  e || (e = {});
                  var t = this.getElement();
                  this.width = e.width || t.naturalWidth || t.width || 0, this.height = e.height || t.naturalHeight || t.height || 0
                },
                parsePreserveAspectRatioAttribute: function() {
                  var e, t = v.util.parsePreserveAspectRatioAttribute(this.preserveAspectRatio || ""),
                    n = this._element.width,
                    r = this._element.height,
                    i = 1,
                    o = 1,
                    a = 0,
                    s = 0,
                    l = 0,
                    c = 0,
                    u = this.width,
                    h = this.height,
                    p = {
                      width: u,
                      height: h
                    };
                  return !t || "none" === t.alignX && "none" === t.alignY ? (i = u / n, o = h / r) : ("meet" === t.meetOrSlice && (e = (u - n * (i = o = v.util.findScaleToFit(this._element, p))) / 2, "Min" === t.alignX && (a = -e),
                    "Max" === t.alignX && (a = e), e = (h - r * o) / 2, "Min" === t.alignY && (s = -e), "Max" === t.alignY && (s = e)), "slice" === t.meetOrSlice && (e = n - u / (i = o = v.util.findScaleToCover(this._element, p)),
                    "Mid" === t.alignX && (l = e / 2), "Max" === t.alignX && (l = e), e = r - h / o, "Mid" === t.alignY && (c = e / 2), "Max" === t.alignY && (c = e), n = u / i, r = h / o)), {
                    width: n,
                    height: r,
                    scaleX: i,
                    scaleY: o,
                    offsetLeft: a,
                    offsetTop: s,
                    cropX: l,
                    cropY: c
                  }
                }
              }), v.Image.CSS_CANVAS = "canvas-img", v.Image.prototype.getSvgSrc = v.Image.prototype.getSrc, v.Image.fromObject = function(e, t) {
                var n = v.util.object.clone(e);
                v.util.loadImage(n.src, (function(e, r) {
                  r ? t && t(null, !0) : v.Image.prototype._initFilters.call(n, n.filters, (function(r) {
                    n.filters = r || [], v.Image.prototype._initFilters.call(n, [n.resizeFilter], (function(r) {
                      n.resizeFilter = r[0], v.util.enlivenObjectEnlivables(n, n, (function() {
                        var r = new v.Image(e, n);
                        t(r, !1)
                      }))
                    }))
                  }))
                }), null, n.crossOrigin)
              }, v.Image.fromURL = function(e, t, n) {
                v.util.loadImage(e, (function(e, r) {
                  t && t(new v.Image(e, n), r)
                }), null, n && n.crossOrigin)
              }, v.Image.ATTRIBUTE_NAMES = v.SHARED_ATTRIBUTES.concat("x y width height preserveAspectRatio xlink:href crossOrigin image-rendering".split(" ")), v.Image.fromElement = function(e, n, r) {
                var i = v.parseAttributes(e, v.Image.ATTRIBUTE_NAMES);
                v.Image.fromURL(i["xlink:href"], n, t(r ? v.util.object.clone(r) : {}, i))
              })
            }(e), v.util.object.extend(v.Object.prototype, {
              _getAngleValueForStraighten: function() {
                var e = this.angle % 360;
                return e > 0 ? 90 * Math.round((e - 1) / 90) : 90 * Math.round(e / 90)
              },
              straighten: function() {
                return this.rotate(this._getAngleValueForStraighten())
              },
              fxStraighten: function(e) {
                var t = function() {},
                  n = (e = e || {}).onComplete || t,
                  r = e.onChange || t,
                  i = this;
                return v.util.animate({
                  target: this,
                  startValue: this.get("angle"),
                  endValue: this._getAngleValueForStraighten(),
                  duration: this.FX_DURATION,
                  onChange: function(e) {
                    i.rotate(e), r()
                  },
                  onComplete: function() {
                    i.setCoords(), n()
                  }
                })
              }
            }), v.util.object.extend(v.StaticCanvas.prototype, {
              straightenObject: function(e) {
                return e.straighten(), this.requestRenderAll(), this
              },
              fxStraightenObject: function(e) {
                return e.fxStraighten({
                  onChange: this.requestRenderAllBound
                })
              }
            }),
            function() {
              function e(e, t) {
                var n = "precision " + t + " float;\nvoid main(){}",
                  r = e.createShader(e.FRAGMENT_SHADER);
                return e.shaderSource(r, n), e.compileShader(r), !!e.getShaderParameter(r, e.COMPILE_STATUS)
              }

              function t(e) {
                e && e.tileSize && (this.tileSize = e.tileSize), this.setupGLContext(this.tileSize, this.tileSize), this.captureGPUInfo()
              }
              v.isWebglSupported = function(t) {
                if (v.isLikelyNode) return !1;
                t = t || v.WebglFilterBackend.prototype.tileSize;
                var n = document.createElement("canvas"),
                  r = n.getContext("webgl") || n.getContext("experimental-webgl"),
                  i = !1;
                if (r) {
                  v.maxTextureSize = r.getParameter(r.MAX_TEXTURE_SIZE), i = v.maxTextureSize >= t;
                  for (var o = ["highp", "mediump", "lowp"], a = 0; a < 3; a++)
                    if (e(r, o[a])) {
                      v.webGlPrecision = o[a];
                      break
                    }
                }
                return this.isSupported = i, i
              }, v.WebglFilterBackend = t, t.prototype = {
                tileSize: 2048,
                resources: {},
                setupGLContext: function(e, t) {
                  this.dispose(), this.createWebGLCanvas(e, t), this.aPosition = new Float32Array([0, 0, 0, 1, 1, 0, 1, 1]), this.chooseFastestCopyGLTo2DMethod(e, t)
                },
                chooseFastestCopyGLTo2DMethod: function(e, t) {
                  var n, r = void 0 !== window.performance;
                  try {
                    new ImageData(1, 1), n = !0
                  } catch (e) {
                    n = !1
                  }
                  var i = "undefined" != typeof ArrayBuffer,
                    o = "undefined" != typeof Uint8ClampedArray;
                  if (r && n && i && o) {
                    var a = v.util.createCanvasElement(),
                      s = new ArrayBuffer(e * t * 4);
                    if (v.forceGLPutImageData) return this.imageBuffer = s, void(this.copyGLTo2D = y);
                    var l, c, u = {
                      imageBuffer: s,
                      destinationWidth: e,
                      destinationHeight: t,
                      targetCanvas: a
                    };
                    a.width = e, a.height = t, l = window.performance.now(), b.call(u, this.gl, u), c = window.performance.now() - l, l = window.performance.now(), y.call(u, this.gl, u), c > window.performance.now() - l ? (this.imageBuffer =
                      s, this.copyGLTo2D = y) : this.copyGLTo2D = b
                  }
                },
                createWebGLCanvas: function(e, t) {
                  var n = v.util.createCanvasElement();
                  n.width = e, n.height = t;
                  var r = {
                      alpha: !0,
                      premultipliedAlpha: !1,
                      depth: !1,
                      stencil: !1,
                      antialias: !1
                    },
                    i = n.getContext("webgl", r);
                  i || (i = n.getContext("experimental-webgl", r)), i && (i.clearColor(0, 0, 0, 0), this.canvas = n, this.gl = i)
                },
                applyFilters: function(e, t, n, r, i, o) {
                  var a, s = this.gl;
                  o && (a = this.getCachedTexture(o, t));
                  var l = {
                      originalWidth: t.width || t.originalWidth,
                      originalHeight: t.height || t.originalHeight,
                      sourceWidth: n,
                      sourceHeight: r,
                      destinationWidth: n,
                      destinationHeight: r,
                      context: s,
                      sourceTexture: this.createTexture(s, n, r, !a && t),
                      targetTexture: this.createTexture(s, n, r),
                      originalTexture: a || this.createTexture(s, n, r, !a && t),
                      passes: e.length,
                      webgl: !0,
                      aPosition: this.aPosition,
                      programCache: this.programCache,
                      pass: 0,
                      filterBackend: this,
                      targetCanvas: i
                    },
                    c = s.createFramebuffer();
                  return s.bindFramebuffer(s.FRAMEBUFFER, c), e.forEach((function(e) {
                      e && e.applyTo(l)
                    })),
                    function(e) {
                      var t = e.targetCanvas,
                        n = t.width,
                        r = t.height,
                        i = e.destinationWidth,
                        o = e.destinationHeight;
                      n === i && r === o || (t.width = i, t.height = o)
                    }(l), this.copyGLTo2D(s, l), s.bindTexture(s.TEXTURE_2D, null), s.deleteTexture(l.sourceTexture), s.deleteTexture(l.targetTexture), s.deleteFramebuffer(c), i.getContext("2d").setTransform(1, 0, 0, 1, 0, 0), l
                },
                dispose: function() {
                  this.canvas && (this.canvas = null, this.gl = null), this.clearWebGLCaches()
                },
                clearWebGLCaches: function() {
                  this.programCache = {}, this.textureCache = {}
                },
                createTexture: function(e, t, n, r, i) {
                  var o = e.createTexture();
                  return e.bindTexture(e.TEXTURE_2D, o), e.texParameteri(e.TEXTURE_2D, e.TEXTURE_MAG_FILTER, i || e.NEAREST), e.texParameteri(e.TEXTURE_2D, e.TEXTURE_MIN_FILTER, i || e.NEAREST), e.texParameteri(e.TEXTURE_2D, e.TEXTURE_WRAP_S,
                    e.CLAMP_TO_EDGE), e.texParameteri(e.TEXTURE_2D, e.TEXTURE_WRAP_T, e.CLAMP_TO_EDGE), r ? e.texImage2D(e.TEXTURE_2D, 0, e.RGBA, e.RGBA, e.UNSIGNED_BYTE, r) : e.texImage2D(e.TEXTURE_2D, 0, e.RGBA, t, n, 0, e.RGBA, e
                    .UNSIGNED_BYTE, null), o
                },
                getCachedTexture: function(e, t) {
                  if (this.textureCache[e]) return this.textureCache[e];
                  var n = this.createTexture(this.gl, t.width, t.height, t);
                  return this.textureCache[e] = n, n
                },
                evictCachesForKey: function(e) {
                  this.textureCache[e] && (this.gl.deleteTexture(this.textureCache[e]), delete this.textureCache[e])
                },
                copyGLTo2D: b,
                captureGPUInfo: function() {
                  if (this.gpuInfo) return this.gpuInfo;
                  var e = this.gl,
                    t = {
                      renderer: "",
                      vendor: ""
                    };
                  if (!e) return t;
                  var n = e.getExtension("WEBGL_debug_renderer_info");
                  if (n) {
                    var r = e.getParameter(n.UNMASKED_RENDERER_WEBGL),
                      i = e.getParameter(n.UNMASKED_VENDOR_WEBGL);
                    r && (t.renderer = r.toLowerCase()), i && (t.vendor = i.toLowerCase())
                  }
                  return this.gpuInfo = t, t
                }
              }
            }(),
            function() {
              var e = function() {};

              function t() {}
              v.Canvas2dFilterBackend = t, t.prototype = {
                evictCachesForKey: e,
                dispose: e,
                clearWebGLCaches: e,
                resources: {},
                applyFilters: function(e, t, n, r, i) {
                  var o = i.getContext("2d");
                  o.drawImage(t, 0, 0, n, r);
                  var a = {
                    sourceWidth: n,
                    sourceHeight: r,
                    imageData: o.getImageData(0, 0, n, r),
                    originalEl: t,
                    originalImageData: o.getImageData(0, 0, n, r),
                    canvasEl: i,
                    ctx: o,
                    filterBackend: this
                  };
                  return e.forEach((function(e) {
                    e.applyTo(a)
                  })), a.imageData.width === n && a.imageData.height === r || (i.width = a.imageData.width, i.height = a.imageData.height), o.putImageData(a.imageData, 0, 0), a
                }
              }
            }(), v.Image = v.Image || {}, v.Image.filters = v.Image.filters || {}, v.Image.filters.BaseFilter = v.util.createClass({
              type: "BaseFilter",
              vertexSource: "attribute vec2 aPosition;\nvarying vec2 vTexCoord;\nvoid main() {\nvTexCoord = aPosition;\ngl_Position = vec4(aPosition * 2.0 - 1.0, 0.0, 1.0);\n}",
              fragmentSource: "precision highp float;\nvarying vec2 vTexCoord;\nuniform sampler2D uTexture;\nvoid main() {\ngl_FragColor = texture2D(uTexture, vTexCoord);\n}",
              initialize: function(e) {
                e && this.setOptions(e)
              },
              setOptions: function(e) {
                for (var t in e) this[t] = e[t]
              },
              createProgram: function(e, t, n) {
                t = t || this.fragmentSource, n = n || this.vertexSource, "highp" !== v.webGlPrecision && (t = t.replace(/precision highp float/g, "precision " + v.webGlPrecision + " float"));
                var r = e.createShader(e.VERTEX_SHADER);
                if (e.shaderSource(r, n), e.compileShader(r), !e.getShaderParameter(r, e.COMPILE_STATUS)) throw new Error("Vertex shader compile error for " + this.type + ": " + e.getShaderInfoLog(r));
                var i = e.createShader(e.FRAGMENT_SHADER);
                if (e.shaderSource(i, t), e.compileShader(i), !e.getShaderParameter(i, e.COMPILE_STATUS)) throw new Error("Fragment shader compile error for " + this.type + ": " + e.getShaderInfoLog(i));
                var o = e.createProgram();
                if (e.attachShader(o, r), e.attachShader(o, i), e.linkProgram(o), !e.getProgramParameter(o, e.LINK_STATUS)) throw new Error('Shader link error for "${this.type}" ' + e.getProgramInfoLog(o));
                var a = this.getAttributeLocations(e, o),
                  s = this.getUniformLocations(e, o) || {};
                return s.uStepW = e.getUniformLocation(o, "uStepW"), s.uStepH = e.getUniformLocation(o, "uStepH"), {
                  program: o,
                  attributeLocations: a,
                  uniformLocations: s
                }
              },
              getAttributeLocations: function(e, t) {
                return {
                  aPosition: e.getAttribLocation(t, "aPosition")
                }
              },
              getUniformLocations: function() {
                return {}
              },
              sendAttributeData: function(e, t, n) {
                var r = t.aPosition,
                  i = e.createBuffer();
                e.bindBuffer(e.ARRAY_BUFFER, i), e.enableVertexAttribArray(r), e.vertexAttribPointer(r, 2, e.FLOAT, !1, 0, 0), e.bufferData(e.ARRAY_BUFFER, n, e.STATIC_DRAW)
              },
              _setupFrameBuffer: function(e) {
                var t, n, r = e.context;
                e.passes > 1 ? (t = e.destinationWidth, n = e.destinationHeight, e.sourceWidth === t && e.sourceHeight === n || (r.deleteTexture(e.targetTexture), e.targetTexture = e.filterBackend.createTexture(r, t, n)), r
                  .framebufferTexture2D(r.FRAMEBUFFER, r.COLOR_ATTACHMENT0, r.TEXTURE_2D, e.targetTexture, 0)) : (r.bindFramebuffer(r.FRAMEBUFFER, null), r.finish())
              },
              _swapTextures: function(e) {
                e.passes--, e.pass++;
                var t = e.targetTexture;
                e.targetTexture = e.sourceTexture, e.sourceTexture = t
              },
              isNeutralState: function() {
                var e = this.mainParameter,
                  t = v.Image.filters[this.type].prototype;
                if (e) {
                  if (Array.isArray(t[e])) {
                    for (var n = t[e].length; n--;)
                      if (this[e][n] !== t[e][n]) return !1;
                    return !0
                  }
                  return t[e] === this[e]
                }
                return !1
              },
              applyTo: function(e) {
                e.webgl ? (this._setupFrameBuffer(e), this.applyToWebGL(e), this._swapTextures(e)) : this.applyTo2d(e)
              },
              retrieveShader: function(e) {
                return e.programCache.hasOwnProperty(this.type) || (e.programCache[this.type] = this.createProgram(e.context)), e.programCache[this.type]
              },
              applyToWebGL: function(e) {
                var t = e.context,
                  n = this.retrieveShader(e);
                0 === e.pass && e.originalTexture ? t.bindTexture(t.TEXTURE_2D, e.originalTexture) : t.bindTexture(t.TEXTURE_2D, e.sourceTexture), t.useProgram(n.program), this.sendAttributeData(t, n.attributeLocations, e.aPosition), t
                  .uniform1f(n.uniformLocations.uStepW, 1 / e.sourceWidth), t.uniform1f(n.uniformLocations.uStepH, 1 / e.sourceHeight), this.sendUniformData(t, n.uniformLocations), t.viewport(0, 0, e.destinationWidth, e.destinationHeight), t
                  .drawArrays(t.TRIANGLE_STRIP, 0, 4)
              },
              bindAdditionalTexture: function(e, t, n) {
                e.activeTexture(n), e.bindTexture(e.TEXTURE_2D, t), e.activeTexture(e.TEXTURE0)
              },
              unbindAdditionalTexture: function(e, t) {
                e.activeTexture(t), e.bindTexture(e.TEXTURE_2D, null), e.activeTexture(e.TEXTURE0)
              },
              getMainParameter: function() {
                return this[this.mainParameter]
              },
              setMainParameter: function(e) {
                this[this.mainParameter] = e
              },
              sendUniformData: function() {},
              createHelpLayer: function(e) {
                if (!e.helpLayer) {
                  var t = document.createElement("canvas");
                  t.width = e.sourceWidth, t.height = e.sourceHeight, e.helpLayer = t
                }
              },
              toObject: function() {
                var e = {
                    type: this.type
                  },
                  t = this.mainParameter;
                return t && (e[t] = this[t]), e
              },
              toJSON: function() {
                return this.toObject()
              }
            }), v.Image.filters.BaseFilter.fromObject = function(e, t) {
              var n = new v.Image.filters[e.type](e);
              return t && t(n), n
            },
            function(e) {
              var t = e.fabric || (e.fabric = {}),
                n = t.Image.filters,
                r = t.util.createClass;
              n.ColorMatrix = r(n.BaseFilter, {
                type: "ColorMatrix",
                fragmentSource: "precision highp float;\nuniform sampler2D uTexture;\nvarying vec2 vTexCoord;\nuniform mat4 uColorMatrix;\nuniform vec4 uConstants;\nvoid main() {\nvec4 color = texture2D(uTexture, vTexCoord);\ncolor *= uColorMatrix;\ncolor += uConstants;\ngl_FragColor = color;\n}",
                matrix: [1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0],
                mainParameter: "matrix",
                colorsOnly: !0,
                initialize: function(e) {
                  this.callSuper("initialize", e), this.matrix = this.matrix.slice(0)
                },
                applyTo2d: function(e) {
                  var t, n, r, i, o, a = e.imageData.data,
                    s = a.length,
                    l = this.matrix,
                    c = this.colorsOnly;
                  for (o = 0; o < s; o += 4) t = a[o], n = a[o + 1], r = a[o + 2], c ? (a[o] = t * l[0] + n * l[1] + r * l[2] + 255 * l[4], a[o + 1] = t * l[5] + n * l[6] + r * l[7] + 255 * l[9], a[o + 2] = t * l[10] + n * l[11] + r * l[
                    12] + 255 * l[14]) : (i = a[o + 3], a[o] = t * l[0] + n * l[1] + r * l[2] + i * l[3] + 255 * l[4], a[o + 1] = t * l[5] + n * l[6] + r * l[7] + i * l[8] + 255 * l[9], a[o + 2] = t * l[10] + n * l[11] + r * l[12] + i *
                    l[13] + 255 * l[14], a[o + 3] = t * l[15] + n * l[16] + r * l[17] + i * l[18] + 255 * l[19])
                },
                getUniformLocations: function(e, t) {
                  return {
                    uColorMatrix: e.getUniformLocation(t, "uColorMatrix"),
                    uConstants: e.getUniformLocation(t, "uConstants")
                  }
                },
                sendUniformData: function(e, t) {
                  var n = this.matrix,
                    r = [n[0], n[1], n[2], n[3], n[5], n[6], n[7], n[8], n[10], n[11], n[12], n[13], n[15], n[16], n[17], n[18]],
                    i = [n[4], n[9], n[14], n[19]];
                  e.uniformMatrix4fv(t.uColorMatrix, !1, r), e.uniform4fv(t.uConstants, i)
                }
              }), t.Image.filters.ColorMatrix.fromObject = t.Image.filters.BaseFilter.fromObject
            }(e),
            function(e) {
              var t = e.fabric || (e.fabric = {}),
                n = t.Image.filters,
                r = t.util.createClass;
              n.Brightness = r(n.BaseFilter, {
                type: "Brightness",
                fragmentSource: "precision highp float;\nuniform sampler2D uTexture;\nuniform float uBrightness;\nvarying vec2 vTexCoord;\nvoid main() {\nvec4 color = texture2D(uTexture, vTexCoord);\ncolor.rgb += uBrightness;\ngl_FragColor = color;\n}",
                brightness: 0,
                mainParameter: "brightness",
                applyTo2d: function(e) {
                  if (0 !== this.brightness) {
                    var t, n = e.imageData.data,
                      r = n.length,
                      i = Math.round(255 * this.brightness);
                    for (t = 0; t < r; t += 4) n[t] = n[t] + i, n[t + 1] = n[t + 1] + i, n[t + 2] = n[t + 2] + i
                  }
                },
                getUniformLocations: function(e, t) {
                  return {
                    uBrightness: e.getUniformLocation(t, "uBrightness")
                  }
                },
                sendUniformData: function(e, t) {
                  e.uniform1f(t.uBrightness, this.brightness)
                }
              }), t.Image.filters.Brightness.fromObject = t.Image.filters.BaseFilter.fromObject
            }(e),
            function(e) {
              var t = e.fabric || (e.fabric = {}),
                n = t.util.object.extend,
                r = t.Image.filters,
                i = t.util.createClass;
              r.Convolute = i(r.BaseFilter, {
                type: "Convolute",
                opaque: !1,
                matrix: [0, 0, 0, 0, 1, 0, 0, 0, 0],
                fragmentSource: {
                  Convolute_3_1: "precision highp float;\nuniform sampler2D uTexture;\nuniform float uMatrix[9];\nuniform float uStepW;\nuniform float uStepH;\nvarying vec2 vTexCoord;\nvoid main() {\nvec4 color = vec4(0, 0, 0, 0);\nfor (float h = 0.0; h < 3.0; h+=1.0) {\nfor (float w = 0.0; w < 3.0; w+=1.0) {\nvec2 matrixPos = vec2(uStepW * (w - 1), uStepH * (h - 1));\ncolor += texture2D(uTexture, vTexCoord + matrixPos) * uMatrix[int(h * 3.0 + w)];\n}\n}\ngl_FragColor = color;\n}",
                  Convolute_3_0: "precision highp float;\nuniform sampler2D uTexture;\nuniform float uMatrix[9];\nuniform float uStepW;\nuniform float uStepH;\nvarying vec2 vTexCoord;\nvoid main() {\nvec4 color = vec4(0, 0, 0, 1);\nfor (float h = 0.0; h < 3.0; h+=1.0) {\nfor (float w = 0.0; w < 3.0; w+=1.0) {\nvec2 matrixPos = vec2(uStepW * (w - 1.0), uStepH * (h - 1.0));\ncolor.rgb += texture2D(uTexture, vTexCoord + matrixPos).rgb * uMatrix[int(h * 3.0 + w)];\n}\n}\nfloat alpha = texture2D(uTexture, vTexCoord).a;\ngl_FragColor = color;\ngl_FragColor.a = alpha;\n}",
                  Convolute_5_1: "precision highp float;\nuniform sampler2D uTexture;\nuniform float uMatrix[25];\nuniform float uStepW;\nuniform float uStepH;\nvarying vec2 vTexCoord;\nvoid main() {\nvec4 color = vec4(0, 0, 0, 0);\nfor (float h = 0.0; h < 5.0; h+=1.0) {\nfor (float w = 0.0; w < 5.0; w+=1.0) {\nvec2 matrixPos = vec2(uStepW * (w - 2.0), uStepH * (h - 2.0));\ncolor += texture2D(uTexture, vTexCoord + matrixPos) * uMatrix[int(h * 5.0 + w)];\n}\n}\ngl_FragColor = color;\n}",
                  Convolute_5_0: "precision highp float;\nuniform sampler2D uTexture;\nuniform float uMatrix[25];\nuniform float uStepW;\nuniform float uStepH;\nvarying vec2 vTexCoord;\nvoid main() {\nvec4 color = vec4(0, 0, 0, 1);\nfor (float h = 0.0; h < 5.0; h+=1.0) {\nfor (float w = 0.0; w < 5.0; w+=1.0) {\nvec2 matrixPos = vec2(uStepW * (w - 2.0), uStepH * (h - 2.0));\ncolor.rgb += texture2D(uTexture, vTexCoord + matrixPos).rgb * uMatrix[int(h * 5.0 + w)];\n}\n}\nfloat alpha = texture2D(uTexture, vTexCoord).a;\ngl_FragColor = color;\ngl_FragColor.a = alpha;\n}",
                  Convolute_7_1: "precision highp float;\nuniform sampler2D uTexture;\nuniform float uMatrix[49];\nuniform float uStepW;\nuniform float uStepH;\nvarying vec2 vTexCoord;\nvoid main() {\nvec4 color = vec4(0, 0, 0, 0);\nfor (float h = 0.0; h < 7.0; h+=1.0) {\nfor (float w = 0.0; w < 7.0; w+=1.0) {\nvec2 matrixPos = vec2(uStepW * (w - 3.0), uStepH * (h - 3.0));\ncolor += texture2D(uTexture, vTexCoord + matrixPos) * uMatrix[int(h * 7.0 + w)];\n}\n}\ngl_FragColor = color;\n}",
                  Convolute_7_0: "precision highp float;\nuniform sampler2D uTexture;\nuniform float uMatrix[49];\nuniform float uStepW;\nuniform float uStepH;\nvarying vec2 vTexCoord;\nvoid main() {\nvec4 color = vec4(0, 0, 0, 1);\nfor (float h = 0.0; h < 7.0; h+=1.0) {\nfor (float w = 0.0; w < 7.0; w+=1.0) {\nvec2 matrixPos = vec2(uStepW * (w - 3.0), uStepH * (h - 3.0));\ncolor.rgb += texture2D(uTexture, vTexCoord + matrixPos).rgb * uMatrix[int(h * 7.0 + w)];\n}\n}\nfloat alpha = texture2D(uTexture, vTexCoord).a;\ngl_FragColor = color;\ngl_FragColor.a = alpha;\n}",
                  Convolute_9_1: "precision highp float;\nuniform sampler2D uTexture;\nuniform float uMatrix[81];\nuniform float uStepW;\nuniform float uStepH;\nvarying vec2 vTexCoord;\nvoid main() {\nvec4 color = vec4(0, 0, 0, 0);\nfor (float h = 0.0; h < 9.0; h+=1.0) {\nfor (float w = 0.0; w < 9.0; w+=1.0) {\nvec2 matrixPos = vec2(uStepW * (w - 4.0), uStepH * (h - 4.0));\ncolor += texture2D(uTexture, vTexCoord + matrixPos) * uMatrix[int(h * 9.0 + w)];\n}\n}\ngl_FragColor = color;\n}",
                  Convolute_9_0: "precision highp float;\nuniform sampler2D uTexture;\nuniform float uMatrix[81];\nuniform float uStepW;\nuniform float uStepH;\nvarying vec2 vTexCoord;\nvoid main() {\nvec4 color = vec4(0, 0, 0, 1);\nfor (float h = 0.0; h < 9.0; h+=1.0) {\nfor (float w = 0.0; w < 9.0; w+=1.0) {\nvec2 matrixPos = vec2(uStepW * (w - 4.0), uStepH * (h - 4.0));\ncolor.rgb += texture2D(uTexture, vTexCoord + matrixPos).rgb * uMatrix[int(h * 9.0 + w)];\n}\n}\nfloat alpha = texture2D(uTexture, vTexCoord).a;\ngl_FragColor = color;\ngl_FragColor.a = alpha;\n}"
                },
                retrieveShader: function(e) {
                  var t = Math.sqrt(this.matrix.length),
                    n = this.type + "_" + t + "_" + (this.opaque ? 1 : 0),
                    r = this.fragmentSource[n];
                  return e.programCache.hasOwnProperty(n) || (e.programCache[n] = this.createProgram(e.context, r)), e.programCache[n]
                },
                applyTo2d: function(e) {
                  var t, n, r, i, o, a, s, l, c, u, h, p, d, f = e.imageData,
                    g = f.data,
                    m = this.matrix,
                    v = Math.round(Math.sqrt(m.length)),
                    _ = Math.floor(v / 2),
                    b = f.width,
                    y = f.height,
                    w = e.ctx.createImageData(b, y),
                    x = w.data,
                    k = this.opaque ? 1 : 0;
                  for (h = 0; h < y; h++)
                    for (u = 0; u < b; u++) {
                      for (o = 4 * (h * b + u), t = 0, n = 0, r = 0, i = 0, d = 0; d < v; d++)
                        for (p = 0; p < v; p++) a = u + p - _, (s = h + d - _) < 0 || s >= y || a < 0 || a >= b || (l = 4 * (s * b + a), c = m[d * v + p], t += g[l] * c, n += g[l + 1] * c, r += g[l + 2] * c, k || (i += g[l + 3] * c));
                      x[o] = t, x[o + 1] = n, x[o + 2] = r, x[o + 3] = k ? g[o + 3] : i
                    }
                  e.imageData = w
                },
                getUniformLocations: function(e, t) {
                  return {
                    uMatrix: e.getUniformLocation(t, "uMatrix"),
                    uOpaque: e.getUniformLocation(t, "uOpaque"),
                    uHalfSize: e.getUniformLocation(t, "uHalfSize"),
                    uSize: e.getUniformLocation(t, "uSize")
                  }
                },
                sendUniformData: function(e, t) {
                  e.uniform1fv(t.uMatrix, this.matrix)
                },
                toObject: function() {
                  return n(this.callSuper("toObject"), {
                    opaque: this.opaque,
                    matrix: this.matrix
                  })
                }
              }), t.Image.filters.Convolute.fromObject = t.Image.filters.BaseFilter.fromObject
            }(e),
            function(e) {
              var t = e.fabric || (e.fabric = {}),
                n = t.Image.filters,
                r = t.util.createClass;
              n.Grayscale = r(n.BaseFilter, {
                type: "Grayscale",
                fragmentSource: {
                  average: "precision highp float;\nuniform sampler2D uTexture;\nvarying vec2 vTexCoord;\nvoid main() {\nvec4 color = texture2D(uTexture, vTexCoord);\nfloat average = (color.r + color.b + color.g) / 3.0;\ngl_FragColor = vec4(average, average, average, color.a);\n}",
                  lightness: "precision highp float;\nuniform sampler2D uTexture;\nuniform int uMode;\nvarying vec2 vTexCoord;\nvoid main() {\nvec4 col = texture2D(uTexture, vTexCoord);\nfloat average = (max(max(col.r, col.g),col.b) + min(min(col.r, col.g),col.b)) / 2.0;\ngl_FragColor = vec4(average, average, average, col.a);\n}",
                  luminosity: "precision highp float;\nuniform sampler2D uTexture;\nuniform int uMode;\nvarying vec2 vTexCoord;\nvoid main() {\nvec4 col = texture2D(uTexture, vTexCoord);\nfloat average = 0.21 * col.r + 0.72 * col.g + 0.07 * col.b;\ngl_FragColor = vec4(average, average, average, col.a);\n}"
                },
                mode: "average",
                mainParameter: "mode",
                applyTo2d: function(e) {
                  var t, n, r = e.imageData.data,
                    i = r.length,
                    o = this.mode;
                  for (t = 0; t < i; t += 4) "average" === o ? n = (r[t] + r[t + 1] + r[t + 2]) / 3 : "lightness" === o ? n = (Math.min(r[t], r[t + 1], r[t + 2]) + Math.max(r[t], r[t + 1], r[t + 2])) / 2 : "luminosity" === o && (n = .21 *
                    r[t] + .72 * r[t + 1] + .07 * r[t + 2]), r[t] = n, r[t + 1] = n, r[t + 2] = n
                },
                retrieveShader: function(e) {
                  var t = this.type + "_" + this.mode;
                  if (!e.programCache.hasOwnProperty(t)) {
                    var n = this.fragmentSource[this.mode];
                    e.programCache[t] = this.createProgram(e.context, n)
                  }
                  return e.programCache[t]
                },
                getUniformLocations: function(e, t) {
                  return {
                    uMode: e.getUniformLocation(t, "uMode")
                  }
                },
                sendUniformData: function(e, t) {
                  e.uniform1i(t.uMode, 1)
                },
                isNeutralState: function() {
                  return !1
                }
              }), t.Image.filters.Grayscale.fromObject = t.Image.filters.BaseFilter.fromObject
            }(e),
            function(e) {
              var t = e.fabric || (e.fabric = {}),
                n = t.Image.filters,
                r = t.util.createClass;
              n.Invert = r(n.BaseFilter, {
                type: "Invert",
                fragmentSource: "precision highp float;\nuniform sampler2D uTexture;\nuniform int uInvert;\nvarying vec2 vTexCoord;\nvoid main() {\nvec4 color = texture2D(uTexture, vTexCoord);\nif (uInvert == 1) {\ngl_FragColor = vec4(1.0 - color.r,1.0 -color.g,1.0 -color.b,color.a);\n} else {\ngl_FragColor = color;\n}\n}",
                invert: !0,
                mainParameter: "invert",
                applyTo2d: function(e) {
                  var t, n = e.imageData.data,
                    r = n.length;
                  for (t = 0; t < r; t += 4) n[t] = 255 - n[t], n[t + 1] = 255 - n[t + 1], n[t + 2] = 255 - n[t + 2]
                },
                isNeutralState: function() {
                  return !this.invert
                },
                getUniformLocations: function(e, t) {
                  return {
                    uInvert: e.getUniformLocation(t, "uInvert")
                  }
                },
                sendUniformData: function(e, t) {
                  e.uniform1i(t.uInvert, this.invert)
                }
              }), t.Image.filters.Invert.fromObject = t.Image.filters.BaseFilter.fromObject
            }(e),
            function(e) {
              var t = e.fabric || (e.fabric = {}),
                n = t.util.object.extend,
                r = t.Image.filters,
                i = t.util.createClass;
              r.Noise = i(r.BaseFilter, {
                type: "Noise",
                fragmentSource: "precision highp float;\nuniform sampler2D uTexture;\nuniform float uStepH;\nuniform float uNoise;\nuniform float uSeed;\nvarying vec2 vTexCoord;\nfloat rand(vec2 co, float seed, float vScale) {\nreturn fract(sin(dot(co.xy * vScale ,vec2(12.9898 , 78.233))) * 43758.5453 * (seed + 0.01) / 2.0);\n}\nvoid main() {\nvec4 color = texture2D(uTexture, vTexCoord);\ncolor.rgb += (0.5 - rand(vTexCoord, uSeed, 0.1 / uStepH)) * uNoise;\ngl_FragColor = color;\n}",
                mainParameter: "noise",
                noise: 0,
                applyTo2d: function(e) {
                  if (0 !== this.noise) {
                    var t, n, r = e.imageData.data,
                      i = r.length,
                      o = this.noise;
                    for (t = 0, i = r.length; t < i; t += 4) n = (.5 - Math.random()) * o, r[t] += n, r[t + 1] += n, r[t + 2] += n
                  }
                },
                getUniformLocations: function(e, t) {
                  return {
                    uNoise: e.getUniformLocation(t, "uNoise"),
                    uSeed: e.getUniformLocation(t, "uSeed")
                  }
                },
                sendUniformData: function(e, t) {
                  e.uniform1f(t.uNoise, this.noise / 255), e.uniform1f(t.uSeed, Math.random())
                },
                toObject: function() {
                  return n(this.callSuper("toObject"), {
                    noise: this.noise
                  })
                }
              }), t.Image.filters.Noise.fromObject = t.Image.filters.BaseFilter.fromObject
            }(e),
            function(e) {
              var t = e.fabric || (e.fabric = {}),
                n = t.Image.filters,
                r = t.util.createClass;
              n.Pixelate = r(n.BaseFilter, {
                type: "Pixelate",
                blocksize: 4,
                mainParameter: "blocksize",
                fragmentSource: "precision highp float;\nuniform sampler2D uTexture;\nuniform float uBlocksize;\nuniform float uStepW;\nuniform float uStepH;\nvarying vec2 vTexCoord;\nvoid main() {\nfloat blockW = uBlocksize * uStepW;\nfloat blockH = uBlocksize * uStepW;\nint posX = int(vTexCoord.x / blockW);\nint posY = int(vTexCoord.y / blockH);\nfloat fposX = float(posX);\nfloat fposY = float(posY);\nvec2 squareCoords = vec2(fposX * blockW, fposY * blockH);\nvec4 color = texture2D(uTexture, squareCoords);\ngl_FragColor = color;\n}",
                applyTo2d: function(e) {
                  var t, n, r, i, o, a, s, l, c, u, h, p = e.imageData,
                    d = p.data,
                    f = p.height,
                    g = p.width;
                  for (n = 0; n < f; n += this.blocksize)
                    for (r = 0; r < g; r += this.blocksize)
                      for (i = d[t = 4 * n * g + 4 * r], o = d[t + 1], a = d[t + 2], s = d[t + 3], u = Math.min(n + this.blocksize, f), h = Math.min(r + this.blocksize, g), l = n; l < u; l++)
                        for (c = r; c < h; c++) d[t = 4 * l * g + 4 * c] = i, d[t + 1] = o, d[t + 2] = a, d[t + 3] = s
                },
                isNeutralState: function() {
                  return 1 === this.blocksize
                },
                getUniformLocations: function(e, t) {
                  return {
                    uBlocksize: e.getUniformLocation(t, "uBlocksize"),
                    uStepW: e.getUniformLocation(t, "uStepW"),
                    uStepH: e.getUniformLocation(t, "uStepH")
                  }
                },
                sendUniformData: function(e, t) {
                  e.uniform1f(t.uBlocksize, this.blocksize)
                }
              }), t.Image.filters.Pixelate.fromObject = t.Image.filters.BaseFilter.fromObject
            }(e),
            function(e) {
              var t = e.fabric || (e.fabric = {}),
                n = t.util.object.extend,
                r = t.Image.filters,
                i = t.util.createClass;
              r.RemoveColor = i(r.BaseFilter, {
                type: "RemoveColor",
                color: "#FFFFFF",
                fragmentSource: "precision highp float;\nuniform sampler2D uTexture;\nuniform vec4 uLow;\nuniform vec4 uHigh;\nvarying vec2 vTexCoord;\nvoid main() {\ngl_FragColor = texture2D(uTexture, vTexCoord);\nif(all(greaterThan(gl_FragColor.rgb,uLow.rgb)) && all(greaterThan(uHigh.rgb,gl_FragColor.rgb))) {\ngl_FragColor.a = 0.0;\n}\n}",
                distance: .02,
                useAlpha: !1,
                applyTo2d: function(e) {
                  var n, r, i, o, a = e.imageData.data,
                    s = 255 * this.distance,
                    l = new t.Color(this.color).getSource(),
                    c = [l[0] - s, l[1] - s, l[2] - s],
                    u = [l[0] + s, l[1] + s, l[2] + s];
                  for (n = 0; n < a.length; n += 4) r = a[n], i = a[n + 1], o = a[n + 2], r > c[0] && i > c[1] && o > c[2] && r < u[0] && i < u[1] && o < u[2] && (a[n + 3] = 0)
                },
                getUniformLocations: function(e, t) {
                  return {
                    uLow: e.getUniformLocation(t, "uLow"),
                    uHigh: e.getUniformLocation(t, "uHigh")
                  }
                },
                sendUniformData: function(e, n) {
                  var r = new t.Color(this.color).getSource(),
                    i = parseFloat(this.distance),
                    o = [0 + r[0] / 255 - i, 0 + r[1] / 255 - i, 0 + r[2] / 255 - i, 1],
                    a = [r[0] / 255 + i, r[1] / 255 + i, r[2] / 255 + i, 1];
                  e.uniform4fv(n.uLow, o), e.uniform4fv(n.uHigh, a)
                },
                toObject: function() {
                  return n(this.callSuper("toObject"), {
                    color: this.color,
                    distance: this.distance
                  })
                }
              }), t.Image.filters.RemoveColor.fromObject = t.Image.filters.BaseFilter.fromObject
            }(e),
            function(e) {
              var t = e.fabric || (e.fabric = {}),
                n = t.Image.filters,
                r = t.util.createClass,
                i = {
                  Brownie: [.5997, .34553, -.27082, 0, .186, -.0377, .86095, .15059, 0, -.1449, .24113, -.07441, .44972, 0, -.02965, 0, 0, 0, 1, 0],
                  Vintage: [.62793, .32021, -.03965, 0, .03784, .02578, .64411, .03259, 0, .02926, .0466, -.08512, .52416, 0, .02023, 0, 0, 0, 1, 0],
                  Kodachrome: [1.12855, -.39673, -.03992, 0, .24991, -.16404, 1.08352, -.05498, 0, .09698, -.16786, -.56034, 1.60148, 0, .13972, 0, 0, 0, 1, 0],
                  Technicolor: [1.91252, -.85453, -.09155, 0, .04624, -.30878, 1.76589, -.10601, 0, -.27589, -.2311, -.75018, 1.84759, 0, .12137, 0, 0, 0, 1, 0],
                  Polaroid: [1.438, -.062, -.062, 0, 0, -.122, 1.378, -.122, 0, 0, -.016, -.016, 1.483, 0, 0, 0, 0, 0, 1, 0],
                  Sepia: [.393, .769, .189, 0, 0, .349, .686, .168, 0, 0, .272, .534, .131, 0, 0, 0, 0, 0, 1, 0],
                  BlackWhite: [1.5, 1.5, 1.5, 0, -1, 1.5, 1.5, 1.5, 0, -1, 1.5, 1.5, 1.5, 0, -1, 0, 0, 0, 1, 0]
                };
              for (var o in i) n[o] = r(n.ColorMatrix, {
                type: o,
                matrix: i[o],
                mainParameter: !1,
                colorsOnly: !0
              }), t.Image.filters[o].fromObject = t.Image.filters.BaseFilter.fromObject
            }(e),
            function(e) {
              var t = e.fabric,
                n = t.Image.filters,
                r = t.util.createClass;
              n.BlendColor = r(n.BaseFilter, {
                type: "BlendColor",
                color: "#F95C63",
                mode: "multiply",
                alpha: 1,
                fragmentSource: {
                  multiply: "gl_FragColor.rgb *= uColor.rgb;\n",
                  screen: "gl_FragColor.rgb = 1.0 - (1.0 - gl_FragColor.rgb) * (1.0 - uColor.rgb);\n",
                  add: "gl_FragColor.rgb += uColor.rgb;\n",
                  diff: "gl_FragColor.rgb = abs(gl_FragColor.rgb - uColor.rgb);\n",
                  subtract: "gl_FragColor.rgb -= uColor.rgb;\n",
                  lighten: "gl_FragColor.rgb = max(gl_FragColor.rgb, uColor.rgb);\n",
                  darken: "gl_FragColor.rgb = min(gl_FragColor.rgb, uColor.rgb);\n",
                  exclusion: "gl_FragColor.rgb += uColor.rgb - 2.0 * (uColor.rgb * gl_FragColor.rgb);\n",
                  overlay: "if (uColor.r < 0.5) {\ngl_FragColor.r *= 2.0 * uColor.r;\n} else {\ngl_FragColor.r = 1.0 - 2.0 * (1.0 - gl_FragColor.r) * (1.0 - uColor.r);\n}\nif (uColor.g < 0.5) {\ngl_FragColor.g *= 2.0 * uColor.g;\n} else {\ngl_FragColor.g = 1.0 - 2.0 * (1.0 - gl_FragColor.g) * (1.0 - uColor.g);\n}\nif (uColor.b < 0.5) {\ngl_FragColor.b *= 2.0 * uColor.b;\n} else {\ngl_FragColor.b = 1.0 - 2.0 * (1.0 - gl_FragColor.b) * (1.0 - uColor.b);\n}\n",
                  tint: "gl_FragColor.rgb *= (1.0 - uColor.a);\ngl_FragColor.rgb += uColor.rgb;\n"
                },
                buildSource: function(e) {
                  return "precision highp float;\nuniform sampler2D uTexture;\nuniform vec4 uColor;\nvarying vec2 vTexCoord;\nvoid main() {\nvec4 color = texture2D(uTexture, vTexCoord);\ngl_FragColor = color;\nif (color.a > 0.0) {\n" + this
                    .fragmentSource[e] + "}\n}"
                },
                retrieveShader: function(e) {
                  var t, n = this.type + "_" + this.mode;
                  return e.programCache.hasOwnProperty(n) || (t = this.buildSource(this.mode), e.programCache[n] = this.createProgram(e.context, t)), e.programCache[n]
                },
                applyTo2d: function(e) {
                  var n, r, i, o, a, s, l, c = e.imageData.data,
                    u = c.length,
                    h = 1 - this.alpha;
                  n = (l = new t.Color(this.color).getSource())[0] * this.alpha, r = l[1] * this.alpha, i = l[2] * this.alpha;
                  for (var p = 0; p < u; p += 4) switch (o = c[p], a = c[p + 1], s = c[p + 2], this.mode) {
                    case "multiply":
                      c[p] = o * n / 255, c[p + 1] = a * r / 255, c[p + 2] = s * i / 255;
                      break;
                    case "screen":
                      c[p] = 255 - (255 - o) * (255 - n) / 255, c[p + 1] = 255 - (255 - a) * (255 - r) / 255, c[p + 2] = 255 - (255 - s) * (255 - i) / 255;
                      break;
                    case "add":
                      c[p] = o + n, c[p + 1] = a + r, c[p + 2] = s + i;
                      break;
                    case "diff":
                    case "difference":
                      c[p] = Math.abs(o - n), c[p + 1] = Math.abs(a - r), c[p + 2] = Math.abs(s - i);
                      break;
                    case "subtract":
                      c[p] = o - n, c[p + 1] = a - r, c[p + 2] = s - i;
                      break;
                    case "darken":
                      c[p] = Math.min(o, n), c[p + 1] = Math.min(a, r), c[p + 2] = Math.min(s, i);
                      break;
                    case "lighten":
                      c[p] = Math.max(o, n), c[p + 1] = Math.max(a, r), c[p + 2] = Math.max(s, i);
                      break;
                    case "overlay":
                      c[p] = n < 128 ? 2 * o * n / 255 : 255 - 2 * (255 - o) * (255 - n) / 255, c[p + 1] = r < 128 ? 2 * a * r / 255 : 255 - 2 * (255 - a) * (255 - r) / 255, c[p + 2] = i < 128 ? 2 * s * i / 255 : 255 - 2 * (255 - s) * (
                        255 - i) / 255;
                      break;
                    case "exclusion":
                      c[p] = n + o - 2 * n * o / 255, c[p + 1] = r + a - 2 * r * a / 255, c[p + 2] = i + s - 2 * i * s / 255;
                      break;
                    case "tint":
                      c[p] = n + o * h, c[p + 1] = r + a * h, c[p + 2] = i + s * h
                  }
                },
                getUniformLocations: function(e, t) {
                  return {
                    uColor: e.getUniformLocation(t, "uColor")
                  }
                },
                sendUniformData: function(e, n) {
                  var r = new t.Color(this.color).getSource();
                  r[0] = this.alpha * r[0] / 255, r[1] = this.alpha * r[1] / 255, r[2] = this.alpha * r[2] / 255, r[3] = this.alpha, e.uniform4fv(n.uColor, r)
                },
                toObject: function() {
                  return {
                    type: this.type,
                    color: this.color,
                    mode: this.mode,
                    alpha: this.alpha
                  }
                }
              }), t.Image.filters.BlendColor.fromObject = t.Image.filters.BaseFilter.fromObject
            }(e),
            function(e) {
              var t = e.fabric,
                n = t.Image.filters,
                r = t.util.createClass;
              n.BlendImage = r(n.BaseFilter, {
                type: "BlendImage",
                image: null,
                mode: "multiply",
                alpha: 1,
                vertexSource: "attribute vec2 aPosition;\nvarying vec2 vTexCoord;\nvarying vec2 vTexCoord2;\nuniform mat3 uTransformMatrix;\nvoid main() {\nvTexCoord = aPosition;\nvTexCoord2 = (uTransformMatrix * vec3(aPosition, 1.0)).xy;\ngl_Position = vec4(aPosition * 2.0 - 1.0, 0.0, 1.0);\n}",
                fragmentSource: {
                  multiply: "precision highp float;\nuniform sampler2D uTexture;\nuniform sampler2D uImage;\nuniform vec4 uColor;\nvarying vec2 vTexCoord;\nvarying vec2 vTexCoord2;\nvoid main() {\nvec4 color = texture2D(uTexture, vTexCoord);\nvec4 color2 = texture2D(uImage, vTexCoord2);\ncolor.rgba *= color2.rgba;\ngl_FragColor = color;\n}",
                  mask: "precision highp float;\nuniform sampler2D uTexture;\nuniform sampler2D uImage;\nuniform vec4 uColor;\nvarying vec2 vTexCoord;\nvarying vec2 vTexCoord2;\nvoid main() {\nvec4 color = texture2D(uTexture, vTexCoord);\nvec4 color2 = texture2D(uImage, vTexCoord2);\ncolor.a = color2.a;\ngl_FragColor = color;\n}"
                },
                retrieveShader: function(e) {
                  var t = this.type + "_" + this.mode,
                    n = this.fragmentSource[this.mode];
                  return e.programCache.hasOwnProperty(t) || (e.programCache[t] = this.createProgram(e.context, n)), e.programCache[t]
                },
                applyToWebGL: function(e) {
                  var t = e.context,
                    n = this.createTexture(e.filterBackend, this.image);
                  this.bindAdditionalTexture(t, n, t.TEXTURE1), this.callSuper("applyToWebGL", e), this.unbindAdditionalTexture(t, t.TEXTURE1)
                },
                createTexture: function(e, t) {
                  return e.getCachedTexture(t.cacheKey, t._element)
                },
                calculateMatrix: function() {
                  var e = this.image,
                    t = e._element.width,
                    n = e._element.height;
                  return [1 / e.scaleX, 0, 0, 0, 1 / e.scaleY, 0, -e.left / t, -e.top / n, 1]
                },
                applyTo2d: function(e) {
                  var n, r, i, o, a, s, l, c, u, h, p, d = e.imageData,
                    f = e.filterBackend.resources,
                    g = d.data,
                    m = g.length,
                    v = d.width,
                    _ = d.height,
                    b = this.image;
                  f.blendImage || (f.blendImage = t.util.createCanvasElement()), h = (u = f.blendImage).getContext("2d"), u.width !== v || u.height !== _ ? (u.width = v, u.height = _) : h.clearRect(0, 0, v, _), h.setTransform(b.scaleX, 0,
                    0, b.scaleY, b.left, b.top), h.drawImage(b._element, 0, 0, v, _), p = h.getImageData(0, 0, v, _).data;
                  for (var y = 0; y < m; y += 4) switch (a = g[y], s = g[y + 1], l = g[y + 2], c = g[y + 3], n = p[y], r = p[y + 1], i = p[y + 2], o = p[y + 3], this.mode) {
                    case "multiply":
                      g[y] = a * n / 255, g[y + 1] = s * r / 255, g[y + 2] = l * i / 255, g[y + 3] = c * o / 255;
                      break;
                    case "mask":
                      g[y + 3] = o
                  }
                },
                getUniformLocations: function(e, t) {
                  return {
                    uTransformMatrix: e.getUniformLocation(t, "uTransformMatrix"),
                    uImage: e.getUniformLocation(t, "uImage")
                  }
                },
                sendUniformData: function(e, t) {
                  var n = this.calculateMatrix();
                  e.uniform1i(t.uImage, 1), e.uniformMatrix3fv(t.uTransformMatrix, !1, n)
                },
                toObject: function() {
                  return {
                    type: this.type,
                    image: this.image && this.image.toObject(),
                    mode: this.mode,
                    alpha: this.alpha
                  }
                }
              }), t.Image.filters.BlendImage.fromObject = function(e, n) {
                t.Image.fromObject(e.image, (function(r) {
                  var i = t.util.object.clone(e);
                  i.image = r, n(new t.Image.filters.BlendImage(i))
                }))
              }
            }(e),
            function(e) {
              var t = e.fabric || (e.fabric = {}),
                n = Math.pow,
                r = Math.floor,
                i = Math.sqrt,
                o = Math.abs,
                a = Math.round,
                s = Math.sin,
                l = Math.ceil,
                c = t.Image.filters,
                u = t.util.createClass;
              c.Resize = u(c.BaseFilter, {
                type: "Resize",
                resizeType: "hermite",
                scaleX: 1,
                scaleY: 1,
                lanczosLobes: 3,
                getUniformLocations: function(e, t) {
                  return {
                    uDelta: e.getUniformLocation(t, "uDelta"),
                    uTaps: e.getUniformLocation(t, "uTaps")
                  }
                },
                sendUniformData: function(e, t) {
                  e.uniform2fv(t.uDelta, this.horizontal ? [1 / this.width, 0] : [0, 1 / this.height]), e.uniform1fv(t.uTaps, this.taps)
                },
                retrieveShader: function(e) {
                  var t = this.getFilterWindow(),
                    n = this.type + "_" + t;
                  if (!e.programCache.hasOwnProperty(n)) {
                    var r = this.generateShader(t);
                    e.programCache[n] = this.createProgram(e.context, r)
                  }
                  return e.programCache[n]
                },
                getFilterWindow: function() {
                  var e = this.tempScale;
                  return Math.ceil(this.lanczosLobes / e)
                },
                getTaps: function() {
                  for (var e = this.lanczosCreate(this.lanczosLobes), t = this.tempScale, n = this.getFilterWindow(), r = new Array(n), i = 1; i <= n; i++) r[i - 1] = e(i * t);
                  return r
                },
                generateShader: function(e) {
                  for (var t = new Array(e), n = this.fragmentSourceTOP, r = 1; r <= e; r++) t[r - 1] = r + ".0 * uDelta";
                  return n += "uniform float uTaps[" + e + "];\n", n += "void main() {\n", n += "  vec4 color = texture2D(uTexture, vTexCoord);\n", n += "  float sum = 1.0;\n", t.forEach((function(e, t) {
                    n += "  color += texture2D(uTexture, vTexCoord + " + e + ") * uTaps[" + t + "];\n", n += "  color += texture2D(uTexture, vTexCoord - " + e + ") * uTaps[" + t + "];\n", n += "  sum += 2.0 * uTaps[" + t + "];\n"
                  })), n += "  gl_FragColor = color / sum;\n", n += "}"
                },
                fragmentSourceTOP: "precision highp float;\nuniform sampler2D uTexture;\nuniform vec2 uDelta;\nvarying vec2 vTexCoord;\n",
                applyTo: function(e) {
                  e.webgl ? (e.passes++, this.width = e.sourceWidth, this.horizontal = !0, this.dW = Math.round(this.width * this.scaleX), this.dH = e.sourceHeight, this.tempScale = this.dW / this.width, this.taps = this.getTaps(), e
                    .destinationWidth = this.dW, this._setupFrameBuffer(e), this.applyToWebGL(e), this._swapTextures(e), e.sourceWidth = e.destinationWidth, this.height = e.sourceHeight, this.horizontal = !1, this.dH = Math.round(this
                      .height * this.scaleY), this.tempScale = this.dH / this.height, this.taps = this.getTaps(), e.destinationHeight = this.dH, this._setupFrameBuffer(e), this.applyToWebGL(e), this._swapTextures(e), e.sourceHeight = e
                    .destinationHeight) : this.applyTo2d(e)
                },
                isNeutralState: function() {
                  return 1 === this.scaleX && 1 === this.scaleY
                },
                lanczosCreate: function(e) {
                  return function(t) {
                    if (t >= e || t <= -e) return 0;
                    if (t < 1.1920929e-7 && t > -1.1920929e-7) return 1;
                    var n = (t *= Math.PI) / e;
                    return s(t) / t * s(n) / n
                  }
                },
                applyTo2d: function(e) {
                  var t = e.imageData,
                    n = this.scaleX,
                    r = this.scaleY;
                  this.rcpScaleX = 1 / n, this.rcpScaleY = 1 / r;
                  var i, o = t.width,
                    s = t.height,
                    l = a(o * n),
                    c = a(s * r);
                  "sliceHack" === this.resizeType ? i = this.sliceByTwo(e, o, s, l, c) : "hermite" === this.resizeType ? i = this.hermiteFastResize(e, o, s, l, c) : "bilinear" === this.resizeType ? i = this.bilinearFiltering(e, o, s, l,
                    c) : "lanczos" === this.resizeType && (i = this.lanczosResize(e, o, s, l, c)), e.imageData = i
                },
                sliceByTwo: function(e, n, i, o, a) {
                  var s, l, c = e.imageData,
                    u = .5,
                    h = !1,
                    p = !1,
                    d = n * u,
                    f = i * u,
                    g = t.filterBackend.resources,
                    m = 0,
                    v = 0,
                    _ = n,
                    b = 0;
                  for (g.sliceByTwo || (g.sliceByTwo = document.createElement("canvas")), ((s = g.sliceByTwo).width < 1.5 * n || s.height < i) && (s.width = 1.5 * n, s.height = i), (l = s.getContext("2d")).clearRect(0, 0, 1.5 * n, i), l
                    .putImageData(c, 0, 0), o = r(o), a = r(a); !h || !p;) n = d, i = f, o < r(d * u) ? d = r(d * u) : (d = o, h = !0), a < r(f * u) ? f = r(f * u) : (f = a, p = !0), l.drawImage(s, m, v, n, i, _, b, d, f), m = _, v = b,
                    b += f;
                  return l.getImageData(m, v, o, a)
                },
                lanczosResize: function(e, t, a, s, c) {
                  var u = e.imageData.data,
                    h = e.ctx.createImageData(s, c),
                    p = h.data,
                    d = this.lanczosCreate(this.lanczosLobes),
                    f = this.rcpScaleX,
                    g = this.rcpScaleY,
                    m = 2 / this.rcpScaleX,
                    v = 2 / this.rcpScaleY,
                    _ = l(f * this.lanczosLobes / 2),
                    b = l(g * this.lanczosLobes / 2),
                    y = {},
                    w = {},
                    x = {};
                  return function e(l) {
                    var k, C, S, E, T, O, A, P, M, D, I;
                    for (w.x = (l + .5) * f, x.x = r(w.x), k = 0; k < c; k++) {
                      for (w.y = (k + .5) * g, x.y = r(w.y), T = 0, O = 0, A = 0, P = 0, M = 0, C = x.x - _; C <= x.x + _; C++)
                        if (!(C < 0 || C >= t)) {
                          D = r(1e3 * o(C - w.x)), y[D] || (y[D] = {});
                          for (var R = x.y - b; R <= x.y + b; R++) R < 0 || R >= a || (I = r(1e3 * o(R - w.y)), y[D][I] || (y[D][I] = d(i(n(D * m, 2) + n(I * v, 2)) / 1e3)), (S = y[D][I]) > 0 && (T += S, O += S * u[E = 4 * (R * t + C)],
                            A += S * u[E + 1], P += S * u[E + 2], M += S * u[E + 3]))
                        } p[E = 4 * (k * s + l)] = O / T, p[E + 1] = A / T, p[E + 2] = P / T, p[E + 3] = M / T
                    }
                    return ++l < s ? e(l) : h
                  }(0)
                },
                bilinearFiltering: function(e, t, n, i, o) {
                  var a, s, l, c, u, h, p, d, f, g = 0,
                    m = this.rcpScaleX,
                    v = this.rcpScaleY,
                    _ = 4 * (t - 1),
                    b = e.imageData.data,
                    y = e.ctx.createImageData(i, o),
                    w = y.data;
                  for (l = 0; l < o; l++)
                    for (c = 0; c < i; c++)
                      for (u = m * c - (a = r(m * c)), h = v * l - (s = r(v * l)), f = 4 * (s * t + a), p = 0; p < 4; p++) d = b[f + p] * (1 - u) * (1 - h) + b[f + 4 + p] * u * (1 - h) + b[f + _ + p] * h * (1 - u) + b[f + _ + 4 + p] * u *
                        h, w[g++] = d;
                  return y
                },
                hermiteFastResize: function(e, t, n, a, s) {
                  for (var c = this.rcpScaleX, u = this.rcpScaleY, h = l(c / 2), p = l(u / 2), d = e.imageData.data, f = e.ctx.createImageData(a, s), g = f.data, m = 0; m < s; m++)
                    for (var v = 0; v < a; v++) {
                      for (var _ = 4 * (v + m * a), b = 0, y = 0, w = 0, x = 0, k = 0, C = 0, S = 0, E = (m + .5) * u, T = r(m * u); T < (m + 1) * u; T++)
                        for (var O = o(E - (T + .5)) / p, A = (v + .5) * c, P = O * O, M = r(v * c); M < (v + 1) * c; M++) {
                          var D = o(A - (M + .5)) / h,
                            I = i(P + D * D);
                          I > 1 && I < -1 || (b = 2 * I * I * I - 3 * I * I + 1) > 0 && (S += b * d[(D = 4 * (M + T * t)) + 3], w += b, d[D + 3] < 255 && (b = b * d[D + 3] / 250), x += b * d[D], k += b * d[D + 1], C += b * d[D + 2], y += b)
                        }
                      g[_] = x / y, g[_ + 1] = k / y, g[_ + 2] = C / y, g[_ + 3] = S / w
                    }
                  return f
                },
                toObject: function() {
                  return {
                    type: this.type,
                    scaleX: this.scaleX,
                    scaleY: this.scaleY,
                    resizeType: this.resizeType,
                    lanczosLobes: this.lanczosLobes
                  }
                }
              }), t.Image.filters.Resize.fromObject = t.Image.filters.BaseFilter.fromObject
            }(e),
            function(e) {
              var t = e.fabric || (e.fabric = {}),
                n = t.Image.filters,
                r = t.util.createClass;
              n.Contrast = r(n.BaseFilter, {
                type: "Contrast",
                fragmentSource: "precision highp float;\nuniform sampler2D uTexture;\nuniform float uContrast;\nvarying vec2 vTexCoord;\nvoid main() {\nvec4 color = texture2D(uTexture, vTexCoord);\nfloat contrastF = 1.015 * (uContrast + 1.0) / (1.0 * (1.015 - uContrast));\ncolor.rgb = contrastF * (color.rgb - 0.5) + 0.5;\ngl_FragColor = color;\n}",
                contrast: 0,
                mainParameter: "contrast",
                applyTo2d: function(e) {
                  if (0 !== this.contrast) {
                    var t, n = e.imageData.data,
                      r = n.length,
                      i = Math.floor(255 * this.contrast),
                      o = 259 * (i + 255) / (255 * (259 - i));
                    for (t = 0; t < r; t += 4) n[t] = o * (n[t] - 128) + 128, n[t + 1] = o * (n[t + 1] - 128) + 128, n[t + 2] = o * (n[t + 2] - 128) + 128
                  }
                },
                getUniformLocations: function(e, t) {
                  return {
                    uContrast: e.getUniformLocation(t, "uContrast")
                  }
                },
                sendUniformData: function(e, t) {
                  e.uniform1f(t.uContrast, this.contrast)
                }
              }), t.Image.filters.Contrast.fromObject = t.Image.filters.BaseFilter.fromObject
            }(e),
            function(e) {
              var t = e.fabric || (e.fabric = {}),
                n = t.Image.filters,
                r = t.util.createClass;
              n.Saturation = r(n.BaseFilter, {
                type: "Saturation",
                fragmentSource: "precision highp float;\nuniform sampler2D uTexture;\nuniform float uSaturation;\nvarying vec2 vTexCoord;\nvoid main() {\nvec4 color = texture2D(uTexture, vTexCoord);\nfloat rgMax = max(color.r, color.g);\nfloat rgbMax = max(rgMax, color.b);\ncolor.r += rgbMax != color.r ? (rgbMax - color.r) * uSaturation : 0.00;\ncolor.g += rgbMax != color.g ? (rgbMax - color.g) * uSaturation : 0.00;\ncolor.b += rgbMax != color.b ? (rgbMax - color.b) * uSaturation : 0.00;\ngl_FragColor = color;\n}",
                saturation: 0,
                mainParameter: "saturation",
                applyTo2d: function(e) {
                  if (0 !== this.saturation) {
                    var t, n, r = e.imageData.data,
                      i = r.length,
                      o = -this.saturation;
                    for (t = 0; t < i; t += 4) n = Math.max(r[t], r[t + 1], r[t + 2]), r[t] += n !== r[t] ? (n - r[t]) * o : 0, r[t + 1] += n !== r[t + 1] ? (n - r[t + 1]) * o : 0, r[t + 2] += n !== r[t + 2] ? (n - r[t + 2]) * o : 0
                  }
                },
                getUniformLocations: function(e, t) {
                  return {
                    uSaturation: e.getUniformLocation(t, "uSaturation")
                  }
                },
                sendUniformData: function(e, t) {
                  e.uniform1f(t.uSaturation, -this.saturation)
                }
              }), t.Image.filters.Saturation.fromObject = t.Image.filters.BaseFilter.fromObject
            }(e),
            function(e) {
              var t = e.fabric || (e.fabric = {}),
                n = t.Image.filters,
                r = t.util.createClass;
              n.Vibrance = r(n.BaseFilter, {
                type: "Vibrance",
                fragmentSource: "precision highp float;\nuniform sampler2D uTexture;\nuniform float uVibrance;\nvarying vec2 vTexCoord;\nvoid main() {\nvec4 color = texture2D(uTexture, vTexCoord);\nfloat max = max(color.r, max(color.g, color.b));\nfloat avg = (color.r + color.g + color.b) / 3.0;\nfloat amt = (abs(max - avg) * 2.0) * uVibrance;\ncolor.r += max != color.r ? (max - color.r) * amt : 0.00;\ncolor.g += max != color.g ? (max - color.g) * amt : 0.00;\ncolor.b += max != color.b ? (max - color.b) * amt : 0.00;\ngl_FragColor = color;\n}",
                vibrance: 0,
                mainParameter: "vibrance",
                applyTo2d: function(e) {
                  if (0 !== this.vibrance) {
                    var t, n, r, i, o = e.imageData.data,
                      a = o.length,
                      s = -this.vibrance;
                    for (t = 0; t < a; t += 4) n = Math.max(o[t], o[t + 1], o[t + 2]), r = (o[t] + o[t + 1] + o[t + 2]) / 3, i = 2 * Math.abs(n - r) / 255 * s, o[t] += n !== o[t] ? (n - o[t]) * i : 0, o[t + 1] += n !== o[t + 1] ? (n - o[t +
                      1]) * i : 0, o[t + 2] += n !== o[t + 2] ? (n - o[t + 2]) * i : 0
                  }
                },
                getUniformLocations: function(e, t) {
                  return {
                    uVibrance: e.getUniformLocation(t, "uVibrance")
                  }
                },
                sendUniformData: function(e, t) {
                  e.uniform1f(t.uVibrance, -this.vibrance)
                }
              }), t.Image.filters.Vibrance.fromObject = t.Image.filters.BaseFilter.fromObject
            }(e),
            function(e) {
              var t = e.fabric || (e.fabric = {}),
                n = t.Image.filters,
                r = t.util.createClass;
              n.Blur = r(n.BaseFilter, {
                type: "Blur",
                fragmentSource: "precision highp float;\nuniform sampler2D uTexture;\nuniform vec2 uDelta;\nvarying vec2 vTexCoord;\nconst float nSamples = 15.0;\nvec3 v3offset = vec3(12.9898, 78.233, 151.7182);\nfloat random(vec3 scale) {\nreturn fract(sin(dot(gl_FragCoord.xyz, scale)) * 43758.5453);\n}\nvoid main() {\nvec4 color = vec4(0.0);\nfloat total = 0.0;\nfloat offset = random(v3offset);\nfor (float t = -nSamples; t <= nSamples; t++) {\nfloat percent = (t + offset - 0.5) / nSamples;\nfloat weight = 1.0 - abs(percent);\ncolor += texture2D(uTexture, vTexCoord + uDelta * percent) * weight;\ntotal += weight;\n}\ngl_FragColor = color / total;\n}",
                blur: 0,
                mainParameter: "blur",
                applyTo: function(e) {
                  e.webgl ? (this.aspectRatio = e.sourceWidth / e.sourceHeight, e.passes++, this._setupFrameBuffer(e), this.horizontal = !0, this.applyToWebGL(e), this._swapTextures(e), this._setupFrameBuffer(e), this.horizontal = !1, this
                    .applyToWebGL(e), this._swapTextures(e)) : this.applyTo2d(e)
                },
                applyTo2d: function(e) {
                  e.imageData = this.simpleBlur(e)
                },
                simpleBlur: function(e) {
                  var n, r, i = e.filterBackend.resources,
                    o = e.imageData.width,
                    a = e.imageData.height;
                  i.blurLayer1 || (i.blurLayer1 = t.util.createCanvasElement(), i.blurLayer2 = t.util.createCanvasElement()), n = i.blurLayer1, r = i.blurLayer2, n.width === o && n.height === a || (r.width = n.width = o, r.height = n
                    .height = a);
                  var s, l, c, u, h = n.getContext("2d"),
                    p = r.getContext("2d"),
                    d = 15,
                    f = .06 * this.blur * .5;
                  for (h.putImageData(e.imageData, 0, 0), p.clearRect(0, 0, o, a), u = -15; u <= d; u++) c = f * (l = u / d) * o + (s = (Math.random() - .5) / 4), p.globalAlpha = 1 - Math.abs(l), p.drawImage(n, c, s), h.drawImage(r, 0, 0),
                    p.globalAlpha = 1, p.clearRect(0, 0, r.width, r.height);
                  for (u = -15; u <= d; u++) c = f * (l = u / d) * a + (s = (Math.random() - .5) / 4), p.globalAlpha = 1 - Math.abs(l), p.drawImage(n, s, c), h.drawImage(r, 0, 0), p.globalAlpha = 1, p.clearRect(0, 0, r.width, r.height);
                  e.ctx.drawImage(n, 0, 0);
                  var g = e.ctx.getImageData(0, 0, n.width, n.height);
                  return h.globalAlpha = 1, h.clearRect(0, 0, n.width, n.height), g
                },
                getUniformLocations: function(e, t) {
                  return {
                    delta: e.getUniformLocation(t, "uDelta")
                  }
                },
                sendUniformData: function(e, t) {
                  var n = this.chooseRightDelta();
                  e.uniform2fv(t.delta, n)
                },
                chooseRightDelta: function() {
                  var e, t = 1,
                    n = [0, 0];
                  return this.horizontal ? this.aspectRatio > 1 && (t = 1 / this.aspectRatio) : this.aspectRatio < 1 && (t = this.aspectRatio), e = t * this.blur * .12, this.horizontal ? n[0] = e : n[1] = e, n
                }
              }), n.Blur.fromObject = t.Image.filters.BaseFilter.fromObject
            }(e),
            function(e) {
              var t = e.fabric || (e.fabric = {}),
                n = t.Image.filters,
                r = t.util.createClass;
              n.Gamma = r(n.BaseFilter, {
                type: "Gamma",
                fragmentSource: "precision highp float;\nuniform sampler2D uTexture;\nuniform vec3 uGamma;\nvarying vec2 vTexCoord;\nvoid main() {\nvec4 color = texture2D(uTexture, vTexCoord);\nvec3 correction = (1.0 / uGamma);\ncolor.r = pow(color.r, correction.r);\ncolor.g = pow(color.g, correction.g);\ncolor.b = pow(color.b, correction.b);\ngl_FragColor = color;\ngl_FragColor.rgb *= color.a;\n}",
                gamma: [1, 1, 1],
                mainParameter: "gamma",
                initialize: function(e) {
                  this.gamma = [1, 1, 1], n.BaseFilter.prototype.initialize.call(this, e)
                },
                applyTo2d: function(e) {
                  var t, n = e.imageData.data,
                    r = this.gamma,
                    i = n.length,
                    o = 1 / r[0],
                    a = 1 / r[1],
                    s = 1 / r[2];
                  for (this.rVals || (this.rVals = new Uint8Array(256), this.gVals = new Uint8Array(256), this.bVals = new Uint8Array(256)), t = 0, i = 256; t < i; t++) this.rVals[t] = 255 * Math.pow(t / 255, o), this.gVals[t] = 255 * Math
                    .pow(t / 255, a), this.bVals[t] = 255 * Math.pow(t / 255, s);
                  for (t = 0, i = n.length; t < i; t += 4) n[t] = this.rVals[n[t]], n[t + 1] = this.gVals[n[t + 1]], n[t + 2] = this.bVals[n[t + 2]]
                },
                getUniformLocations: function(e, t) {
                  return {
                    uGamma: e.getUniformLocation(t, "uGamma")
                  }
                },
                sendUniformData: function(e, t) {
                  e.uniform3fv(t.uGamma, this.gamma)
                }
              }), t.Image.filters.Gamma.fromObject = t.Image.filters.BaseFilter.fromObject
            }(e),
            function(e) {
              var t = e.fabric || (e.fabric = {}),
                n = t.Image.filters,
                r = t.util.createClass;
              n.Composed = r(n.BaseFilter, {
                type: "Composed",
                subFilters: [],
                initialize: function(e) {
                  this.callSuper("initialize", e), this.subFilters = this.subFilters.slice(0)
                },
                applyTo: function(e) {
                  e.passes += this.subFilters.length - 1, this.subFilters.forEach((function(t) {
                    t.applyTo(e)
                  }))
                },
                toObject: function() {
                  return t.util.object.extend(this.callSuper("toObject"), {
                    subFilters: this.subFilters.map((function(e) {
                      return e.toObject()
                    }))
                  })
                },
                isNeutralState: function() {
                  return !this.subFilters.some((function(e) {
                    return !e.isNeutralState()
                  }))
                }
              }), t.Image.filters.Composed.fromObject = function(e, n) {
                var r = (e.subFilters || []).map((function(e) {
                    return new t.Image.filters[e.type](e)
                  })),
                  i = new t.Image.filters.Composed({
                    subFilters: r
                  });
                return n && n(i), i
              }
            }(e),
            function(e) {
              var t = e.fabric || (e.fabric = {}),
                n = t.Image.filters,
                r = t.util.createClass;
              n.HueRotation = r(n.ColorMatrix, {
                type: "HueRotation",
                rotation: 0,
                mainParameter: "rotation",
                calculateMatrix: function() {
                  var e = this.rotation * Math.PI,
                    n = t.util.cos(e),
                    r = t.util.sin(e),
                    i = 1 / 3,
                    o = Math.sqrt(i) * r,
                    a = 1 - n;
                  this.matrix = [1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0], this.matrix[0] = n + a / 3, this.matrix[1] = i * a - o, this.matrix[2] = i * a + o, this.matrix[5] = i * a + o, this.matrix[6] = n + i * a, this
                    .matrix[7] = i * a - o, this.matrix[10] = i * a - o, this.matrix[11] = i * a + o, this.matrix[12] = n + i * a
                },
                isNeutralState: function(e) {
                  return this.calculateMatrix(), n.BaseFilter.prototype.isNeutralState.call(this, e)
                },
                applyTo: function(e) {
                  this.calculateMatrix(), n.BaseFilter.prototype.applyTo.call(this, e)
                }
              }), t.Image.filters.HueRotation.fromObject = t.Image.filters.BaseFilter.fromObject
            }(e),
            function(e) {
              var t = e.fabric || (e.fabric = {}),
                n = t.util.object.clone;
              if (t.Text) t.warn("fabric.Text is already defined");
              else {
                var r = "fontFamily fontWeight fontSize text underline overline linethrough textAlign fontStyle lineHeight textBackgroundColor charSpacing styles direction path pathStartOffset pathSide pathAlign".split(" ");
                t.Text = t.util.createClass(t.Object, {
                    _dimensionAffectingProps: ["fontSize", "fontWeight", "fontFamily", "fontStyle", "lineHeight", "text", "charSpacing", "textAlign", "styles", "path", "pathStartOffset", "pathSide", "pathAlign"],
                    _reNewline: /\r?\n/,
                    _reSpacesAndTabs: /[ \t\r]/g,
                    _reSpaceAndTab: /[ \t\r]/,
                    _reWords: /\S+/g,
                    type: "text",
                    fontSize: 40,
                    fontWeight: "normal",
                    fontFamily: "Times New Roman",
                    underline: !1,
                    overline: !1,
                    linethrough: !1,
                    textAlign: "left",
                    fontStyle: "normal",
                    lineHeight: 1.16,
                    superscript: {
                      size: .6,
                      baseline: -.35
                    },
                    subscript: {
                      size: .6,
                      baseline: .11
                    },
                    textBackgroundColor: "",
                    stateProperties: t.Object.prototype.stateProperties.concat(r),
                    cacheProperties: t.Object.prototype.cacheProperties.concat(r),
                    stroke: null,
                    shadow: null,
                    path: null,
                    pathStartOffset: 0,
                    pathSide: "left",
                    pathAlign: "baseline",
                    _fontSizeFraction: .222,
                    offsets: {
                      underline: .1,
                      linethrough: -.315,
                      overline: -.88
                    },
                    _fontSizeMult: 1.13,
                    charSpacing: 0,
                    styles: null,
                    _measuringContext: null,
                    deltaY: 0,
                    direction: "ltr",
                    _styleProperties: ["stroke", "strokeWidth", "fill", "fontFamily", "fontSize", "fontWeight", "fontStyle", "underline", "overline", "linethrough", "deltaY", "textBackgroundColor"],
                    __charBounds: [],
                    CACHE_FONT_SIZE: 400,
                    MIN_TEXT_WIDTH: 2,
                    initialize: function(e, t) {
                      this.styles = t && t.styles || {}, this.text = e, this.__skipDimension = !0, this.callSuper("initialize", t), this.path && this.setPathInfo(), this.__skipDimension = !1, this.initDimensions(), this.setCoords(), this
                        .setupState({
                          propertySet: "_dimensionAffectingProps"
                        })
                    },
                    setPathInfo: function() {
                      var e = this.path;
                      e && (e.segmentsInfo = t.util.getPathSegmentsInfo(e.path))
                    },
                    getMeasuringContext: function() {
                      return t._measuringContext || (t._measuringContext = this.canvas && this.canvas.contextCache || t.util.createCanvasElement().getContext("2d")), t._measuringContext
                    },
                    _splitText: function() {
                      var e = this._splitTextIntoLines(this.text);
                      return this.textLines = e.lines, this._textLines = e.graphemeLines, this._unwrappedTextLines = e._unwrappedLines, this._text = e.graphemeText, e
                    },
                    initDimensions: function() {
                      this.__skipDimension || (this._splitText(), this._clearCache(), this.path ? (this.width = this.path.width, this.height = this.path.height) : (this.width = this.calcTextWidth() || this.cursorWidth || this.MIN_TEXT_WIDTH,
                        this.height = this.calcTextHeight()), -1 !== this.textAlign.indexOf("justify") && this.enlargeSpaces(), this.saveState({
                        propertySet: "_dimensionAffectingProps"
                      }))
                    },
                    enlargeSpaces: function() {
                      for (var e, t, n, r, i, o, a, s = 0, l = this._textLines.length; s < l; s++)
                        if (("justify" === this.textAlign || s !== l - 1 && !this.isEndOfWrapping(s)) && (r = 0, i = this._textLines[s], (t = this.getLineWidth(s)) < this.width && (a = this.textLines[s].match(this._reSpacesAndTabs)))) {
                          n = a.length, e = (this.width - t) / n;
                          for (var c = 0, u = i.length; c <= u; c++) o = this.__charBounds[s][c], this._reSpaceAndTab.test(i[c]) ? (o.width += e, o.kernedWidth += e, o.left += r, r += e) : o.left += r
                        }
                    },
                    isEndOfWrapping: function(e) {
                      return e === this._textLines.length - 1
                    },
                    missingNewlineOffset: function() {
                      return 1
                    },
                    toString: function() {
                      return "#<fabric.Text (" + this.complexity() + '): { "text": "' + this.text + '", "fontFamily": "' + this.fontFamily + '" }>'
                    },
                    _getCacheCanvasDimensions: function() {
                      var e = this.callSuper("_getCacheCanvasDimensions"),
                        t = this.fontSize;
                      return e.width += t * e.zoomX, e.height += t * e.zoomY, e
                    },
                    _render: function(e) {
                      var t = this.path;
                      t && !t.isNotVisible() && t._render(e), this._setTextStyles(e), this._renderTextLinesBackground(e), this._renderTextDecoration(e, "underline"), this._renderText(e), this._renderTextDecoration(e, "overline"), this
                        ._renderTextDecoration(e, "linethrough")
                    },
                    _renderText: function(e) {
                      "stroke" === this.paintFirst ? (this._renderTextStroke(e), this._renderTextFill(e)) : (this._renderTextFill(e), this._renderTextStroke(e))
                    },
                    _setTextStyles: function(e, t, n) {
                      if (e.textBaseline = "alphabetical", this.path) switch (this.pathAlign) {
                        case "center":
                          e.textBaseline = "middle";
                          break;
                        case "ascender":
                          e.textBaseline = "top";
                          break;
                        case "descender":
                          e.textBaseline = "bottom"
                      }
                      e.font = this._getFontDeclaration(t, n)
                    },
                    calcTextWidth: function() {
                      for (var e = this.getLineWidth(0), t = 1, n = this._textLines.length; t < n; t++) {
                        var r = this.getLineWidth(t);
                        r > e && (e = r)
                      }
                      return e
                    },
                    _renderTextLine: function(e, t, n, r, i, o) {
                      this._renderChars(e, t, n, r, i, o)
                    },
                    _renderTextLinesBackground: function(e) {
                      if (this.textBackgroundColor || this.styleHas("textBackgroundColor")) {
                        for (var t, n, r, i, o, a, s, l = e.fillStyle, c = this._getLeftOffset(), u = this._getTopOffset(), h = 0, p = 0, d = this.path, f = 0, g = this._textLines.length; f < g; f++)
                          if (t = this.getHeightOfLine(f), this.textBackgroundColor || this.styleHas("textBackgroundColor", f)) {
                            r = this._textLines[f], n = this._getLineLeftOffset(f), p = 0, h = 0, i = this.getValueOfPropertyAt(f, 0, "textBackgroundColor");
                            for (var m = 0, v = r.length; m < v; m++) o = this.__charBounds[f][m], a = this.getValueOfPropertyAt(f, m, "textBackgroundColor"), d ? (e.save(), e.translate(o.renderLeft, o.renderTop), e.rotate(o.angle), e
                              .fillStyle = a, a && e.fillRect(-o.width / 2, -t / this.lineHeight * (1 - this._fontSizeFraction), o.width, t / this.lineHeight), e.restore()) : a !== i ? (s = c + n + h, "rtl" === this.direction && (s = this
                              .width - s - p), e.fillStyle = i, i && e.fillRect(s, u, p, t / this.lineHeight), h = o.left, p = o.width, i = a) : p += o.kernedWidth;
                            a && !d && (s = c + n + h, "rtl" === this.direction && (s = this.width - s - p), e.fillStyle = a, e.fillRect(s, u, p, t / this.lineHeight)), u += t
                          } else u += t;
                        e.fillStyle = l, this._removeShadow(e)
                      }
                    },
                    getFontCache: function(e) {
                      var n = e.fontFamily.toLowerCase();
                      t.charWidthsCache[n] || (t.charWidthsCache[n] = {});
                      var r = t.charWidthsCache[n],
                        i = e.fontStyle.toLowerCase() + "_" + (e.fontWeight + "").toLowerCase();
                      return r[i] || (r[i] = {}), r[i]
                    },
                    _measureChar: function(e, t, n, r) {
                      var i, o, a, s, l = this.getFontCache(t),
                        c = n + e,
                        u = this._getFontDeclaration(t) === this._getFontDeclaration(r),
                        h = t.fontSize / this.CACHE_FONT_SIZE;
                      if (n && void 0 !== l[n] && (a = l[n]), void 0 !== l[e] && (s = i = l[e]), u && void 0 !== l[c] && (s = (o = l[c]) - a), void 0 === i || void 0 === a || void 0 === o) {
                        var p = this.getMeasuringContext();
                        this._setTextStyles(p, t, !0)
                      }
                      return void 0 === i && (s = i = p.measureText(e).width, l[e] = i), void 0 === a && u && n && (a = p.measureText(n).width, l[n] = a), u && void 0 === o && (o = p.measureText(c).width, l[c] = o, s = o - a), {
                        width: i * h,
                        kernedWidth: s * h
                      }
                    },
                    getHeightOfChar: function(e, t) {
                      return this.getValueOfPropertyAt(e, t, "fontSize")
                    },
                    measureLine: function(e) {
                      var t = this._measureLine(e);
                      return 0 !== this.charSpacing && (t.width -= this._getWidthOfCharSpacing()), t.width < 0 && (t.width = 0), t
                    },
                    _measureLine: function(e) {
                      var n, r, i, o, a, s, l = 0,
                        c = this._textLines[e],
                        u = new Array(c.length),
                        h = 0,
                        p = this.path,
                        d = "right" === this.pathSide;
                      for (this.__charBounds[e] = u, n = 0; n < c.length; n++) r = c[n], o = this._getGraphemeBox(r, e, n, i), u[n] = o, l += o.kernedWidth, i = r;
                      if (u[n] = {
                          left: o ? o.left + o.width : 0,
                          width: 0,
                          kernedWidth: 0,
                          height: this.fontSize
                        }, p) {
                        switch (s = p.segmentsInfo[p.segmentsInfo.length - 1].length, (a = t.util.getPointOnPath(p.path, 0, p.segmentsInfo)).x += p.pathOffset.x, a.y += p.pathOffset.y, this.textAlign) {
                          case "left":
                            h = d ? s - l : 0;
                            break;
                          case "center":
                            h = (s - l) / 2;
                            break;
                          case "right":
                            h = d ? 0 : s - l
                        }
                        for (h += this.pathStartOffset * (d ? -1 : 1), n = d ? c.length - 1 : 0; d ? n >= 0 : n < c.length; d ? n-- : n++) o = u[n], h > s ? h %= s : h < 0 && (h += s), this._setGraphemeOnPath(h, o, a), h += o.kernedWidth
                      }
                      return {
                        width: l,
                        numOfSpaces: 0
                      }
                    },
                    _setGraphemeOnPath: function(e, n, r) {
                      var i = e + n.kernedWidth / 2,
                        o = this.path,
                        a = t.util.getPointOnPath(o.path, i, o.segmentsInfo);
                      n.renderLeft = a.x - r.x, n.renderTop = a.y - r.y, n.angle = a.angle + ("right" === this.pathSide ? Math.PI : 0)
                    },
                    _getGraphemeBox: function(e, t, n, r, i) {
                      var o, a = this.getCompleteStyleDeclaration(t, n),
                        s = r ? this.getCompleteStyleDeclaration(t, n - 1) : {},
                        l = this._measureChar(e, a, r, s),
                        c = l.kernedWidth,
                        u = l.width;
                      0 !== this.charSpacing && (u += o = this._getWidthOfCharSpacing(), c += o);
                      var h = {
                        width: u,
                        left: 0,
                        height: a.fontSize,
                        kernedWidth: c,
                        deltaY: a.deltaY
                      };
                      if (n > 0 && !i) {
                        var p = this.__charBounds[t][n - 1];
                        h.left = p.left + p.width + l.kernedWidth - l.width
                      }
                      return h
                    },
                    getHeightOfLine: function(e) {
                      if (this.__lineHeights[e]) return this.__lineHeights[e];
                      for (var t = this._textLines[e], n = this.getHeightOfChar(e, 0), r = 1, i = t.length; r < i; r++) n = Math.max(this.getHeightOfChar(e, r), n);
                      return this.__lineHeights[e] = n * this.lineHeight * this._fontSizeMult
                    },
                    calcTextHeight: function() {
                      for (var e, t = 0, n = 0, r = this._textLines.length; n < r; n++) e = this.getHeightOfLine(n), t += n === r - 1 ? e / this.lineHeight : e;
                      return t
                    },
                    _getLeftOffset: function() {
                      return "ltr" === this.direction ? -this.width / 2 : this.width / 2
                    },
                    _getTopOffset: function() {
                      return -this.height / 2
                    },
                    _renderTextCommon: function(e, t) {
                      e.save();
                      for (var n = 0, r = this._getLeftOffset(), i = this._getTopOffset(), o = 0, a = this._textLines.length; o < a; o++) {
                        var s = this.getHeightOfLine(o),
                          l = s / this.lineHeight,
                          c = this._getLineLeftOffset(o);
                        this._renderTextLine(t, e, this._textLines[o], r + c, i + n + l, o), n += s
                      }
                      e.restore()
                    },
                    _renderTextFill: function(e) {
                      (this.fill || this.styleHas("fill")) && this._renderTextCommon(e, "fillText")
                    },
                    _renderTextStroke: function(e) {
                      (this.stroke && 0 !== this.strokeWidth || !this.isEmptyStyles()) && (this.shadow && !this.shadow.affectStroke && this._removeShadow(e), e.save(), this._setLineDash(e, this.strokeDashArray), e.beginPath(), this
                        ._renderTextCommon(e, "strokeText"), e.closePath(), e.restore())
                    },
                    _renderChars: function(e, n, r, i, o, a) {
                      var s, l, c, u, h, p = this.getHeightOfLine(a),
                        d = -1 !== this.textAlign.indexOf("justify"),
                        f = "",
                        g = 0,
                        m = this.path,
                        v = !d && 0 === this.charSpacing && this.isEmptyStyles(a) && !m,
                        _ = "ltr" === this.direction,
                        b = "ltr" === this.direction ? 1 : -1,
                        y = n.canvas.getAttribute("dir");
                      if (n.save(), y !== this.direction && (n.canvas.setAttribute("dir", _ ? "ltr" : "rtl"), n.direction = _ ? "ltr" : "rtl", n.textAlign = _ ? "left" : "right"), o -= p * this._fontSizeFraction / this.lineHeight, v)
                      return this._renderChar(e, n, a, 0, r.join(""), i, o, p), void n.restore();
                      for (var w = 0, x = r.length - 1; w <= x; w++) u = w === x || this.charSpacing || m, f += r[w], c = this.__charBounds[a][w], 0 === g ? (i += b * (c.kernedWidth - c.width), g += c.width) : g += c.kernedWidth, d && !u &&
                        this._reSpaceAndTab.test(r[w]) && (u = !0), u || (s = s || this.getCompleteStyleDeclaration(a, w), l = this.getCompleteStyleDeclaration(a, w + 1), u = t.util.hasStyleChanged(s, l, !1)), u && (m ? (n.save(), n
                          .translate(c.renderLeft, c.renderTop), n.rotate(c.angle), this._renderChar(e, n, a, w, f, -g / 2, 0, p), n.restore()) : (h = i, this._renderChar(e, n, a, w, f, h, o, p)), f = "", s = l, i += b * g, g = 0);
                      n.restore()
                    },
                    _applyPatternGradientTransformText: function(e) {
                      var n, r = t.util.createCanvasElement(),
                        i = this.width + this.strokeWidth,
                        o = this.height + this.strokeWidth;
                      return r.width = i, r.height = o, (n = r.getContext("2d")).beginPath(), n.moveTo(0, 0), n.lineTo(i, 0), n.lineTo(i, o), n.lineTo(0, o), n.closePath(), n.translate(i / 2, o / 2), n.fillStyle = e.toLive(n), this
                        ._applyPatternGradientTransform(n, e), n.fill(), n.createPattern(r, "no-repeat")
                    },
                    handleFiller: function(e, t, n) {
                      var r, i;
                      return n.toLive ? "percentage" === n.gradientUnits || n.gradientTransform || n.patternTransform ? (r = -this.width / 2, i = -this.height / 2, e.translate(r, i), e[t] = this._applyPatternGradientTransformText(n), {
                        offsetX: r,
                        offsetY: i
                      }) : (e[t] = n.toLive(e, this), this._applyPatternGradientTransform(e, n)) : (e[t] = n, {
                        offsetX: 0,
                        offsetY: 0
                      })
                    },
                    _setStrokeStyles: function(e, t) {
                      return e.lineWidth = t.strokeWidth, e.lineCap = this.strokeLineCap, e.lineDashOffset = this.strokeDashOffset, e.lineJoin = this.strokeLineJoin, e.miterLimit = this.strokeMiterLimit, this.handleFiller(e, "strokeStyle", t
                        .stroke)
                    },
                    _setFillStyles: function(e, t) {
                      return this.handleFiller(e, "fillStyle", t.fill)
                    },
                    _renderChar: function(e, t, n, r, i, o, a) {
                      var s, l, c = this._getStyleDeclaration(n, r),
                        u = this.getCompleteStyleDeclaration(n, r),
                        h = "fillText" === e && u.fill,
                        p = "strokeText" === e && u.stroke && u.strokeWidth;
                      (p || h) && (t.save(), h && (s = this._setFillStyles(t, u)), p && (l = this._setStrokeStyles(t, u)), t.font = this._getFontDeclaration(u), c && c.textBackgroundColor && this._removeShadow(t), c && c.deltaY && (a += c
                        .deltaY), h && t.fillText(i, o - s.offsetX, a - s.offsetY), p && t.strokeText(i, o - l.offsetX, a - l.offsetY), t.restore())
                    },
                    setSuperscript: function(e, t) {
                      return this._setScript(e, t, this.superscript)
                    },
                    setSubscript: function(e, t) {
                      return this._setScript(e, t, this.subscript)
                    },
                    _setScript: function(e, t, n) {
                      var r = this.get2DCursorLocation(e, !0),
                        i = this.getValueOfPropertyAt(r.lineIndex, r.charIndex, "fontSize"),
                        o = this.getValueOfPropertyAt(r.lineIndex, r.charIndex, "deltaY"),
                        a = {
                          fontSize: i * n.size,
                          deltaY: o + i * n.baseline
                        };
                      return this.setSelectionStyles(a, e, t), this
                    },
                    _getLineLeftOffset: function(e) {
                      var t = this.getLineWidth(e),
                        n = this.width - t,
                        r = this.textAlign,
                        i = this.direction,
                        o = 0,
                        a = this.isEndOfWrapping(e);
                      return "justify" === r || "justify-center" === r && !a || "justify-right" === r && !a || "justify-left" === r && !a ? 0 : ("center" === r && (o = n / 2), "right" === r && (o = n), "justify-center" === r && (o = n / 2),
                        "justify-right" === r && (o = n), "rtl" === i && (o -= n), o)
                    },
                    _clearCache: function() {
                      this.__lineWidths = [], this.__lineHeights = [], this.__charBounds = []
                    },
                    _shouldClearDimensionCache: function() {
                      var e = this._forceClearCache;
                      return e || (e = this.hasStateChanged("_dimensionAffectingProps")), e && (this.dirty = !0, this._forceClearCache = !1), e
                    },
                    getLineWidth: function(e) {
                      if (void 0 !== this.__lineWidths[e]) return this.__lineWidths[e];
                      var t = this.measureLine(e).width;
                      return this.__lineWidths[e] = t, t
                    },
                    _getWidthOfCharSpacing: function() {
                      return 0 !== this.charSpacing ? this.fontSize * this.charSpacing / 1e3 : 0
                    },
                    getValueOfPropertyAt: function(e, t, n) {
                      var r = this._getStyleDeclaration(e, t);
                      return r && void 0 !== r[n] ? r[n] : this[n]
                    },
                    _renderTextDecoration: function(e, t) {
                      if (this[t] || this.styleHas(t)) {
                        for (var n, r, i, o, a, s, l, c, u, h, p, d, f, g, m, v, _ = this._getLeftOffset(), b = this._getTopOffset(), y = this.path, w = this._getWidthOfCharSpacing(), x = this.offsets[t], k = 0, C = this._textLines
                          .length; k < C; k++)
                          if (n = this.getHeightOfLine(k), this[t] || this.styleHas(t, k)) {
                            l = this._textLines[k], g = n / this.lineHeight, o = this._getLineLeftOffset(k), h = 0, p = 0, c = this.getValueOfPropertyAt(k, 0, t), v = this.getValueOfPropertyAt(k, 0, "fill"), u = b + g * (1 - this
                              ._fontSizeFraction), r = this.getHeightOfChar(k, 0), a = this.getValueOfPropertyAt(k, 0, "deltaY");
                            for (var S = 0, E = l.length; S < E; S++)
                              if (d = this.__charBounds[k][S], f = this.getValueOfPropertyAt(k, S, t), m = this.getValueOfPropertyAt(k, S, "fill"), i = this.getHeightOfChar(k, S), s = this.getValueOfPropertyAt(k, S, "deltaY"), y && f && m) e
                                .save(), e.fillStyle = v, e.translate(d.renderLeft, d.renderTop), e.rotate(d.angle), e.fillRect(-d.kernedWidth / 2, x * i + s, d.kernedWidth, this.fontSize / 15), e.restore();
                              else if ((f !== c || m !== v || i !== r || s !== a) && p > 0) {
                              var T = _ + o + h;
                              "rtl" === this.direction && (T = this.width - T - p), c && v && (e.fillStyle = v, e.fillRect(T, u + x * r + a, p, this.fontSize / 15)), h = d.left, p = d.width, c = f, v = m, r = i, a = s
                            } else p += d.kernedWidth;
                            T = _ + o + h;
                            "rtl" === this.direction && (T = this.width - T - p), e.fillStyle = m, f && m && e.fillRect(T, u + x * r + a, p - w, this.fontSize / 15), b += n
                          } else b += n;
                        this._removeShadow(e)
                      }
                    },
                    _getFontDeclaration: function(e, n) {
                      var r = e || this,
                        i = this.fontFamily,
                        o = t.Text.genericFonts.indexOf(i.toLowerCase()) > -1,
                        a = void 0 === i || i.indexOf("'") > -1 || i.indexOf(",") > -1 || i.indexOf('"') > -1 || o ? r.fontFamily : '"' + r.fontFamily + '"';
                      return [t.isLikelyNode ? r.fontWeight : r.fontStyle, t.isLikelyNode ? r.fontStyle : r.fontWeight, n ? this.CACHE_FONT_SIZE + "px" : r.fontSize + "px", a].join(" ")
                    },
                    render: function(e) {
                      this.visible && (this.canvas && this.canvas.skipOffscreen && !this.group && !this.isOnScreen() || (this._shouldClearDimensionCache() && this.initDimensions(), this.callSuper("render", e)))
                    },
                    _splitTextIntoLines: function(e) {
                      for (var n = e.split(this._reNewline), r = new Array(n.length), i = ["\n"], o = [], a = 0; a < n.length; a++) r[a] = t.util.string.graphemeSplit(n[a]), o = o.concat(r[a], i);
                      return o.pop(), {
                        _unwrappedLines: r,
                        lines: n,
                        graphemeText: o,
                        graphemeLines: r
                      }
                    },
                    toObject: function(e) {
                      var n = r.concat(e),
                        i = this.callSuper("toObject", n);
                      return i.styles = t.util.stylesToArray(this.styles, this.text), i.path && (i.path = this.path.toObject()), i
                    },
                    set: function(e, t) {
                      this.callSuper("set", e, t);
                      var n = !1,
                        r = !1;
                      if ("object" == typeof e)
                        for (var i in e) "path" === i && this.setPathInfo(), n = n || -1 !== this._dimensionAffectingProps.indexOf(i), r = r || "path" === i;
                      else n = -1 !== this._dimensionAffectingProps.indexOf(e), r = "path" === e;
                      return r && this.setPathInfo(), n && (this.initDimensions(), this.setCoords()), this
                    },
                    complexity: function() {
                      return 1
                    }
                  }), t.Text.ATTRIBUTE_NAMES = t.SHARED_ATTRIBUTES.concat("x y dx dy font-family font-style font-weight font-size letter-spacing text-decoration text-anchor".split(" ")), t.Text.DEFAULT_SVG_FONT_SIZE = 16, t.Text.fromElement =
                  function(e, r, i) {
                    if (!e) return r(null);
                    var o = t.parseAttributes(e, t.Text.ATTRIBUTE_NAMES),
                      a = o.textAnchor || "left";
                    if ((i = t.util.object.extend(i ? n(i) : {}, o)).top = i.top || 0, i.left = i.left || 0, o.textDecoration) {
                      var s = o.textDecoration; - 1 !== s.indexOf("underline") && (i.underline = !0), -1 !== s.indexOf("overline") && (i.overline = !0), -1 !== s.indexOf("line-through") && (i.linethrough = !0), delete i.textDecoration
                    }
                    "dx" in o && (i.left += o.dx), "dy" in o && (i.top += o.dy), "fontSize" in i || (i.fontSize = t.Text.DEFAULT_SVG_FONT_SIZE);
                    var l = "";
                    "textContent" in e ? l = e.textContent : "firstChild" in e && null !== e.firstChild && "data" in e.firstChild && null !== e.firstChild.data && (l = e.firstChild.data), l = l.replace(/^\s+|\s+$|\n+/g, "").replace(/\s+/g, " ");
                    var c = i.strokeWidth;
                    i.strokeWidth = 0;
                    var u = new t.Text(l, i),
                      h = u.getScaledHeight() / u.height,
                      p = ((u.height + u.strokeWidth) * u.lineHeight - u.height) * h,
                      d = u.getScaledHeight() + p,
                      f = 0;
                    "center" === a && (f = u.getScaledWidth() / 2), "right" === a && (f = u.getScaledWidth()), u.set({
                      left: u.left - f,
                      top: u.top - (d - u.fontSize * (.07 + u._fontSizeFraction)) / u.lineHeight,
                      strokeWidth: void 0 !== c ? c : 1
                    }), r(u)
                  }, t.Text.fromObject = function(e, r) {
                    var i = n(e),
                      o = e.path;
                    return delete i.path, t.Object._fromObject("Text", i, (function(n) {
                      n.styles = t.util.stylesFromArray(e.styles, e.text), o ? t.Object._fromObject("Path", o, (function(e) {
                        n.set("path", e), r(n)
                      }), "path") : r(n)
                    }), "text")
                  }, t.Text.genericFonts = ["sans-serif", "serif", "cursive", "fantasy", "monospace"], t.util.createAccessors && t.util.createAccessors(t.Text)
              }
            }(e), v.util.object.extend(v.Text.prototype, {
              isEmptyStyles: function(e) {
                if (!this.styles) return !0;
                if (void 0 !== e && !this.styles[e]) return !0;
                var t = void 0 === e ? this.styles : {
                  line: this.styles[e]
                };
                for (var n in t)
                  for (var r in t[n])
                    for (var i in t[n][r]) return !1;
                return !0
              },
              styleHas: function(e, t) {
                if (!this.styles || !e || "" === e) return !1;
                if (void 0 !== t && !this.styles[t]) return !1;
                var n = void 0 === t ? this.styles : {
                  0: this.styles[t]
                };
                for (var r in n)
                  for (var i in n[r])
                    if (void 0 !== n[r][i][e]) return !0;
                return !1
              },
              cleanStyle: function(e) {
                if (!this.styles || !e || "" === e) return !1;
                var t, n, r = this.styles,
                  i = 0,
                  o = !0,
                  a = 0;
                for (var s in r) {
                  for (var l in t = 0, r[s]) {
                    var c;
                    i++, (c = r[s][l]).hasOwnProperty(e) ? (n ? c[e] !== n && (o = !1) : n = c[e], c[e] === this[e] && delete c[e]) : o = !1, 0 !== Object.keys(c).length ? t++ : delete r[s][l]
                  }
                  0 === t && delete r[s]
                }
                for (var u = 0; u < this._textLines.length; u++) a += this._textLines[u].length;
                o && i === a && (this[e] = n, this.removeStyle(e))
              },
              removeStyle: function(e) {
                if (this.styles && e && "" !== e) {
                  var t, n, r, i = this.styles;
                  for (n in i) {
                    for (r in t = i[n]) delete t[r][e], 0 === Object.keys(t[r]).length && delete t[r];
                    0 === Object.keys(t).length && delete i[n]
                  }
                }
              },
              _extendStyles: function(e, t) {
                var n = this.get2DCursorLocation(e);
                this._getLineStyle(n.lineIndex) || this._setLineStyle(n.lineIndex), this._getStyleDeclaration(n.lineIndex, n.charIndex) || this._setStyleDeclaration(n.lineIndex, n.charIndex, {}), v.util.object.extend(this
                  ._getStyleDeclaration(n.lineIndex, n.charIndex), t)
              },
              get2DCursorLocation: function(e, t) {
                void 0 === e && (e = this.selectionStart);
                for (var n = t ? this._unwrappedTextLines : this._textLines, r = n.length, i = 0; i < r; i++) {
                  if (e <= n[i].length) return {
                    lineIndex: i,
                    charIndex: e
                  };
                  e -= n[i].length + this.missingNewlineOffset(i)
                }
                return {
                  lineIndex: i - 1,
                  charIndex: n[i - 1].length < e ? n[i - 1].length : e
                }
              },
              getSelectionStyles: function(e, t, n) {
                void 0 === e && (e = this.selectionStart || 0), void 0 === t && (t = this.selectionEnd || e);
                for (var r = [], i = e; i < t; i++) r.push(this.getStyleAtPosition(i, n));
                return r
              },
              getStyleAtPosition: function(e, t) {
                var n = this.get2DCursorLocation(e);
                return (t ? this.getCompleteStyleDeclaration(n.lineIndex, n.charIndex) : this._getStyleDeclaration(n.lineIndex, n.charIndex)) || {}
              },
              setSelectionStyles: function(e, t, n) {
                void 0 === t && (t = this.selectionStart || 0), void 0 === n && (n = this.selectionEnd || t);
                for (var r = t; r < n; r++) this._extendStyles(r, e);
                return this._forceClearCache = !0, this
              },
              _getStyleDeclaration: function(e, t) {
                var n = this.styles && this.styles[e];
                return n ? n[t] : null
              },
              getCompleteStyleDeclaration: function(e, t) {
                for (var n, r = this._getStyleDeclaration(e, t) || {}, i = {}, o = 0; o < this._styleProperties.length; o++) i[n = this._styleProperties[o]] = void 0 === r[n] ? this[n] : r[n];
                return i
              },
              _setStyleDeclaration: function(e, t, n) {
                this.styles[e][t] = n
              },
              _deleteStyleDeclaration: function(e, t) {
                delete this.styles[e][t]
              },
              _getLineStyle: function(e) {
                return !!this.styles[e]
              },
              _setLineStyle: function(e) {
                this.styles[e] = {}
              },
              _deleteLineStyle: function(e) {
                delete this.styles[e]
              }
            }),
            function() {
              function e(e) {
                e.textDecoration && (e.textDecoration.indexOf("underline") > -1 && (e.underline = !0), e.textDecoration.indexOf("line-through") > -1 && (e.linethrough = !0), e.textDecoration.indexOf("overline") > -1 && (e.overline = !0), delete e
                  .textDecoration)
              }
              v.IText = v.util.createClass(v.Text, v.Observable, {
                type: "i-text",
                selectionStart: 0,
                selectionEnd: 0,
                selectionColor: "rgba(17,119,255,0.3)",
                isEditing: !1,
                editable: !0,
                editingBorderColor: "rgba(102,153,255,0.25)",
                cursorWidth: 2,
                cursorColor: "",
                cursorDelay: 1e3,
                cursorDuration: 600,
                caching: !0,
                hiddenTextareaContainer: null,
                _reSpace: /\s|\n/,
                _currentCursorOpacity: 0,
                _selectionDirection: null,
                _abortCursorAnimation: !1,
                __widthOfSpace: [],
                inCompositionMode: !1,
                initialize: function(e, t) {
                  this.callSuper("initialize", e, t), this.initBehavior()
                },
                setSelectionStart: function(e) {
                  e = Math.max(e, 0), this._updateAndFire("selectionStart", e)
                },
                setSelectionEnd: function(e) {
                  e = Math.min(e, this.text.length), this._updateAndFire("selectionEnd", e)
                },
                _updateAndFire: function(e, t) {
                  this[e] !== t && (this._fireSelectionChanged(), this[e] = t), this._updateTextarea()
                },
                _fireSelectionChanged: function() {
                  this.fire("selection:changed"), this.canvas && this.canvas.fire("text:selection:changed", {
                    target: this
                  })
                },
                initDimensions: function() {
                  this.isEditing && this.initDelayedCursor(), this.clearContextTop(), this.callSuper("initDimensions")
                },
                render: function(e) {
                  this.clearContextTop(), this.callSuper("render", e), this.cursorOffsetCache = {}, this.renderCursorOrSelection()
                },
                _render: function(e) {
                  this.callSuper("_render", e)
                },
                clearContextTop: function(e) {
                  if (this.isEditing && this.canvas && this.canvas.contextTop) {
                    var t = this.canvas.contextTop,
                      n = this.canvas.viewportTransform;
                    t.save(), t.transform(n[0], n[1], n[2], n[3], n[4], n[5]), this.transform(t), this._clearTextArea(t), e || t.restore()
                  }
                },
                renderCursorOrSelection: function() {
                  if (this.isEditing && this.canvas && this.canvas.contextTop) {
                    var e = this._getCursorBoundaries(),
                      t = this.canvas.contextTop;
                    this.clearContextTop(!0), this.selectionStart === this.selectionEnd ? this.renderCursor(e, t) : this.renderSelection(e, t), t.restore()
                  }
                },
                _clearTextArea: function(e) {
                  var t = this.width + 4,
                    n = this.height + 4;
                  e.clearRect(-t / 2, -n / 2, t, n)
                },
                _getCursorBoundaries: function(e) {
                  void 0 === e && (e = this.selectionStart);
                  var t = this._getLeftOffset(),
                    n = this._getTopOffset(),
                    r = this._getCursorBoundariesOffsets(e);
                  return {
                    left: t,
                    top: n,
                    leftOffset: r.left,
                    topOffset: r.top
                  }
                },
                _getCursorBoundariesOffsets: function(e) {
                  if (this.cursorOffsetCache && "top" in this.cursorOffsetCache) return this.cursorOffsetCache;
                  var t, n, r, i, o = 0,
                    a = 0,
                    s = this.get2DCursorLocation(e);
                  r = s.charIndex, n = s.lineIndex;
                  for (var l = 0; l < n; l++) o += this.getHeightOfLine(l);
                  t = this._getLineLeftOffset(n);
                  var c = this.__charBounds[n][r];
                  return c && (a = c.left), 0 !== this.charSpacing && r === this._textLines[n].length && (a -= this._getWidthOfCharSpacing()), i = {
                    top: o,
                    left: t + (a > 0 ? a : 0)
                  }, "rtl" === this.direction && (i.left *= -1), this.cursorOffsetCache = i, this.cursorOffsetCache
                },
                renderCursor: function(e, t) {
                  var n = this.get2DCursorLocation(),
                    r = n.lineIndex,
                    i = n.charIndex > 0 ? n.charIndex - 1 : 0,
                    o = this.getValueOfPropertyAt(r, i, "fontSize"),
                    a = this.scaleX * this.canvas.getZoom(),
                    s = this.cursorWidth / a,
                    l = e.topOffset,
                    c = this.getValueOfPropertyAt(r, i, "deltaY");
                  l += (1 - this._fontSizeFraction) * this.getHeightOfLine(r) / this.lineHeight - o * (1 - this._fontSizeFraction), this.inCompositionMode && this.renderSelection(e, t), t.fillStyle = this.cursorColor || this
                    .getValueOfPropertyAt(r, i, "fill"), t.globalAlpha = this.__isMousedown ? 1 : this._currentCursorOpacity, t.fillRect(e.left + e.leftOffset - s / 2, l + e.top + c, s, o)
                },
                renderSelection: function(e, t) {
                  for (var n = this.inCompositionMode ? this.hiddenTextarea.selectionStart : this.selectionStart, r = this.inCompositionMode ? this.hiddenTextarea.selectionEnd : this.selectionEnd, i = -1 !== this.textAlign.indexOf(
                      "justify"), o = this.get2DCursorLocation(n), a = this.get2DCursorLocation(r), s = o.lineIndex, l = a.lineIndex, c = o.charIndex < 0 ? 0 : o.charIndex, u = a.charIndex < 0 ? 0 : a.charIndex, h = s; h <= l; h++) {
                    var p, d = this._getLineLeftOffset(h) || 0,
                      f = this.getHeightOfLine(h),
                      g = 0,
                      m = 0;
                    if (h === s && (g = this.__charBounds[s][c].left), h >= s && h < l) m = i && !this.isEndOfWrapping(h) ? this.width : this.getLineWidth(h) || 5;
                    else if (h === l)
                      if (0 === u) m = this.__charBounds[l][u].left;
                      else {
                        var v = this._getWidthOfCharSpacing();
                        m = this.__charBounds[l][u - 1].left + this.__charBounds[l][u - 1].width - v
                      } p = f, (this.lineHeight < 1 || h === l && this.lineHeight > 1) && (f /= this.lineHeight);
                    var _ = e.left + d + g,
                      b = m - g,
                      y = f,
                      w = 0;
                    this.inCompositionMode ? (t.fillStyle = this.compositionColor || "black", y = 1, w = f) : t.fillStyle = this.selectionColor, "rtl" === this.direction && (_ = this.width - _ - b), t.fillRect(_, e.top + e.topOffset + w, b,
                      y), e.topOffset += p
                  }
                },
                getCurrentCharFontSize: function() {
                  var e = this._getCurrentCharIndex();
                  return this.getValueOfPropertyAt(e.l, e.c, "fontSize")
                },
                getCurrentCharColor: function() {
                  var e = this._getCurrentCharIndex();
                  return this.getValueOfPropertyAt(e.l, e.c, "fill")
                },
                _getCurrentCharIndex: function() {
                  var e = this.get2DCursorLocation(this.selectionStart, !0),
                    t = e.charIndex > 0 ? e.charIndex - 1 : 0;
                  return {
                    l: e.lineIndex,
                    c: t
                  }
                }
              }), v.IText.fromObject = function(t, n) {
                var r = v.util.stylesFromArray(t.styles, t.text),
                  i = Object.assign({}, t, {
                    styles: r
                  });
                if (e(i), i.styles)
                  for (var o in i.styles)
                    for (var a in i.styles[o]) e(i.styles[o][a]);
                v.Object._fromObject("IText", i, n, "text")
              }
            }(), m = v.util.object.clone, v.util.object.extend(v.IText.prototype, {
              initBehavior: function() {
                this.initAddedHandler(), this.initRemovedHandler(), this.initCursorSelectionHandlers(), this.initDoubleClickSimulation(), this.mouseMoveHandler = this.mouseMoveHandler.bind(this)
              },
              onDeselect: function() {
                this.isEditing && this.exitEditing(), this.selected = !1
              },
              initAddedHandler: function() {
                var e = this;
                this.on("added", (function() {
                  var t = e.canvas;
                  t && (t._hasITextHandlers || (t._hasITextHandlers = !0, e._initCanvasHandlers(t)), t._iTextInstances = t._iTextInstances || [], t._iTextInstances.push(e))
                }))
              },
              initRemovedHandler: function() {
                var e = this;
                this.on("removed", (function() {
                  var t = e.canvas;
                  t && (t._iTextInstances = t._iTextInstances || [], v.util.removeFromArray(t._iTextInstances, e), 0 === t._iTextInstances.length && (t._hasITextHandlers = !1, e._removeCanvasHandlers(t)))
                }))
              },
              _initCanvasHandlers: function(e) {
                e._mouseUpITextHandler = function() {
                  e._iTextInstances && e._iTextInstances.forEach((function(e) {
                    e.__isMousedown = !1
                  }))
                }, e.on("mouse:up", e._mouseUpITextHandler)
              },
              _removeCanvasHandlers: function(e) {
                e.off("mouse:up", e._mouseUpITextHandler)
              },
              _tick: function() {
                this._currentTickState = this._animateCursor(this, 1, this.cursorDuration, "_onTickComplete")
              },
              _animateCursor: function(e, t, n, r) {
                var i;
                return i = {
                  isAborted: !1,
                  abort: function() {
                    this.isAborted = !0
                  }
                }, e.animate("_currentCursorOpacity", t, {
                  duration: n,
                  onComplete: function() {
                    i.isAborted || e[r]()
                  },
                  onChange: function() {
                    e.canvas && e.selectionStart === e.selectionEnd && e.renderCursorOrSelection()
                  },
                  abort: function() {
                    return i.isAborted
                  }
                }), i
              },
              _onTickComplete: function() {
                var e = this;
                this._cursorTimeout1 && clearTimeout(this._cursorTimeout1), this._cursorTimeout1 = setTimeout((function() {
                  e._currentTickCompleteState = e._animateCursor(e, 0, this.cursorDuration / 2, "_tick")
                }), 100)
              },
              initDelayedCursor: function(e) {
                var t = this,
                  n = e ? 0 : this.cursorDelay;
                this.abortCursorAnimation(), this._currentCursorOpacity = 1, this._cursorTimeout2 = setTimeout((function() {
                  t._tick()
                }), n)
              },
              abortCursorAnimation: function() {
                var e = this._currentTickState || this._currentTickCompleteState,
                  t = this.canvas;
                this._currentTickState && this._currentTickState.abort(), this._currentTickCompleteState && this._currentTickCompleteState.abort(), clearTimeout(this._cursorTimeout1), clearTimeout(this._cursorTimeout2), this
                  ._currentCursorOpacity = 0, e && t && t.clearContext(t.contextTop || t.contextContainer)
              },
              selectAll: function() {
                return this.selectionStart = 0, this.selectionEnd = this._text.length, this._fireSelectionChanged(), this._updateTextarea(), this
              },
              getSelectedText: function() {
                return this._text.slice(this.selectionStart, this.selectionEnd).join("")
              },
              findWordBoundaryLeft: function(e) {
                var t = 0,
                  n = e - 1;
                if (this._reSpace.test(this._text[n]))
                  for (; this._reSpace.test(this._text[n]);) t++, n--;
                for (;
                  /\S/.test(this._text[n]) && n > -1;) t++, n--;
                return e - t
              },
              findWordBoundaryRight: function(e) {
                var t = 0,
                  n = e;
                if (this._reSpace.test(this._text[n]))
                  for (; this._reSpace.test(this._text[n]);) t++, n++;
                for (;
                  /\S/.test(this._text[n]) && n < this._text.length;) t++, n++;
                return e + t
              },
              findLineBoundaryLeft: function(e) {
                for (var t = 0, n = e - 1; !/\n/.test(this._text[n]) && n > -1;) t++, n--;
                return e - t
              },
              findLineBoundaryRight: function(e) {
                for (var t = 0, n = e; !/\n/.test(this._text[n]) && n < this._text.length;) t++, n++;
                return e + t
              },
              searchWordBoundary: function(e, t) {
                for (var n = this._text, r = this._reSpace.test(n[e]) ? e - 1 : e, i = n[r], o = v.reNonWord; !o.test(i) && r > 0 && r < n.length;) i = n[r += t];
                return o.test(i) && (r += 1 === t ? 0 : 1), r
              },
              selectWord: function(e) {
                e = e || this.selectionStart;
                var t = this.searchWordBoundary(e, -1),
                  n = this.searchWordBoundary(e, 1);
                this.selectionStart = t, this.selectionEnd = n, this._fireSelectionChanged(), this._updateTextarea(), this.renderCursorOrSelection()
              },
              selectLine: function(e) {
                e = e || this.selectionStart;
                var t = this.findLineBoundaryLeft(e),
                  n = this.findLineBoundaryRight(e);
                return this.selectionStart = t, this.selectionEnd = n, this._fireSelectionChanged(), this._updateTextarea(), this
              },
              enterEditing: function(e) {
                if (!this.isEditing && this.editable) return this.canvas && (this.canvas.calcOffset(), this.exitEditingOnOthers(this.canvas)), this.isEditing = !0, this.initHiddenTextarea(e), this.hiddenTextarea.focus(), this.hiddenTextarea
                  .value = this.text, this._updateTextarea(), this._saveEditingProps(), this._setEditingProps(), this._textBeforeEdit = this.text, this._tick(), this.fire("editing:entered"), this._fireSelectionChanged(), this.canvas ? (this
                    .canvas.fire("text:editing:entered", {
                      target: this
                    }), this.initMouseMoveHandler(), this.canvas.requestRenderAll(), this) : this
              },
              exitEditingOnOthers: function(e) {
                e._iTextInstances && e._iTextInstances.forEach((function(e) {
                  e.selected = !1, e.isEditing && e.exitEditing()
                }))
              },
              initMouseMoveHandler: function() {
                this.canvas.on("mouse:move", this.mouseMoveHandler)
              },
              mouseMoveHandler: function(e) {
                if (this.__isMousedown && this.isEditing) {
                  document.activeElement !== this.hiddenTextarea && this.hiddenTextarea.focus();
                  var t = this.getSelectionStartFromPointer(e.e),
                    n = this.selectionStart,
                    r = this.selectionEnd;
                  (t === this.__selectionStartOnMouseDown && n !== r || n !== t && r !== t) && (t > this.__selectionStartOnMouseDown ? (this.selectionStart = this.__selectionStartOnMouseDown, this.selectionEnd = t) : (this.selectionStart = t,
                    this.selectionEnd = this.__selectionStartOnMouseDown), this.selectionStart === n && this.selectionEnd === r || (this.restartCursorIfNeeded(), this._fireSelectionChanged(), this._updateTextarea(), this
                    .renderCursorOrSelection()))
                }
              },
              _setEditingProps: function() {
                this.hoverCursor = "text", this.canvas && (this.canvas.defaultCursor = this.canvas.moveCursor = "text"), this.borderColor = this.editingBorderColor, this.hasControls = this.selectable = !1, this.lockMovementX = this
                  .lockMovementY = !0
              },
              fromStringToGraphemeSelection: function(e, t, n) {
                var r = n.slice(0, e),
                  i = v.util.string.graphemeSplit(r).length;
                if (e === t) return {
                  selectionStart: i,
                  selectionEnd: i
                };
                var o = n.slice(e, t);
                return {
                  selectionStart: i,
                  selectionEnd: i + v.util.string.graphemeSplit(o).length
                }
              },
              fromGraphemeToStringSelection: function(e, t, n) {
                var r = n.slice(0, e).join("").length;
                return e === t ? {
                  selectionStart: r,
                  selectionEnd: r
                } : {
                  selectionStart: r,
                  selectionEnd: r + n.slice(e, t).join("").length
                }
              },
              _updateTextarea: function() {
                if (this.cursorOffsetCache = {}, this.hiddenTextarea) {
                  if (!this.inCompositionMode) {
                    var e = this.fromGraphemeToStringSelection(this.selectionStart, this.selectionEnd, this._text);
                    this.hiddenTextarea.selectionStart = e.selectionStart, this.hiddenTextarea.selectionEnd = e.selectionEnd
                  }
                  this.updateTextareaPosition()
                }
              },
              updateFromTextArea: function() {
                if (this.hiddenTextarea) {
                  this.cursorOffsetCache = {}, this.text = this.hiddenTextarea.value, this._shouldClearDimensionCache() && (this.initDimensions(), this.setCoords());
                  var e = this.fromStringToGraphemeSelection(this.hiddenTextarea.selectionStart, this.hiddenTextarea.selectionEnd, this.hiddenTextarea.value);
                  this.selectionEnd = this.selectionStart = e.selectionEnd, this.inCompositionMode || (this.selectionStart = e.selectionStart), this.updateTextareaPosition()
                }
              },
              updateTextareaPosition: function() {
                if (this.selectionStart === this.selectionEnd) {
                  var e = this._calcTextareaPosition();
                  this.hiddenTextarea.style.left = e.left, this.hiddenTextarea.style.top = e.top
                }
              },
              _calcTextareaPosition: function() {
                if (!this.canvas) return {
                  x: 1,
                  y: 1
                };
                var e = this.inCompositionMode ? this.compositionStart : this.selectionStart,
                  t = this._getCursorBoundaries(e),
                  n = this.get2DCursorLocation(e),
                  r = n.lineIndex,
                  i = n.charIndex,
                  o = this.getValueOfPropertyAt(r, i, "fontSize") * this.lineHeight,
                  a = t.leftOffset,
                  s = this.calcTransformMatrix(),
                  l = {
                    x: t.left + a,
                    y: t.top + t.topOffset + o
                  },
                  c = this.canvas.getRetinaScaling(),
                  u = this.canvas.upperCanvasEl,
                  h = u.width / c,
                  p = u.height / c,
                  d = h - o,
                  f = p - o,
                  g = u.clientWidth / h,
                  m = u.clientHeight / p;
                return l = v.util.transformPoint(l, s), (l = v.util.transformPoint(l, this.canvas.viewportTransform)).x *= g, l.y *= m, l.x < 0 && (l.x = 0), l.x > d && (l.x = d), l.y < 0 && (l.y = 0), l.y > f && (l.y = f), l.x += this.canvas
                  ._offset.left, l.y += this.canvas._offset.top, {
                    left: l.x + "px",
                    top: l.y + "px",
                    fontSize: o + "px",
                    charHeight: o
                  }
              },
              _saveEditingProps: function() {
                this._savedProps = {
                  hasControls: this.hasControls,
                  borderColor: this.borderColor,
                  lockMovementX: this.lockMovementX,
                  lockMovementY: this.lockMovementY,
                  hoverCursor: this.hoverCursor,
                  selectable: this.selectable,
                  defaultCursor: this.canvas && this.canvas.defaultCursor,
                  moveCursor: this.canvas && this.canvas.moveCursor
                }
              },
              _restoreEditingProps: function() {
                this._savedProps && (this.hoverCursor = this._savedProps.hoverCursor, this.hasControls = this._savedProps.hasControls, this.borderColor = this._savedProps.borderColor, this.selectable = this._savedProps.selectable, this
                  .lockMovementX = this._savedProps.lockMovementX, this.lockMovementY = this._savedProps.lockMovementY, this.canvas && (this.canvas.defaultCursor = this._savedProps.defaultCursor, this.canvas.moveCursor = this._savedProps
                    .moveCursor))
              },
              exitEditing: function() {
                var e = this._textBeforeEdit !== this.text,
                  t = this.hiddenTextarea;
                return this.selected = !1, this.isEditing = !1, this.selectionEnd = this.selectionStart, t && (t.blur && t.blur(), t.parentNode && t.parentNode.removeChild(t)), this.hiddenTextarea = null, this.abortCursorAnimation(), this
                  ._restoreEditingProps(), this._currentCursorOpacity = 0, this._shouldClearDimensionCache() && (this.initDimensions(), this.setCoords()), this.fire("editing:exited"), e && this.fire("modified"), this.canvas && (this.canvas
                    .off("mouse:move", this.mouseMoveHandler), this.canvas.fire("text:editing:exited", {
                      target: this
                    }), e && this.canvas.fire("object:modified", {
                      target: this
                    })), this
              },
              _removeExtraneousStyles: function() {
                for (var e in this.styles) this._textLines[e] || delete this.styles[e]
              },
              removeStyleFromTo: function(e, t) {
                var n, r, i = this.get2DCursorLocation(e, !0),
                  o = this.get2DCursorLocation(t, !0),
                  a = i.lineIndex,
                  s = i.charIndex,
                  l = o.lineIndex,
                  c = o.charIndex;
                if (a !== l) {
                  if (this.styles[a])
                    for (n = s; n < this._unwrappedTextLines[a].length; n++) delete this.styles[a][n];
                  if (this.styles[l])
                    for (n = c; n < this._unwrappedTextLines[l].length; n++)(r = this.styles[l][n]) && (this.styles[a] || (this.styles[a] = {}), this.styles[a][s + n - c] = r);
                  for (n = a + 1; n <= l; n++) delete this.styles[n];
                  this.shiftLineStyles(l, a - l)
                } else if (this.styles[a]) {
                  r = this.styles[a];
                  var u, h, p = c - s;
                  for (n = s; n < c; n++) delete r[n];
                  for (h in this.styles[a])(u = parseInt(h, 10)) >= c && (r[u - p] = r[h], delete r[h])
                }
              },
              shiftLineStyles: function(e, t) {
                var n = m(this.styles);
                for (var r in this.styles) {
                  var i = parseInt(r, 10);
                  i > e && (this.styles[i + t] = n[i], n[i - t] || delete this.styles[i])
                }
              },
              restartCursorIfNeeded: function() {
                this._currentTickState && !this._currentTickState.isAborted && this._currentTickCompleteState && !this._currentTickCompleteState.isAborted || this.initDelayedCursor()
              },
              insertNewlineStyleObject: function(e, t, n, r) {
                var i, o = {},
                  a = !1,
                  s = this._unwrappedTextLines[e].length === t;
                for (var l in n || (n = 1), this.shiftLineStyles(e, n), this.styles[e] && (i = this.styles[e][0 === t ? t : t - 1]), this.styles[e]) {
                  var c = parseInt(l, 10);
                  c >= t && (a = !0, o[c - t] = this.styles[e][l], s && 0 === t || delete this.styles[e][l])
                }
                var u = !1;
                for (a && !s && (this.styles[e + n] = o, u = !0), u && n--; n > 0;) r && r[n - 1] ? this.styles[e + n] = {
                  0: m(r[n - 1])
                } : i ? this.styles[e + n] = {
                  0: m(i)
                } : delete this.styles[e + n], n--;
                this._forceClearCache = !0
              },
              insertCharStyleObject: function(e, t, n, r) {
                this.styles || (this.styles = {});
                var i = this.styles[e],
                  o = i ? m(i) : {};
                for (var a in n || (n = 1), o) {
                  var s = parseInt(a, 10);
                  s >= t && (i[s + n] = o[s], o[s - n] || delete i[s])
                }
                if (this._forceClearCache = !0, r)
                  for (; n--;) Object.keys(r[n]).length && (this.styles[e] || (this.styles[e] = {}), this.styles[e][t + n] = m(r[n]));
                else if (i)
                  for (var l = i[t ? t - 1 : 1]; l && n--;) this.styles[e][t + n] = m(l)
              },
              insertNewStyleBlock: function(e, t, n) {
                for (var r = this.get2DCursorLocation(t, !0), i = [0], o = 0, a = 0; a < e.length; a++) "\n" === e[a] ? i[++o] = 0 : i[o]++;
                for (i[0] > 0 && (this.insertCharStyleObject(r.lineIndex, r.charIndex, i[0], n), n = n && n.slice(i[0] + 1)), o && this.insertNewlineStyleObject(r.lineIndex, r.charIndex + i[0], o), a = 1; a < o; a++) i[a] > 0 ? this
                  .insertCharStyleObject(r.lineIndex + a, 0, i[a], n) : n && this.styles[r.lineIndex + a] && n[0] && (this.styles[r.lineIndex + a][0] = n[0]), n = n && n.slice(i[a] + 1);
                i[a] > 0 && this.insertCharStyleObject(r.lineIndex + a, 0, i[a], n)
              },
              setSelectionStartEndWithShift: function(e, t, n) {
                n <= e ? (t === e ? this._selectionDirection = "left" : "right" === this._selectionDirection && (this._selectionDirection = "left", this.selectionEnd = e), this.selectionStart = n) : n > e && n < t ? "right" === this
                  ._selectionDirection ? this.selectionEnd = n : this.selectionStart = n : (t === e ? this._selectionDirection = "right" : "left" === this._selectionDirection && (this._selectionDirection = "right", this.selectionStart = t),
                    this.selectionEnd = n)
              },
              setSelectionInBoundaries: function() {
                var e = this.text.length;
                this.selectionStart > e ? this.selectionStart = e : this.selectionStart < 0 && (this.selectionStart = 0), this.selectionEnd > e ? this.selectionEnd = e : this.selectionEnd < 0 && (this.selectionEnd = 0)
              }
            }), v.util.object.extend(v.IText.prototype, {
              initDoubleClickSimulation: function() {
                this.__lastClickTime = +new Date, this.__lastLastClickTime = +new Date, this.__lastPointer = {}, this.on("mousedown", this.onMouseDown)
              },
              onMouseDown: function(e) {
                if (this.canvas) {
                  this.__newClickTime = +new Date;
                  var t = e.pointer;
                  this.isTripleClick(t) && (this.fire("tripleclick", e), this._stopEvent(e.e)), this.__lastLastClickTime = this.__lastClickTime, this.__lastClickTime = this.__newClickTime, this.__lastPointer = t, this.__lastIsEditing = this
                    .isEditing, this.__lastSelected = this.selected
                }
              },
              isTripleClick: function(e) {
                return this.__newClickTime - this.__lastClickTime < 500 && this.__lastClickTime - this.__lastLastClickTime < 500 && this.__lastPointer.x === e.x && this.__lastPointer.y === e.y
              },
              _stopEvent: function(e) {
                e.preventDefault && e.preventDefault(), e.stopPropagation && e.stopPropagation()
              },
              initCursorSelectionHandlers: function() {
                this.initMousedownHandler(), this.initMouseupHandler(), this.initClicks()
              },
              doubleClickHandler: function(e) {
                this.isEditing && this.selectWord(this.getSelectionStartFromPointer(e.e))
              },
              tripleClickHandler: function(e) {
                this.isEditing && this.selectLine(this.getSelectionStartFromPointer(e.e))
              },
              initClicks: function() {
                this.on("mousedblclick", this.doubleClickHandler), this.on("tripleclick", this.tripleClickHandler)
              },
              _mouseDownHandler: function(e) {
                !this.canvas || !this.editable || e.e.button && 1 !== e.e.button || (this.__isMousedown = !0, this.selected && (this.inCompositionMode = !1, this.setCursorByClick(e.e)), this.isEditing && (this.__selectionStartOnMouseDown =
                  this.selectionStart, this.selectionStart === this.selectionEnd && this.abortCursorAnimation(), this.renderCursorOrSelection()))
              },
              _mouseDownHandlerBefore: function(e) {
                !this.canvas || !this.editable || e.e.button && 1 !== e.e.button || (this.selected = this === this.canvas._activeObject)
              },
              initMousedownHandler: function() {
                this.on("mousedown", this._mouseDownHandler), this.on("mousedown:before", this._mouseDownHandlerBefore)
              },
              initMouseupHandler: function() {
                this.on("mouseup", this.mouseUpHandler)
              },
              mouseUpHandler: function(e) {
                if (this.__isMousedown = !1, !(!this.editable || this.group || e.transform && e.transform.actionPerformed || e.e.button && 1 !== e.e.button)) {
                  if (this.canvas) {
                    var t = this.canvas._activeObject;
                    if (t && t !== this) return
                  }
                  this.__lastSelected && !this.__corner ? (this.selected = !1, this.__lastSelected = !1, this.enterEditing(e.e), this.selectionStart === this.selectionEnd ? this.initDelayedCursor(!0) : this.renderCursorOrSelection()) : this
                    .selected = !0
                }
              },
              setCursorByClick: function(e) {
                var t = this.getSelectionStartFromPointer(e),
                  n = this.selectionStart,
                  r = this.selectionEnd;
                e.shiftKey ? this.setSelectionStartEndWithShift(n, r, t) : (this.selectionStart = t, this.selectionEnd = t), this.isEditing && (this._fireSelectionChanged(), this._updateTextarea())
              },
              getSelectionStartFromPointer: function(e) {
                for (var t, n = this.getLocalPointer(e), r = 0, i = 0, o = 0, a = 0, s = 0, l = 0, c = this._textLines.length; l < c && o <= n.y; l++) o += this.getHeightOfLine(l) * this.scaleY, s = l, l > 0 && (a += this._textLines[l - 1]
                  .length + this.missingNewlineOffset(l - 1));
                i = this._getLineLeftOffset(s) * this.scaleX, t = this._textLines[s], "rtl" === this.direction && (n.x = this.width * this.scaleX - n.x + i);
                for (var u = 0, h = t.length; u < h && (r = i, (i += this.__charBounds[s][u].kernedWidth * this.scaleX) <= n.x); u++) a++;
                return this._getNewSelectionStartFromOffset(n, r, i, a, h)
              },
              _getNewSelectionStartFromOffset: function(e, t, n, r, i) {
                var o = e.x - t,
                  a = n - e.x,
                  s = r + (a > o || a < 0 ? 0 : 1);
                return this.flipX && (s = i - s), s > this._text.length && (s = this._text.length), s
              }
            }), v.util.object.extend(v.IText.prototype, {
              initHiddenTextarea: function() {
                this.hiddenTextarea = v.document.createElement("textarea"), this.hiddenTextarea.setAttribute("autocapitalize", "off"), this.hiddenTextarea.setAttribute("autocorrect", "off"), this.hiddenTextarea.setAttribute("autocomplete",
                  "off"), this.hiddenTextarea.setAttribute("spellcheck", "false"), this.hiddenTextarea.setAttribute("data-fabric-hiddentextarea", ""), this.hiddenTextarea.setAttribute("wrap", "off");
                var e = this._calcTextareaPosition();
                this.hiddenTextarea.style.cssText = "position: absolute; top: " + e.top + "; left: " + e.left + "; z-index: -999; opacity: 0; width: 1px; height: 1px; font-size: 1px; padding-top: " + e.fontSize + ";", this
                  .hiddenTextareaContainer ? this.hiddenTextareaContainer.appendChild(this.hiddenTextarea) : v.document.body.appendChild(this.hiddenTextarea), v.util.addListener(this.hiddenTextarea, "keydown", this.onKeyDown.bind(this)), v
                  .util.addListener(this.hiddenTextarea, "keyup", this.onKeyUp.bind(this)), v.util.addListener(this.hiddenTextarea, "input", this.onInput.bind(this)), v.util.addListener(this.hiddenTextarea, "copy", this.copy.bind(this)), v
                  .util.addListener(this.hiddenTextarea, "cut", this.copy.bind(this)), v.util.addListener(this.hiddenTextarea, "paste", this.paste.bind(this)), v.util.addListener(this.hiddenTextarea, "compositionstart", this
                    .onCompositionStart.bind(this)), v.util.addListener(this.hiddenTextarea, "compositionupdate", this.onCompositionUpdate.bind(this)), v.util.addListener(this.hiddenTextarea, "compositionend", this.onCompositionEnd.bind(
                    this)), !this._clickHandlerInitialized && this.canvas && (v.util.addListener(this.canvas.upperCanvasEl, "click", this.onClick.bind(this)), this._clickHandlerInitialized = !0)
              },
              keysMap: {
                9: "exitEditing",
                27: "exitEditing",
                33: "moveCursorUp",
                34: "moveCursorDown",
                35: "moveCursorRight",
                36: "moveCursorLeft",
                37: "moveCursorLeft",
                38: "moveCursorUp",
                39: "moveCursorRight",
                40: "moveCursorDown"
              },
              keysMapRtl: {
                9: "exitEditing",
                27: "exitEditing",
                33: "moveCursorUp",
                34: "moveCursorDown",
                35: "moveCursorLeft",
                36: "moveCursorRight",
                37: "moveCursorRight",
                38: "moveCursorUp",
                39: "moveCursorLeft",
                40: "moveCursorDown"
              },
              ctrlKeysMapUp: {
                67: "copy",
                88: "cut"
              },
              ctrlKeysMapDown: {
                65: "selectAll"
              },
              onClick: function() {
                this.hiddenTextarea && this.hiddenTextarea.focus()
              },
              onKeyDown: function(e) {
                if (this.isEditing) {
                  var t = "rtl" === this.direction ? this.keysMapRtl : this.keysMap;
                  if (e.keyCode in t) this[t[e.keyCode]](e);
                  else {
                    if (!(e.keyCode in this.ctrlKeysMapDown) || !e.ctrlKey && !e.metaKey) return;
                    this[this.ctrlKeysMapDown[e.keyCode]](e)
                  }
                  e.stopImmediatePropagation(), e.preventDefault(), e.keyCode >= 33 && e.keyCode <= 40 ? (this.inCompositionMode = !1, this.clearContextTop(), this.renderCursorOrSelection()) : this.canvas && this.canvas.requestRenderAll()
                }
              },
              onKeyUp: function(e) {
                !this.isEditing || this._copyDone || this.inCompositionMode ? this._copyDone = !1 : e.keyCode in this.ctrlKeysMapUp && (e.ctrlKey || e.metaKey) && (this[this.ctrlKeysMapUp[e.keyCode]](e), e.stopImmediatePropagation(), e
                  .preventDefault(), this.canvas && this.canvas.requestRenderAll())
              },
              onInput: function(e) {
                var t = this.fromPaste;
                if (this.fromPaste = !1, e && e.stopPropagation(), this.isEditing) {
                  var n, r, i, o, a, s = this._splitTextIntoLines(this.hiddenTextarea.value).graphemeText,
                    l = this._text.length,
                    c = s.length,
                    u = c - l,
                    h = this.selectionStart,
                    p = this.selectionEnd,
                    d = h !== p;
                  if ("" === this.hiddenTextarea.value) return this.styles = {}, this.updateFromTextArea(), this.fire("changed"), void(this.canvas && (this.canvas.fire("text:changed", {
                    target: this
                  }), this.canvas.requestRenderAll()));
                  var f = this.fromStringToGraphemeSelection(this.hiddenTextarea.selectionStart, this.hiddenTextarea.selectionEnd, this.hiddenTextarea.value),
                    g = h > f.selectionStart;
                  d ? (n = this._text.slice(h, p), u += p - h) : c < l && (n = g ? this._text.slice(p + u, p) : this._text.slice(h, h - u)), r = s.slice(f.selectionEnd - u, f.selectionEnd), n && n.length && (r.length && (i = this
                    .getSelectionStyles(h, h + 1, !1), i = r.map((function() {
                      return i[0]
                    }))), d ? (o = h, a = p) : g ? (o = p - n.length, a = p) : (o = p, a = p + n.length), this.removeStyleFromTo(o, a)), r.length && (t && r.join("") === v.copiedText && !v.disableStyleCopyPaste && (i = v.copiedTextStyle),
                    this.insertNewStyleBlock(r, h, i)), this.updateFromTextArea(), this.fire("changed"), this.canvas && (this.canvas.fire("text:changed", {
                    target: this
                  }), this.canvas.requestRenderAll())
                }
              },
              onCompositionStart: function() {
                this.inCompositionMode = !0
              },
              onCompositionEnd: function() {
                this.inCompositionMode = !1
              },
              onCompositionUpdate: function(e) {
                this.compositionStart = e.target.selectionStart, this.compositionEnd = e.target.selectionEnd, this.updateTextareaPosition()
              },
              copy: function() {
                this.selectionStart !== this.selectionEnd && (v.copiedText = this.getSelectedText(), v.disableStyleCopyPaste ? v.copiedTextStyle = null : v.copiedTextStyle = this.getSelectionStyles(this.selectionStart, this.selectionEnd, !0),
                  this._copyDone = !0)
              },
              paste: function() {
                this.fromPaste = !0
              },
              _getClipboardData: function(e) {
                return e && e.clipboardData || v.window.clipboardData
              },
              _getWidthBeforeCursor: function(e, t) {
                var n, r = this._getLineLeftOffset(e);
                return t > 0 && (r += (n = this.__charBounds[e][t - 1]).left + n.width), r
              },
              getDownCursorOffset: function(e, t) {
                var n = this._getSelectionForOffset(e, t),
                  r = this.get2DCursorLocation(n),
                  i = r.lineIndex;
                if (i === this._textLines.length - 1 || e.metaKey || 34 === e.keyCode) return this._text.length - n;
                var o = r.charIndex,
                  a = this._getWidthBeforeCursor(i, o),
                  s = this._getIndexOnLine(i + 1, a);
                return this._textLines[i].slice(o).length + s + 1 + this.missingNewlineOffset(i)
              },
              _getSelectionForOffset: function(e, t) {
                return e.shiftKey && this.selectionStart !== this.selectionEnd && t ? this.selectionEnd : this.selectionStart
              },
              getUpCursorOffset: function(e, t) {
                var n = this._getSelectionForOffset(e, t),
                  r = this.get2DCursorLocation(n),
                  i = r.lineIndex;
                if (0 === i || e.metaKey || 33 === e.keyCode) return -n;
                var o = r.charIndex,
                  a = this._getWidthBeforeCursor(i, o),
                  s = this._getIndexOnLine(i - 1, a),
                  l = this._textLines[i].slice(0, o),
                  c = this.missingNewlineOffset(i - 1);
                return -this._textLines[i - 1].length + s - l.length + (1 - c)
              },
              _getIndexOnLine: function(e, t) {
                for (var n, r, i = this._textLines[e], o = this._getLineLeftOffset(e), a = 0, s = 0, l = i.length; s < l; s++)
                  if ((o += n = this.__charBounds[e][s].width) > t) {
                    r = !0;
                    var c = o - n,
                      u = o,
                      h = Math.abs(c - t);
                    a = Math.abs(u - t) < h ? s : s - 1;
                    break
                  } return r || (a = i.length - 1), a
              },
              moveCursorDown: function(e) {
                this.selectionStart >= this._text.length && this.selectionEnd >= this._text.length || this._moveCursorUpOrDown("Down", e)
              },
              moveCursorUp: function(e) {
                0 === this.selectionStart && 0 === this.selectionEnd || this._moveCursorUpOrDown("Up", e)
              },
              _moveCursorUpOrDown: function(e, t) {
                var n = this["get" + e + "CursorOffset"](t, "right" === this._selectionDirection);
                t.shiftKey ? this.moveCursorWithShift(n) : this.moveCursorWithoutShift(n), 0 !== n && (this.setSelectionInBoundaries(), this.abortCursorAnimation(), this._currentCursorOpacity = 1, this.initDelayedCursor(), this
                  ._fireSelectionChanged(), this._updateTextarea())
              },
              moveCursorWithShift: function(e) {
                var t = "left" === this._selectionDirection ? this.selectionStart + e : this.selectionEnd + e;
                return this.setSelectionStartEndWithShift(this.selectionStart, this.selectionEnd, t), 0 !== e
              },
              moveCursorWithoutShift: function(e) {
                return e < 0 ? (this.selectionStart += e, this.selectionEnd = this.selectionStart) : (this.selectionEnd += e, this.selectionStart = this.selectionEnd), 0 !== e
              },
              moveCursorLeft: function(e) {
                0 === this.selectionStart && 0 === this.selectionEnd || this._moveCursorLeftOrRight("Left", e)
              },
              _move: function(e, t, n) {
                var r;
                if (e.altKey) r = this["findWordBoundary" + n](this[t]);
                else {
                  if (!e.metaKey && 35 !== e.keyCode && 36 !== e.keyCode) return this[t] += "Left" === n ? -1 : 1, !0;
                  r = this["findLineBoundary" + n](this[t])
                }
                if (void 0 !== r && this[t] !== r) return this[t] = r, !0
              },
              _moveLeft: function(e, t) {
                return this._move(e, t, "Left")
              },
              _moveRight: function(e, t) {
                return this._move(e, t, "Right")
              },
              moveCursorLeftWithoutShift: function(e) {
                var t = !0;
                return this._selectionDirection = "left", this.selectionEnd === this.selectionStart && 0 !== this.selectionStart && (t = this._moveLeft(e, "selectionStart")), this.selectionEnd = this.selectionStart, t
              },
              moveCursorLeftWithShift: function(e) {
                return "right" === this._selectionDirection && this.selectionStart !== this.selectionEnd ? this._moveLeft(e, "selectionEnd") : 0 !== this.selectionStart ? (this._selectionDirection = "left", this._moveLeft(e,
                  "selectionStart")) : void 0
              },
              moveCursorRight: function(e) {
                this.selectionStart >= this._text.length && this.selectionEnd >= this._text.length || this._moveCursorLeftOrRight("Right", e)
              },
              _moveCursorLeftOrRight: function(e, t) {
                var n = "moveCursor" + e + "With";
                this._currentCursorOpacity = 1, t.shiftKey ? n += "Shift" : n += "outShift", this[n](t) && (this.abortCursorAnimation(), this.initDelayedCursor(), this._fireSelectionChanged(), this._updateTextarea())
              },
              moveCursorRightWithShift: function(e) {
                return "left" === this._selectionDirection && this.selectionStart !== this.selectionEnd ? this._moveRight(e, "selectionStart") : this.selectionEnd !== this._text.length ? (this._selectionDirection = "right", this._moveRight(e,
                  "selectionEnd")) : void 0
              },
              moveCursorRightWithoutShift: function(e) {
                var t = !0;
                return this._selectionDirection = "right", this.selectionStart === this.selectionEnd ? (t = this._moveRight(e, "selectionStart"), this.selectionEnd = this.selectionStart) : this.selectionStart = this.selectionEnd, t
              },
              removeChars: function(e, t) {
                void 0 === t && (t = e + 1), this.removeStyleFromTo(e, t), this._text.splice(e, t - e), this.text = this._text.join(""), this.set("dirty", !0), this._shouldClearDimensionCache() && (this.initDimensions(), this.setCoords()),
                  this._removeExtraneousStyles()
              },
              insertChars: function(e, t, n, r) {
                void 0 === r && (r = n), r > n && this.removeStyleFromTo(n, r);
                var i = v.util.string.graphemeSplit(e);
                this.insertNewStyleBlock(i, n, t), this._text = [].concat(this._text.slice(0, n), i, this._text.slice(r)), this.text = this._text.join(""), this.set("dirty", !0), this._shouldClearDimensionCache() && (this.initDimensions(),
                  this.setCoords()), this._removeExtraneousStyles()
              }
            }),
            function() {
              var e = v.util.toFixed,
                t = /  +/g;
              v.util.object.extend(v.Text.prototype, {
                _toSVG: function() {
                  var e = this._getSVGLeftTopOffsets(),
                    t = this._getSVGTextAndBg(e.textTop, e.textLeft);
                  return this._wrapSVGTextAndBg(t)
                },
                toSVG: function(e) {
                  return this._createBaseSVGMarkup(this._toSVG(), {
                    reviver: e,
                    noStyle: !0,
                    withShadow: !0
                  })
                },
                _getSVGLeftTopOffsets: function() {
                  return {
                    textLeft: -this.width / 2,
                    textTop: -this.height / 2,
                    lineTop: this.getHeightOfLine(0)
                  }
                },
                _wrapSVGTextAndBg: function(e) {
                  var t = this.getSvgTextDecoration(this);
                  return [e.textBgRects.join(""), '\t\t<text xml:space="preserve" ', this.fontFamily ? 'font-family="' + this.fontFamily.replace(/"/g, "'") + '" ' : "", this.fontSize ? 'font-size="' + this.fontSize + '" ' : "", this
                    .fontStyle ? 'font-style="' + this.fontStyle + '" ' : "", this.fontWeight ? 'font-weight="' + this.fontWeight + '" ' : "", t ? 'text-decoration="' + t + '" ' : "", 'style="', this.getSvgStyles(!0), '"', this
                    .addPaintOrder(), " >", e.textSpans.join(""), "</text>\n"
                  ]
                },
                _getSVGTextAndBg: function(e, t) {
                  var n, r = [],
                    i = [],
                    o = e;
                  this._setSVGBg(i);
                  for (var a = 0, s = this._textLines.length; a < s; a++) n = this._getLineLeftOffset(a), (this.textBackgroundColor || this.styleHas("textBackgroundColor", a)) && this._setSVGTextLineBg(i, a, t + n, o), this
                    ._setSVGTextLineText(r, a, t + n, o), o += this.getHeightOfLine(a);
                  return {
                    textSpans: r,
                    textBgRects: i
                  }
                },
                _createTextCharSpan: function(n, r, i, o) {
                  var a = n !== n.trim() || n.match(t),
                    s = this.getSvgSpanStyles(r, a),
                    l = s ? 'style="' + s + '"' : "",
                    c = r.deltaY,
                    u = "",
                    h = v.Object.NUM_FRACTION_DIGITS;
                  return c && (u = ' dy="' + e(c, h) + '" '), ['<tspan x="', e(i, h), '" y="', e(o, h), '" ', u, l, ">", v.util.string.escapeXml(n), "</tspan>"].join("")
                },
                _setSVGTextLineText: function(e, t, n, r) {
                  var i, o, a, s, l, c = this.getHeightOfLine(t),
                    u = -1 !== this.textAlign.indexOf("justify"),
                    h = "",
                    p = 0,
                    d = this._textLines[t];
                  r += c * (1 - this._fontSizeFraction) / this.lineHeight;
                  for (var f = 0, g = d.length - 1; f <= g; f++) l = f === g || this.charSpacing, h += d[f], a = this.__charBounds[t][f], 0 === p ? (n += a.kernedWidth - a.width, p += a.width) : p += a.kernedWidth, u && !l && this
                    ._reSpaceAndTab.test(d[f]) && (l = !0), l || (i = i || this.getCompleteStyleDeclaration(t, f), o = this.getCompleteStyleDeclaration(t, f + 1), l = v.util.hasStyleChanged(i, o, !0)), l && (s = this._getStyleDeclaration(t,
                      f) || {}, e.push(this._createTextCharSpan(h, s, n, r)), h = "", i = o, n += p, p = 0)
                },
                _pushTextBgRect: function(t, n, r, i, o, a) {
                  var s = v.Object.NUM_FRACTION_DIGITS;
                  t.push("\t\t<rect ", this._getFillAttributes(n), ' x="', e(r, s), '" y="', e(i, s), '" width="', e(o, s), '" height="', e(a, s), '"></rect>\n')
                },
                _setSVGTextLineBg: function(e, t, n, r) {
                  for (var i, o, a = this._textLines[t], s = this.getHeightOfLine(t) / this.lineHeight, l = 0, c = 0, u = this.getValueOfPropertyAt(t, 0, "textBackgroundColor"), h = 0, p = a.length; h < p; h++) i = this.__charBounds[t][h],
                    (o = this.getValueOfPropertyAt(t, h, "textBackgroundColor")) !== u ? (u && this._pushTextBgRect(e, u, n + c, r, l, s), c = i.left, l = i.width, u = o) : l += i.kernedWidth;
                  o && this._pushTextBgRect(e, o, n + c, r, l, s)
                },
                _getFillAttributes: function(e) {
                  var t = e && "string" == typeof e ? new v.Color(e) : "";
                  return t && t.getSource() && 1 !== t.getAlpha() ? 'opacity="' + t.getAlpha() + '" fill="' + t.setAlpha(1).toRgb() + '"' : 'fill="' + e + '"'
                },
                _getSVGLineTopOffset: function(e) {
                  for (var t, n = 0, r = 0; r < e; r++) n += this.getHeightOfLine(r);
                  return t = this.getHeightOfLine(r), {
                    lineTop: n,
                    offset: (this._fontSizeMult - this._fontSizeFraction) * t / (this.lineHeight * this._fontSizeMult)
                  }
                },
                getSvgStyles: function(e) {
                  return v.Object.prototype.getSvgStyles.call(this, e) + " white-space: pre;"
                }
              })
            }(),
            function(e) {
              var t = e.fabric || (e.fabric = {});
              t.Textbox = t.util.createClass(t.IText, t.Observable, {
                type: "textbox",
                minWidth: 20,
                dynamicMinWidth: 2,
                __cachedLines: null,
                lockScalingFlip: !0,
                noScaleCache: !1,
                _dimensionAffectingProps: t.Text.prototype._dimensionAffectingProps.concat("width"),
                _wordJoiners: /[ \t\r]/,
                splitByGrapheme: !1,
                initDimensions: function() {
                  this.__skipDimension || (this.isEditing && this.initDelayedCursor(), this.clearContextTop(), this._clearCache(), this.dynamicMinWidth = 0, this._styleMap = this._generateStyleMap(this._splitText()), this.dynamicMinWidth >
                    this.width && this._set("width", this.dynamicMinWidth), -1 !== this.textAlign.indexOf("justify") && this.enlargeSpaces(), this.height = this.calcTextHeight(), this.saveState({
                      propertySet: "_dimensionAffectingProps"
                    }))
                },
                _generateStyleMap: function(e) {
                  for (var t = 0, n = 0, r = 0, i = {}, o = 0; o < e.graphemeLines.length; o++) "\n" === e.graphemeText[r] && o > 0 ? (n = 0, r++, t++) : !this.splitByGrapheme && this._reSpaceAndTab.test(e.graphemeText[r]) && o > 0 && (n++,
                    r++), i[o] = {
                    line: t,
                    offset: n
                  }, r += e.graphemeLines[o].length, n += e.graphemeLines[o].length;
                  return i
                },
                styleHas: function(e, n) {
                  if (this._styleMap && !this.isWrapping) {
                    var r = this._styleMap[n];
                    r && (n = r.line)
                  }
                  return t.Text.prototype.styleHas.call(this, e, n)
                },
                isEmptyStyles: function(e) {
                  if (!this.styles) return !0;
                  var t, n, r = 0,
                    i = !1,
                    o = this._styleMap[e],
                    a = this._styleMap[e + 1];
                  for (var s in o && (e = o.line, r = o.offset), a && (i = a.line === e, t = a.offset), n = void 0 === e ? this.styles : {
                      line: this.styles[e]
                    })
                    for (var l in n[s])
                      if (l >= r && (!i || l < t))
                        for (var c in n[s][l]) return !1;
                  return !0
                },
                _getStyleDeclaration: function(e, t) {
                  if (this._styleMap && !this.isWrapping) {
                    var n = this._styleMap[e];
                    if (!n) return null;
                    e = n.line, t = n.offset + t
                  }
                  return this.callSuper("_getStyleDeclaration", e, t)
                },
                _setStyleDeclaration: function(e, t, n) {
                  var r = this._styleMap[e];
                  e = r.line, t = r.offset + t, this.styles[e][t] = n
                },
                _deleteStyleDeclaration: function(e, t) {
                  var n = this._styleMap[e];
                  e = n.line, t = n.offset + t, delete this.styles[e][t]
                },
                _getLineStyle: function(e) {
                  var t = this._styleMap[e];
                  return !!this.styles[t.line]
                },
                _setLineStyle: function(e) {
                  var t = this._styleMap[e];
                  this.styles[t.line] = {}
                },
                _wrapText: function(e, t) {
                  var n, r = [];
                  for (this.isWrapping = !0, n = 0; n < e.length; n++) r = r.concat(this._wrapLine(e[n], n, t));
                  return this.isWrapping = !1, r
                },
                _measureWord: function(e, t, n) {
                  var r, i = 0;
                  n = n || 0;
                  for (var o = 0, a = e.length; o < a; o++) {
                    i += this._getGraphemeBox(e[o], t, o + n, r, true).kernedWidth, r = e[o]
                  }
                  return i
                },
                _wrapLine: function(e, n, r, i) {
                  var o = 0,
                    a = this.splitByGrapheme,
                    s = [],
                    l = [],
                    c = a ? t.util.string.graphemeSplit(e) : e.split(this._wordJoiners),
                    u = "",
                    h = 0,
                    p = a ? "" : " ",
                    d = 0,
                    f = 0,
                    g = 0,
                    m = !0,
                    v = this._getWidthOfCharSpacing();
                  i = i || 0;
                  0 === c.length && c.push([]), r -= i;
                  for (var _ = 0; _ < c.length; _++) u = a ? c[_] : t.util.string.graphemeSplit(c[_]), d = this._measureWord(u, n, h), h += u.length, (o += f + d - v) > r && !m ? (s.push(l), l = [], o = d, m = !0) : o += v, m || a || l
                    .push(p), l = l.concat(u), f = a ? 0 : this._measureWord([p], n, h), h++, m = !1, d > g && (g = d);
                  return _ && s.push(l), g + i > this.dynamicMinWidth && (this.dynamicMinWidth = g - v + i), s
                },
                isEndOfWrapping: function(e) {
                  return !this._styleMap[e + 1] || this._styleMap[e + 1].line !== this._styleMap[e].line
                },
                missingNewlineOffset: function(e) {
                  return this.splitByGrapheme ? this.isEndOfWrapping(e) ? 1 : 0 : 1
                },
                _splitTextIntoLines: function(e) {
                  for (var n = t.Text.prototype._splitTextIntoLines.call(this, e), r = this._wrapText(n.lines, this.width), i = new Array(r.length), o = 0; o < r.length; o++) i[o] = r[o].join("");
                  return n.lines = i, n.graphemeLines = r, n
                },
                getMinWidth: function() {
                  return Math.max(this.minWidth, this.dynamicMinWidth)
                },
                _removeExtraneousStyles: function() {
                  var e = {};
                  for (var t in this._styleMap) this._textLines[t] && (e[this._styleMap[t].line] = 1);
                  for (var t in this.styles) e[t] || delete this.styles[t]
                },
                toObject: function(e) {
                  return this.callSuper("toObject", ["minWidth", "splitByGrapheme"].concat(e))
                }
              }), t.Textbox.fromObject = function(e, n) {
                var r = t.util.stylesFromArray(e.styles, e.text),
                  i = Object.assign({}, e, {
                    styles: r
                  });
                return t.Object._fromObject("Textbox", i, n, "text")
              }
            }(e),
            function() {
              var e = v.controlsUtils,
                t = e.scaleSkewCursorStyleHandler,
                n = e.scaleCursorStyleHandler,
                r = e.scalingEqually,
                i = e.scalingYOrSkewingX,
                o = e.scalingXOrSkewingY,
                a = e.scaleOrSkewActionName,
                s = v.Object.prototype.controls;
              if (s.ml = new v.Control({
                  x: -.5,
                  y: 0,
                  cursorStyleHandler: t,
                  actionHandler: o,
                  getActionName: a
                }), s.mr = new v.Control({
                  x: .5,
                  y: 0,
                  cursorStyleHandler: t,
                  actionHandler: o,
                  getActionName: a
                }), s.mb = new v.Control({
                  x: 0,
                  y: .5,
                  cursorStyleHandler: t,
                  actionHandler: i,
                  getActionName: a
                }), s.mt = new v.Control({
                  x: 0,
                  y: -.5,
                  cursorStyleHandler: t,
                  actionHandler: i,
                  getActionName: a
                }), s.tl = new v.Control({
                  x: -.5,
                  y: -.5,
                  cursorStyleHandler: n,
                  actionHandler: r
                }), s.tr = new v.Control({
                  x: .5,
                  y: -.5,
                  cursorStyleHandler: n,
                  actionHandler: r
                }), s.bl = new v.Control({
                  x: -.5,
                  y: .5,
                  cursorStyleHandler: n,
                  actionHandler: r
                }), s.br = new v.Control({
                  x: .5,
                  y: .5,
                  cursorStyleHandler: n,
                  actionHandler: r
                }), s.mtr = new v.Control({
                  x: 0,
                  y: -.5,
                  actionHandler: e.rotationWithSnapping,
                  cursorStyleHandler: e.rotationStyleHandler,
                  offsetY: -40,
                  withConnection: !0,
                  actionName: "rotate"
                }), v.Textbox) {
                var l = v.Textbox.prototype.controls = {};
                l.mtr = s.mtr, l.tr = s.tr, l.br = s.br, l.tl = s.tl, l.bl = s.bl, l.mt = s.mt, l.mb = s.mb, l.mr = new v.Control({
                  x: .5,
                  y: 0,
                  actionHandler: e.changeWidth,
                  cursorStyleHandler: t,
                  actionName: "resizing"
                }), l.ml = new v.Control({
                  x: -.5,
                  y: 0,
                  actionHandler: e.changeWidth,
                  cursorStyleHandler: t,
                  actionName: "resizing"
                })
              }
            }()
        }(_v);
        var bv = {
          exports: {}
        };
        ! function(e, t) {
          (function() {
            var n, r = "Expected a function",
              i = "__lodash_hash_undefined__",
              o = "__lodash_placeholder__",
              a = 16,
              s = 32,
              l = 64,
              c = 128,
              u = 256,
              h = 1 / 0,
              p = 9007199254740991,
              d = NaN,
              f = 4294967295,
              g = [
                ["ary", c],
                ["bind", 1],
                ["bindKey", 2],
                ["curry", 8],
                ["curryRight", a],
                ["flip", 512],
                ["partial", s],
                ["partialRight", l],
                ["rearg", u]
              ],
              m = "[object Arguments]",
              v = "[object Array]",
              _ = "[object Boolean]",
              b = "[object Date]",
              y = "[object Error]",
              w = "[object Function]",
              x = "[object GeneratorFunction]",
              k = "[object Map]",
              C = "[object Number]",
              S = "[object Object]",
              E = "[object Promise]",
              T = "[object RegExp]",
              O = "[object Set]",
              A = "[object String]",
              P = "[object Symbol]",
              M = "[object WeakMap]",
              D = "[object ArrayBuffer]",
              I = "[object DataView]",
              R = "[object Float32Array]",
              j = "[object Float64Array]",
              N = "[object Int8Array]",
              L = "[object Int16Array]",
              F = "[object Int32Array]",
              B = "[object Uint8Array]",
              z = "[object Uint8ClampedArray]",
              H = "[object Uint16Array]",
              U = "[object Uint32Array]",
              W = /\b__p \+= '';/g,
              V = /\b(__p \+=) '' \+/g,
              X = /(__e\(.*?\)|\b__t\)) \+\n'';/g,
              G = /&(?:amp|lt|gt|quot|#39);/g,
              Y = /[&<>"']/g,
              q = RegExp(G.source),
              K = RegExp(Y.source),
              Z = /<%-([\s\S]+?)%>/g,
              $ = /<%([\s\S]+?)%>/g,
              J = /<%=([\s\S]+?)%>/g,
              Q = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,
              ee = /^\w*$/,
              te = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,
              ne = /[\\^$.*+?()[\]{}|]/g,
              re = RegExp(ne.source),
              ie = /^\s+/,
              oe = /\s/,
              ae = /\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,
              se = /\{\n\/\* \[wrapped with (.+)\] \*/,
              le = /,? & /,
              ce = /[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g,
              ue = /[()=,{}\[\]\/\s]/,
              he = /\\(\\)?/g,
              pe = /\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,
              de = /\w*$/,
              fe = /^[-+]0x[0-9a-f]+$/i,
              ge = /^0b[01]+$/i,
              me = /^\[object .+?Constructor\]$/,
              ve = /^0o[0-7]+$/i,
              _e = /^(?:0|[1-9]\d*)$/,
              be = /[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,
              ye = /($^)/,
              we = /['\n\r\u2028\u2029\\]/g,
              xe = "\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff",
              ke = "\\u2700-\\u27bf",
              Ce = "a-z\\xdf-\\xf6\\xf8-\\xff",
              Se = "A-Z\\xc0-\\xd6\\xd8-\\xde",
              Ee = "\\ufe0e\\ufe0f",
              Te =
              "\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",
              Oe = "['’]",
              Ae = "[\\ud800-\\udfff]",
              Pe = "[" + Te + "]",
              Me = "[" + xe + "]",
              De = "\\d+",
              Ie = "[\\u2700-\\u27bf]",
              Re = "[" + Ce + "]",
              je = "[^\\ud800-\\udfff" + Te + De + ke + Ce + Se + "]",
              Ne = "\\ud83c[\\udffb-\\udfff]",
              Le = "[^\\ud800-\\udfff]",
              Fe = "(?:\\ud83c[\\udde6-\\uddff]){2}",
              Be = "[\\ud800-\\udbff][\\udc00-\\udfff]",
              ze = "[" + Se + "]",
              He = "(?:" + Re + "|" + je + ")",
              Ue = "(?:" + ze + "|" + je + ")",
              We = "(?:['’](?:d|ll|m|re|s|t|ve))?",
              Ve = "(?:['’](?:D|LL|M|RE|S|T|VE))?",
              Xe = "(?:" + Me + "|" + Ne + ")" + "?",
              Ge = "[\\ufe0e\\ufe0f]?",
              Ye = Ge + Xe + ("(?:\\u200d(?:" + [Le, Fe, Be].join("|") + ")" + Ge + Xe + ")*"),
              qe = "(?:" + [Ie, Fe, Be].join("|") + ")" + Ye,
              Ke = "(?:" + [Le + Me + "?", Me, Fe, Be, Ae].join("|") + ")",
              Ze = RegExp(Oe, "g"),
              $e = RegExp(Me, "g"),
              Je = RegExp(Ne + "(?=" + Ne + ")|" + Ke + Ye, "g"),
              Qe = RegExp([ze + "?" + Re + "+" + We + "(?=" + [Pe, ze, "$"].join("|") + ")", Ue + "+" + Ve + "(?=" + [Pe, ze + He, "$"].join("|") + ")", ze + "?" + He + "+" + We, ze + "+" + Ve,
                "\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])", "\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])", De, qe
              ].join("|"), "g"),
              et = RegExp("[\\u200d\\ud800-\\udfff" + xe + Ee + "]"),
              tt = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,
              nt = ["Array", "Buffer", "DataView", "Date", "Error", "Float32Array", "Float64Array", "Function", "Int8Array", "Int16Array", "Int32Array", "Map", "Math", "Object", "Promise", "RegExp", "Set", "String", "Symbol", "TypeError",
                "Uint8Array", "Uint8ClampedArray", "Uint16Array", "Uint32Array", "WeakMap", "_", "clearTimeout", "isFinite", "parseInt", "setTimeout"
              ],
              rt = -1,
              it = {};
            it[R] = it[j] = it[N] = it[L] = it[F] = it[B] = it[z] = it[H] = it[U] = !0, it[m] = it[v] = it[D] = it[_] = it[I] = it[b] = it[y] = it[w] = it[k] = it[C] = it[S] = it[T] = it[O] = it[A] = it[M] = !1;
            var ot = {};
            ot[m] = ot[v] = ot[D] = ot[I] = ot[_] = ot[b] = ot[R] = ot[j] = ot[N] = ot[L] = ot[F] = ot[k] = ot[C] = ot[S] = ot[T] = ot[O] = ot[A] = ot[P] = ot[B] = ot[z] = ot[H] = ot[U] = !0, ot[y] = ot[w] = ot[M] = !1;
            var at = {
                "\\": "\\",
                "'": "'",
                "\n": "n",
                "\r": "r",
                "\u2028": "u2028",
                "\u2029": "u2029"
              },
              st = parseFloat,
              lt = parseInt,
              ct = "object" == typeof en && en && en.Object === Object && en,
              ut = "object" == typeof self && self && self.Object === Object && self,
              ht = ct || ut || Function("return this")(),
              pt = t && !t.nodeType && t,
              dt = pt && e && !e.nodeType && e,
              ft = dt && dt.exports === pt,
              gt = ft && ct.process,
              mt = function() {
                try {
                  var e = dt && dt.require && dt.require("util").types;
                  return e || gt && gt.binding && gt.binding("util")
                } catch (e) {}
              }(),
              vt = mt && mt.isArrayBuffer,
              _t = mt && mt.isDate,
              bt = mt && mt.isMap,
              yt = mt && mt.isRegExp,
              wt = mt && mt.isSet,
              xt = mt && mt.isTypedArray;

            function kt(e, t, n) {
              switch (n.length) {
                case 0:
                  return e.call(t);
                case 1:
                  return e.call(t, n[0]);
                case 2:
                  return e.call(t, n[0], n[1]);
                case 3:
                  return e.call(t, n[0], n[1], n[2])
              }
              return e.apply(t, n)
            }

            function Ct(e, t, n, r) {
              for (var i = -1, o = null == e ? 0 : e.length; ++i < o;) {
                var a = e[i];
                t(r, a, n(a), e)
              }
              return r
            }

            function St(e, t) {
              for (var n = -1, r = null == e ? 0 : e.length; ++n < r && !1 !== t(e[n], n, e););
              return e
            }

            function Et(e, t) {
              for (var n = null == e ? 0 : e.length; n-- && !1 !== t(e[n], n, e););
              return e
            }

            function Tt(e, t) {
              for (var n = -1, r = null == e ? 0 : e.length; ++n < r;)
                if (!t(e[n], n, e)) return !1;
              return !0
            }

            function Ot(e, t) {
              for (var n = -1, r = null == e ? 0 : e.length, i = 0, o = []; ++n < r;) {
                var a = e[n];
                t(a, n, e) && (o[i++] = a)
              }
              return o
            }

            function At(e, t) {
              return !!(null == e ? 0 : e.length) && Bt(e, t, 0) > -1
            }

            function Pt(e, t, n) {
              for (var r = -1, i = null == e ? 0 : e.length; ++r < i;)
                if (n(t, e[r])) return !0;
              return !1
            }

            function Mt(e, t) {
              for (var n = -1, r = null == e ? 0 : e.length, i = Array(r); ++n < r;) i[n] = t(e[n], n, e);
              return i
            }

            function Dt(e, t) {
              for (var n = -1, r = t.length, i = e.length; ++n < r;) e[i + n] = t[n];
              return e
            }

            function It(e, t, n, r) {
              var i = -1,
                o = null == e ? 0 : e.length;
              for (r && o && (n = e[++i]); ++i < o;) n = t(n, e[i], i, e);
              return n
            }

            function Rt(e, t, n, r) {
              var i = null == e ? 0 : e.length;
              for (r && i && (n = e[--i]); i--;) n = t(n, e[i], i, e);
              return n
            }

            function jt(e, t) {
              for (var n = -1, r = null == e ? 0 : e.length; ++n < r;)
                if (t(e[n], n, e)) return !0;
              return !1
            }
            var Nt = Wt("length");

            function Lt(e, t, n) {
              var r;
              return n(e, (function(e, n, i) {
                if (t(e, n, i)) return r = n, !1
              })), r
            }

            function Ft(e, t, n, r) {
              for (var i = e.length, o = n + (r ? 1 : -1); r ? o-- : ++o < i;)
                if (t(e[o], o, e)) return o;
              return -1
            }

            function Bt(e, t, n) {
              return t == t ? function(e, t, n) {
                var r = n - 1,
                  i = e.length;
                for (; ++r < i;)
                  if (e[r] === t) return r;
                return -1
              }(e, t, n) : Ft(e, Ht, n)
            }

            function zt(e, t, n, r) {
              for (var i = n - 1, o = e.length; ++i < o;)
                if (r(e[i], t)) return i;
              return -1
            }

            function Ht(e) {
              return e != e
            }

            function Ut(e, t) {
              var n = null == e ? 0 : e.length;
              return n ? Gt(e, t) / n : d
            }

            function Wt(e) {
              return function(t) {
                return null == t ? n : t[e]
              }
            }

            function Vt(e) {
              return function(t) {
                return null == e ? n : e[t]
              }
            }

            function Xt(e, t, n, r, i) {
              return i(e, (function(e, i, o) {
                n = r ? (r = !1, e) : t(n, e, i, o)
              })), n
            }

            function Gt(e, t) {
              for (var r, i = -1, o = e.length; ++i < o;) {
                var a = t(e[i]);
                a !== n && (r = r === n ? a : r + a)
              }
              return r
            }

            function Yt(e, t) {
              for (var n = -1, r = Array(e); ++n < e;) r[n] = t(n);
              return r
            }

            function qt(e) {
              return e ? e.slice(0, fn(e) + 1).replace(ie, "") : e
            }

            function Kt(e) {
              return function(t) {
                return e(t)
              }
            }

            function Zt(e, t) {
              return Mt(t, (function(t) {
                return e[t]
              }))
            }

            function $t(e, t) {
              return e.has(t)
            }

            function Jt(e, t) {
              for (var n = -1, r = e.length; ++n < r && Bt(t, e[n], 0) > -1;);
              return n
            }

            function Qt(e, t) {
              for (var n = e.length; n-- && Bt(t, e[n], 0) > -1;);
              return n
            }

            function tn(e, t) {
              for (var n = e.length, r = 0; n--;) e[n] === t && ++r;
              return r
            }
            var nn = Vt({
                "À": "A",
                "Á": "A",
                "Â": "A",
                "Ã": "A",
                "Ä": "A",
                "Å": "A",
                "à": "a",
                "á": "a",
                "â": "a",
                "ã": "a",
                "ä": "a",
                "å": "a",
                "Ç": "C",
                "ç": "c",
                "Ð": "D",
                "ð": "d",
                "È": "E",
                "É": "E",
                "Ê": "E",
                "Ë": "E",
                "è": "e",
                "é": "e",
                "ê": "e",
                "ë": "e",
                "Ì": "I",
                "Í": "I",
                "Î": "I",
                "Ï": "I",
                "ì": "i",
                "í": "i",
                "î": "i",
                "ï": "i",
                "Ñ": "N",
                "ñ": "n",
                "Ò": "O",
                "Ó": "O",
                "Ô": "O",
                "Õ": "O",
                "Ö": "O",
                "Ø": "O",
                "ò": "o",
                "ó": "o",
                "ô": "o",
                "õ": "o",
                "ö": "o",
                "ø": "o",
                "Ù": "U",
                "Ú": "U",
                "Û": "U",
                "Ü": "U",
                "ù": "u",
                "ú": "u",
                "û": "u",
                "ü": "u",
                "Ý": "Y",
                "ý": "y",
                "ÿ": "y",
                "Æ": "Ae",
                "æ": "ae",
                "Þ": "Th",
                "þ": "th",
                "ß": "ss",
                "Ā": "A",
                "Ă": "A",
                "Ą": "A",
                "ā": "a",
                "ă": "a",
                "ą": "a",
                "Ć": "C",
                "Ĉ": "C",
                "Ċ": "C",
                "Č": "C",
                "ć": "c",
                "ĉ": "c",
                "ċ": "c",
                "č": "c",
                "Ď": "D",
                "Đ": "D",
                "ď": "d",
                "đ": "d",
                "Ē": "E",
                "Ĕ": "E",
                "Ė": "E",
                "Ę": "E",
                "Ě": "E",
                "ē": "e",
                "ĕ": "e",
                "ė": "e",
                "ę": "e",
                "ě": "e",
                "Ĝ": "G",
                "Ğ": "G",
                "Ġ": "G",
                "Ģ": "G",
                "ĝ": "g",
                "ğ": "g",
                "ġ": "g",
                "ģ": "g",
                "Ĥ": "H",
                "Ħ": "H",
                "ĥ": "h",
                "ħ": "h",
                "Ĩ": "I",
                "Ī": "I",
                "Ĭ": "I",
                "Į": "I",
                "İ": "I",
                "ĩ": "i",
                "ī": "i",
                "ĭ": "i",
                "į": "i",
                "ı": "i",
                "Ĵ": "J",
                "ĵ": "j",
                "Ķ": "K",
                "ķ": "k",
                "ĸ": "k",
                "Ĺ": "L",
                "Ļ": "L",
                "Ľ": "L",
                "Ŀ": "L",
                "Ł": "L",
                "ĺ": "l",
                "ļ": "l",
                "ľ": "l",
                "ŀ": "l",
                "ł": "l",
                "Ń": "N",
                "Ņ": "N",
                "Ň": "N",
                "Ŋ": "N",
                "ń": "n",
                "ņ": "n",
                "ň": "n",
                "ŋ": "n",
                "Ō": "O",
                "Ŏ": "O",
                "Ő": "O",
                "ō": "o",
                "ŏ": "o",
                "ő": "o",
                "Ŕ": "R",
                "Ŗ": "R",
                "Ř": "R",
                "ŕ": "r",
                "ŗ": "r",
                "ř": "r",
                "Ś": "S",
                "Ŝ": "S",
                "Ş": "S",
                "Š": "S",
                "ś": "s",
                "ŝ": "s",
                "ş": "s",
                "š": "s",
                "Ţ": "T",
                "Ť": "T",
                "Ŧ": "T",
                "ţ": "t",
                "ť": "t",
                "ŧ": "t",
                "Ũ": "U",
                "Ū": "U",
                "Ŭ": "U",
                "Ů": "U",
                "Ű": "U",
                "Ų": "U",
                "ũ": "u",
                "ū": "u",
                "ŭ": "u",
                "ů": "u",
                "ű": "u",
                "ų": "u",
                "Ŵ": "W",
                "ŵ": "w",
                "Ŷ": "Y",
                "ŷ": "y",
                "Ÿ": "Y",
                "Ź": "Z",
                "Ż": "Z",
                "Ž": "Z",
                "ź": "z",
                "ż": "z",
                "ž": "z",
                "IJ": "IJ",
                "ij": "ij",
                "Œ": "Oe",
                "œ": "oe",
                "ʼn": "'n",
                "ſ": "s"
              }),
              rn = Vt({
                "&": "&amp;",
                "<": "&lt;",
                ">": "&gt;",
                '"': "&quot;",
                "'": "&#39;"
              });

            function on(e) {
              return "\\" + at[e]
            }

            function an(e) {
              return et.test(e)
            }

            function sn(e) {
              var t = -1,
                n = Array(e.size);
              return e.forEach((function(e, r) {
                n[++t] = [r, e]
              })), n
            }

            function ln(e, t) {
              return function(n) {
                return e(t(n))
              }
            }

            function cn(e, t) {
              for (var n = -1, r = e.length, i = 0, a = []; ++n < r;) {
                var s = e[n];
                s !== t && s !== o || (e[n] = o, a[i++] = n)
              }
              return a
            }

            function un(e) {
              var t = -1,
                n = Array(e.size);
              return e.forEach((function(e) {
                n[++t] = e
              })), n
            }

            function hn(e) {
              var t = -1,
                n = Array(e.size);
              return e.forEach((function(e) {
                n[++t] = [e, e]
              })), n
            }

            function pn(e) {
              return an(e) ? function(e) {
                var t = Je.lastIndex = 0;
                for (; Je.test(e);) ++t;
                return t
              }(e) : Nt(e)
            }

            function dn(e) {
              return an(e) ? function(e) {
                return e.match(Je) || []
              }(e) : function(e) {
                return e.split("")
              }(e)
            }

            function fn(e) {
              for (var t = e.length; t-- && oe.test(e.charAt(t)););
              return t
            }
            var gn = Vt({
              "&amp;": "&",
              "&lt;": "<",
              "&gt;": ">",
              "&quot;": '"',
              "&#39;": "'"
            });
            var mn = function e(t) {
              var oe = (t = null == t ? ht : mn.defaults(ht.Object(), t, mn.pick(ht, nt))).Array,
                xe = t.Date,
                ke = t.Error,
                Ce = t.Function,
                Se = t.Math,
                Ee = t.Object,
                Te = t.RegExp,
                Oe = t.String,
                Ae = t.TypeError,
                Pe = oe.prototype,
                Me = Ce.prototype,
                De = Ee.prototype,
                Ie = t["__core-js_shared__"],
                Re = Me.toString,
                je = De.hasOwnProperty,
                Ne = 0,
                Le = function() {
                  var e = /[^.]+$/.exec(Ie && Ie.keys && Ie.keys.IE_PROTO || "");
                  return e ? "Symbol(src)_1." + e : ""
                }(),
                Fe = De.toString,
                Be = Re.call(Ee),
                ze = ht._,
                He = Te("^" + Re.call(je).replace(ne, "\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, "$1.*?") + "$"),
                Ue = ft ? t.Buffer : n,
                We = t.Symbol,
                Ve = t.Uint8Array,
                Xe = Ue ? Ue.allocUnsafe : n,
                Ge = ln(Ee.getPrototypeOf, Ee),
                Ye = Ee.create,
                qe = De.propertyIsEnumerable,
                Ke = Pe.splice,
                Je = We ? We.isConcatSpreadable : n,
                et = We ? We.iterator : n,
                at = We ? We.toStringTag : n,
                ct = function() {
                  try {
                    var e = po(Ee, "defineProperty");
                    return e({}, "", {}), e
                  } catch (e) {}
                }(),
                ut = t.clearTimeout !== ht.clearTimeout && t.clearTimeout,
                pt = xe && xe.now !== ht.Date.now && xe.now,
                dt = t.setTimeout !== ht.setTimeout && t.setTimeout,
                gt = Se.ceil,
                mt = Se.floor,
                Nt = Ee.getOwnPropertySymbols,
                Vt = Ue ? Ue.isBuffer : n,
                en = t.isFinite,
                vn = Pe.join,
                _n = ln(Ee.keys, Ee),
                bn = Se.max,
                yn = Se.min,
                wn = xe.now,
                xn = t.parseInt,
                kn = Se.random,
                Cn = Pe.reverse,
                Sn = po(t, "DataView"),
                En = po(t, "Map"),
                Tn = po(t, "Promise"),
                On = po(t, "Set"),
                An = po(t, "WeakMap"),
                Pn = po(Ee, "create"),
                Mn = An && new An,
                Dn = {},
                In = zo(Sn),
                Rn = zo(En),
                jn = zo(Tn),
                Nn = zo(On),
                Ln = zo(An),
                Fn = We ? We.prototype : n,
                Bn = Fn ? Fn.valueOf : n,
                zn = Fn ? Fn.toString : n;

              function Hn(e) {
                if (rs(e) && !Ga(e) && !(e instanceof Xn)) {
                  if (e instanceof Vn) return e;
                  if (je.call(e, "__wrapped__")) return Ho(e)
                }
                return new Vn(e)
              }
              var Un = function() {
                function e() {}
                return function(t) {
                  if (!ns(t)) return {};
                  if (Ye) return Ye(t);
                  e.prototype = t;
                  var r = new e;
                  return e.prototype = n, r
                }
              }();

              function Wn() {}

              function Vn(e, t) {
                this.__wrapped__ = e, this.__actions__ = [], this.__chain__ = !!t, this.__index__ = 0, this.__values__ = n
              }

              function Xn(e) {
                this.__wrapped__ = e, this.__actions__ = [], this.__dir__ = 1, this.__filtered__ = !1, this.__iteratees__ = [], this.__takeCount__ = f, this.__views__ = []
              }

              function Gn(e) {
                var t = -1,
                  n = null == e ? 0 : e.length;
                for (this.clear(); ++t < n;) {
                  var r = e[t];
                  this.set(r[0], r[1])
                }
              }

              function Yn(e) {
                var t = -1,
                  n = null == e ? 0 : e.length;
                for (this.clear(); ++t < n;) {
                  var r = e[t];
                  this.set(r[0], r[1])
                }
              }

              function qn(e) {
                var t = -1,
                  n = null == e ? 0 : e.length;
                for (this.clear(); ++t < n;) {
                  var r = e[t];
                  this.set(r[0], r[1])
                }
              }

              function Kn(e) {
                var t = -1,
                  n = null == e ? 0 : e.length;
                for (this.__data__ = new qn; ++t < n;) this.add(e[t])
              }

              function Zn(e) {
                var t = this.__data__ = new Yn(e);
                this.size = t.size
              }

              function $n(e, t) {
                var n = Ga(e),
                  r = !n && Xa(e),
                  i = !n && !r && Za(e),
                  o = !n && !r && !i && hs(e),
                  a = n || r || i || o,
                  s = a ? Yt(e.length, Oe) : [],
                  l = s.length;
                for (var c in e) !t && !je.call(e, c) || a && ("length" == c || i && ("offset" == c || "parent" == c) || o && ("buffer" == c || "byteLength" == c || "byteOffset" == c) || yo(c, l)) || s.push(c);
                return s
              }

              function Jn(e) {
                var t = e.length;
                return t ? e[Kr(0, t - 1)] : n
              }

              function Qn(e, t) {
                return Lo(Pi(e), lr(t, 0, e.length))
              }

              function er(e) {
                return Lo(Pi(e))
              }

              function tr(e, t, r) {
                (r !== n && !Ua(e[t], r) || r === n && !(t in e)) && ar(e, t, r)
              }

              function nr(e, t, r) {
                var i = e[t];
                je.call(e, t) && Ua(i, r) && (r !== n || t in e) || ar(e, t, r)
              }

              function rr(e, t) {
                for (var n = e.length; n--;)
                  if (Ua(e[n][0], t)) return n;
                return -1
              }

              function ir(e, t, n, r) {
                return dr(e, (function(e, i, o) {
                  t(r, e, n(e), o)
                })), r
              }

              function or(e, t) {
                return e && Mi(t, Is(t), e)
              }

              function ar(e, t, n) {
                "__proto__" == t && ct ? ct(e, t, {
                  configurable: !0,
                  enumerable: !0,
                  value: n,
                  writable: !0
                }) : e[t] = n
              }

              function sr(e, t) {
                for (var r = -1, i = t.length, o = oe(i), a = null == e; ++r < i;) o[r] = a ? n : Os(e, t[r]);
                return o
              }

              function lr(e, t, r) {
                return e == e && (r !== n && (e = e <= r ? e : r), t !== n && (e = e >= t ? e : t)), e
              }

              function cr(e, t, r, i, o, a) {
                var s, l = 1 & t,
                  c = 2 & t,
                  u = 4 & t;
                if (r && (s = o ? r(e, i, o, a) : r(e)), s !== n) return s;
                if (!ns(e)) return e;
                var h = Ga(e);
                if (h) {
                  if (s = function(e) {
                      var t = e.length,
                        n = new e.constructor(t);
                      t && "string" == typeof e[0] && je.call(e, "index") && (n.index = e.index, n.input = e.input);
                      return n
                    }(e), !l) return Pi(e, s)
                } else {
                  var p = mo(e),
                    d = p == w || p == x;
                  if (Za(e)) return Ci(e, l);
                  if (p == S || p == m || d && !o) {
                    if (s = c || d ? {} : _o(e), !l) return c ? function(e, t) {
                      return Mi(e, go(e), t)
                    }(e, function(e, t) {
                      return e && Mi(t, Rs(t), e)
                    }(s, e)) : function(e, t) {
                      return Mi(e, fo(e), t)
                    }(e, or(s, e))
                  } else {
                    if (!ot[p]) return o ? e : {};
                    s = function(e, t, n) {
                      var r = e.constructor;
                      switch (t) {
                        case D:
                          return Si(e);
                        case _:
                        case b:
                          return new r(+e);
                        case I:
                          return function(e, t) {
                            var n = t ? Si(e.buffer) : e.buffer;
                            return new e.constructor(n, e.byteOffset, e.byteLength)
                          }(e, n);
                        case R:
                        case j:
                        case N:
                        case L:
                        case F:
                        case B:
                        case z:
                        case H:
                        case U:
                          return Ei(e, n);
                        case k:
                          return new r;
                        case C:
                        case A:
                          return new r(e);
                        case T:
                          return function(e) {
                            var t = new e.constructor(e.source, de.exec(e));
                            return t.lastIndex = e.lastIndex, t
                          }(e);
                        case O:
                          return new r;
                        case P:
                          return i = e, Bn ? Ee(Bn.call(i)) : {}
                      }
                      var i
                    }(e, p, l)
                  }
                }
                a || (a = new Zn);
                var f = a.get(e);
                if (f) return f;
                a.set(e, s), ls(e) ? e.forEach((function(n) {
                  s.add(cr(n, t, r, n, e, a))
                })) : is(e) && e.forEach((function(n, i) {
                  s.set(i, cr(n, t, r, i, e, a))
                }));
                var g = h ? n : (u ? c ? oo : io : c ? Rs : Is)(e);
                return St(g || e, (function(n, i) {
                  g && (n = e[i = n]), nr(s, i, cr(n, t, r, i, e, a))
                })), s
              }

              function ur(e, t, r) {
                var i = r.length;
                if (null == e) return !i;
                for (e = Ee(e); i--;) {
                  var o = r[i],
                    a = t[o],
                    s = e[o];
                  if (s === n && !(o in e) || !a(s)) return !1
                }
                return !0
              }

              function hr(e, t, i) {
                if ("function" != typeof e) throw new Ae(r);
                return Io((function() {
                  e.apply(n, i)
                }), t)
              }

              function pr(e, t, n, r) {
                var i = -1,
                  o = At,
                  a = !0,
                  s = e.length,
                  l = [],
                  c = t.length;
                if (!s) return l;
                n && (t = Mt(t, Kt(n))), r ? (o = Pt, a = !1) : t.length >= 200 && (o = $t, a = !1, t = new Kn(t));
                e: for (; ++i < s;) {
                  var u = e[i],
                    h = null == n ? u : n(u);
                  if (u = r || 0 !== u ? u : 0, a && h == h) {
                    for (var p = c; p--;)
                      if (t[p] === h) continue e;
                    l.push(u)
                  } else o(t, h, r) || l.push(u)
                }
                return l
              }
              Hn.templateSettings = {
                escape: Z,
                evaluate: $,
                interpolate: J,
                variable: "",
                imports: {
                  _: Hn
                }
              }, Hn.prototype = Wn.prototype, Hn.prototype.constructor = Hn, Vn.prototype = Un(Wn.prototype), Vn.prototype.constructor = Vn, Xn.prototype = Un(Wn.prototype), Xn.prototype.constructor = Xn, Gn.prototype.clear = function() {
                this.__data__ = Pn ? Pn(null) : {}, this.size = 0
              }, Gn.prototype.delete = function(e) {
                var t = this.has(e) && delete this.__data__[e];
                return this.size -= t ? 1 : 0, t
              }, Gn.prototype.get = function(e) {
                var t = this.__data__;
                if (Pn) {
                  var r = t[e];
                  return r === i ? n : r
                }
                return je.call(t, e) ? t[e] : n
              }, Gn.prototype.has = function(e) {
                var t = this.__data__;
                return Pn ? t[e] !== n : je.call(t, e)
              }, Gn.prototype.set = function(e, t) {
                var r = this.__data__;
                return this.size += this.has(e) ? 0 : 1, r[e] = Pn && t === n ? i : t, this
              }, Yn.prototype.clear = function() {
                this.__data__ = [], this.size = 0
              }, Yn.prototype.delete = function(e) {
                var t = this.__data__,
                  n = rr(t, e);
                return !(n < 0) && (n == t.length - 1 ? t.pop() : Ke.call(t, n, 1), --this.size, !0)
              }, Yn.prototype.get = function(e) {
                var t = this.__data__,
                  r = rr(t, e);
                return r < 0 ? n : t[r][1]
              }, Yn.prototype.has = function(e) {
                return rr(this.__data__, e) > -1
              }, Yn.prototype.set = function(e, t) {
                var n = this.__data__,
                  r = rr(n, e);
                return r < 0 ? (++this.size, n.push([e, t])) : n[r][1] = t, this
              }, qn.prototype.clear = function() {
                this.size = 0, this.__data__ = {
                  hash: new Gn,
                  map: new(En || Yn),
                  string: new Gn
                }
              }, qn.prototype.delete = function(e) {
                var t = uo(this, e).delete(e);
                return this.size -= t ? 1 : 0, t
              }, qn.prototype.get = function(e) {
                return uo(this, e).get(e)
              }, qn.prototype.has = function(e) {
                return uo(this, e).has(e)
              }, qn.prototype.set = function(e, t) {
                var n = uo(this, e),
                  r = n.size;
                return n.set(e, t), this.size += n.size == r ? 0 : 1, this
              }, Kn.prototype.add = Kn.prototype.push = function(e) {
                return this.__data__.set(e, i), this
              }, Kn.prototype.has = function(e) {
                return this.__data__.has(e)
              }, Zn.prototype.clear = function() {
                this.__data__ = new Yn, this.size = 0
              }, Zn.prototype.delete = function(e) {
                var t = this.__data__,
                  n = t.delete(e);
                return this.size = t.size, n
              }, Zn.prototype.get = function(e) {
                return this.__data__.get(e)
              }, Zn.prototype.has = function(e) {
                return this.__data__.has(e)
              }, Zn.prototype.set = function(e, t) {
                var n = this.__data__;
                if (n instanceof Yn) {
                  var r = n.__data__;
                  if (!En || r.length < 199) return r.push([e, t]), this.size = ++n.size, this;
                  n = this.__data__ = new qn(r)
                }
                return n.set(e, t), this.size = n.size, this
              };
              var dr = Ri(wr),
                fr = Ri(xr, !0);

              function gr(e, t) {
                var n = !0;
                return dr(e, (function(e, r, i) {
                  return n = !!t(e, r, i)
                })), n
              }

              function mr(e, t, r) {
                for (var i = -1, o = e.length; ++i < o;) {
                  var a = e[i],
                    s = t(a);
                  if (null != s && (l === n ? s == s && !us(s) : r(s, l))) var l = s,
                    c = a
                }
                return c
              }

              function vr(e, t) {
                var n = [];
                return dr(e, (function(e, r, i) {
                  t(e, r, i) && n.push(e)
                })), n
              }

              function _r(e, t, n, r, i) {
                var o = -1,
                  a = e.length;
                for (n || (n = bo), i || (i = []); ++o < a;) {
                  var s = e[o];
                  t > 0 && n(s) ? t > 1 ? _r(s, t - 1, n, r, i) : Dt(i, s) : r || (i[i.length] = s)
                }
                return i
              }
              var br = ji(),
                yr = ji(!0);

              function wr(e, t) {
                return e && br(e, t, Is)
              }

              function xr(e, t) {
                return e && yr(e, t, Is)
              }

              function kr(e, t) {
                return Ot(t, (function(t) {
                  return Qa(e[t])
                }))
              }

              function Cr(e, t) {
                for (var r = 0, i = (t = yi(t, e)).length; null != e && r < i;) e = e[Bo(t[r++])];
                return r && r == i ? e : n
              }

              function Sr(e, t, n) {
                var r = t(e);
                return Ga(e) ? r : Dt(r, n(e))
              }

              function Er(e) {
                return null == e ? e === n ? "[object Undefined]" : "[object Null]" : at && at in Ee(e) ? function(e) {
                  var t = je.call(e, at),
                    r = e[at];
                  try {
                    e[at] = n;
                    var i = !0
                  } catch (e) {}
                  var o = Fe.call(e);
                  i && (t ? e[at] = r : delete e[at]);
                  return o
                }(e) : function(e) {
                  return Fe.call(e)
                }(e)
              }

              function Tr(e, t) {
                return e > t
              }

              function Or(e, t) {
                return null != e && je.call(e, t)
              }

              function Ar(e, t) {
                return null != e && t in Ee(e)
              }

              function Pr(e, t, r) {
                for (var i = r ? Pt : At, o = e[0].length, a = e.length, s = a, l = oe(a), c = 1 / 0, u = []; s--;) {
                  var h = e[s];
                  s && t && (h = Mt(h, Kt(t))), c = yn(h.length, c), l[s] = !r && (t || o >= 120 && h.length >= 120) ? new Kn(s && h) : n
                }
                h = e[0];
                var p = -1,
                  d = l[0];
                e: for (; ++p < o && u.length < c;) {
                  var f = h[p],
                    g = t ? t(f) : f;
                  if (f = r || 0 !== f ? f : 0, !(d ? $t(d, g) : i(u, g, r))) {
                    for (s = a; --s;) {
                      var m = l[s];
                      if (!(m ? $t(m, g) : i(e[s], g, r))) continue e
                    }
                    d && d.push(g), u.push(f)
                  }
                }
                return u
              }

              function Mr(e, t, r) {
                var i = null == (e = Ao(e, t = yi(t, e))) ? e : e[Bo(Jo(t))];
                return null == i ? n : kt(i, e, r)
              }

              function Dr(e) {
                return rs(e) && Er(e) == m
              }

              function Ir(e, t, r, i, o) {
                return e === t || (null == e || null == t || !rs(e) && !rs(t) ? e != e && t != t : function(e, t, r, i, o, a) {
                  var s = Ga(e),
                    l = Ga(t),
                    c = s ? v : mo(e),
                    u = l ? v : mo(t),
                    h = (c = c == m ? S : c) == S,
                    p = (u = u == m ? S : u) == S,
                    d = c == u;
                  if (d && Za(e)) {
                    if (!Za(t)) return !1;
                    s = !0, h = !1
                  }
                  if (d && !h) return a || (a = new Zn), s || hs(e) ? no(e, t, r, i, o, a) : function(e, t, n, r, i, o, a) {
                    switch (n) {
                      case I:
                        if (e.byteLength != t.byteLength || e.byteOffset != t.byteOffset) return !1;
                        e = e.buffer, t = t.buffer;
                      case D:
                        return !(e.byteLength != t.byteLength || !o(new Ve(e), new Ve(t)));
                      case _:
                      case b:
                      case C:
                        return Ua(+e, +t);
                      case y:
                        return e.name == t.name && e.message == t.message;
                      case T:
                      case A:
                        return e == t + "";
                      case k:
                        var s = sn;
                      case O:
                        var l = 1 & r;
                        if (s || (s = un), e.size != t.size && !l) return !1;
                        var c = a.get(e);
                        if (c) return c == t;
                        r |= 2, a.set(e, t);
                        var u = no(s(e), s(t), r, i, o, a);
                        return a.delete(e), u;
                      case P:
                        if (Bn) return Bn.call(e) == Bn.call(t)
                    }
                    return !1
                  }(e, t, c, r, i, o, a);
                  if (!(1 & r)) {
                    var f = h && je.call(e, "__wrapped__"),
                      g = p && je.call(t, "__wrapped__");
                    if (f || g) {
                      var w = f ? e.value() : e,
                        x = g ? t.value() : t;
                      return a || (a = new Zn), o(w, x, r, i, a)
                    }
                  }
                  if (!d) return !1;
                  return a || (a = new Zn),
                    function(e, t, r, i, o, a) {
                      var s = 1 & r,
                        l = io(e),
                        c = l.length,
                        u = io(t).length;
                      if (c != u && !s) return !1;
                      var h = c;
                      for (; h--;) {
                        var p = l[h];
                        if (!(s ? p in t : je.call(t, p))) return !1
                      }
                      var d = a.get(e),
                        f = a.get(t);
                      if (d && f) return d == t && f == e;
                      var g = !0;
                      a.set(e, t), a.set(t, e);
                      var m = s;
                      for (; ++h < c;) {
                        var v = e[p = l[h]],
                          _ = t[p];
                        if (i) var b = s ? i(_, v, p, t, e, a) : i(v, _, p, e, t, a);
                        if (!(b === n ? v === _ || o(v, _, r, i, a) : b)) {
                          g = !1;
                          break
                        }
                        m || (m = "constructor" == p)
                      }
                      if (g && !m) {
                        var y = e.constructor,
                          w = t.constructor;
                        y == w || !("constructor" in e) || !("constructor" in t) || "function" == typeof y && y instanceof y && "function" == typeof w && w instanceof w || (g = !1)
                      }
                      return a.delete(e), a.delete(t), g
                    }(e, t, r, i, o, a)
                }(e, t, r, i, Ir, o))
              }

              function Rr(e, t, r, i) {
                var o = r.length,
                  a = o,
                  s = !i;
                if (null == e) return !a;
                for (e = Ee(e); o--;) {
                  var l = r[o];
                  if (s && l[2] ? l[1] !== e[l[0]] : !(l[0] in e)) return !1
                }
                for (; ++o < a;) {
                  var c = (l = r[o])[0],
                    u = e[c],
                    h = l[1];
                  if (s && l[2]) {
                    if (u === n && !(c in e)) return !1
                  } else {
                    var p = new Zn;
                    if (i) var d = i(u, h, c, e, t, p);
                    if (!(d === n ? Ir(h, u, 3, i, p) : d)) return !1
                  }
                }
                return !0
              }

              function jr(e) {
                return !(!ns(e) || (t = e, Le && Le in t)) && (Qa(e) ? He : me).test(zo(e));
                var t
              }

              function Nr(e) {
                return "function" == typeof e ? e : null == e ? ol : "object" == typeof e ? Ga(e) ? Ur(e[0], e[1]) : Hr(e) : fl(e)
              }

              function Lr(e) {
                if (!So(e)) return _n(e);
                var t = [];
                for (var n in Ee(e)) je.call(e, n) && "constructor" != n && t.push(n);
                return t
              }

              function Fr(e) {
                if (!ns(e)) return function(e) {
                  var t = [];
                  if (null != e)
                    for (var n in Ee(e)) t.push(n);
                  return t
                }(e);
                var t = So(e),
                  n = [];
                for (var r in e)("constructor" != r || !t && je.call(e, r)) && n.push(r);
                return n
              }

              function Br(e, t) {
                return e < t
              }

              function zr(e, t) {
                var n = -1,
                  r = qa(e) ? oe(e.length) : [];
                return dr(e, (function(e, i, o) {
                  r[++n] = t(e, i, o)
                })), r
              }

              function Hr(e) {
                var t = ho(e);
                return 1 == t.length && t[0][2] ? To(t[0][0], t[0][1]) : function(n) {
                  return n === e || Rr(n, e, t)
                }
              }

              function Ur(e, t) {
                return xo(e) && Eo(t) ? To(Bo(e), t) : function(r) {
                  var i = Os(r, e);
                  return i === n && i === t ? As(r, e) : Ir(t, i, 3)
                }
              }

              function Wr(e, t, r, i, o) {
                e !== t && br(t, (function(a, s) {
                  if (o || (o = new Zn), ns(a)) ! function(e, t, r, i, o, a, s) {
                    var l = Mo(e, r),
                      c = Mo(t, r),
                      u = s.get(c);
                    if (u) return void tr(e, r, u);
                    var h = a ? a(l, c, r + "", e, t, s) : n,
                      p = h === n;
                    if (p) {
                      var d = Ga(c),
                        f = !d && Za(c),
                        g = !d && !f && hs(c);
                      h = c, d || f || g ? Ga(l) ? h = l : Ka(l) ? h = Pi(l) : f ? (p = !1, h = Ci(c, !0)) : g ? (p = !1, h = Ei(c, !0)) : h = [] : as(c) || Xa(c) ? (h = l, Xa(l) ? h = bs(l) : ns(l) && !Qa(l) || (h = _o(c))) : p = !1
                    }
                    p && (s.set(c, h), o(h, c, i, a, s), s.delete(c));
                    tr(e, r, h)
                  }(e, t, s, r, Wr, i, o);
                  else {
                    var l = i ? i(Mo(e, s), a, s + "", e, t, o) : n;
                    l === n && (l = a), tr(e, s, l)
                  }
                }), Rs)
              }

              function Vr(e, t) {
                var r = e.length;
                if (r) return yo(t += t < 0 ? r : 0, r) ? e[t] : n
              }

              function Xr(e, t, n) {
                t = t.length ? Mt(t, (function(e) {
                  return Ga(e) ? function(t) {
                    return Cr(t, 1 === e.length ? e[0] : e)
                  } : e
                })) : [ol];
                var r = -1;
                t = Mt(t, Kt(co()));
                var i = zr(e, (function(e, n, i) {
                  var o = Mt(t, (function(t) {
                    return t(e)
                  }));
                  return {
                    criteria: o,
                    index: ++r,
                    value: e
                  }
                }));
                return function(e, t) {
                  var n = e.length;
                  for (e.sort(t); n--;) e[n] = e[n].value;
                  return e
                }(i, (function(e, t) {
                  return function(e, t, n) {
                    var r = -1,
                      i = e.criteria,
                      o = t.criteria,
                      a = i.length,
                      s = n.length;
                    for (; ++r < a;) {
                      var l = Ti(i[r], o[r]);
                      if (l) return r >= s ? l : l * ("desc" == n[r] ? -1 : 1)
                    }
                    return e.index - t.index
                  }(e, t, n)
                }))
              }

              function Gr(e, t, n) {
                for (var r = -1, i = t.length, o = {}; ++r < i;) {
                  var a = t[r],
                    s = Cr(e, a);
                  n(s, a) && ei(o, yi(a, e), s)
                }
                return o
              }

              function Yr(e, t, n, r) {
                var i = r ? zt : Bt,
                  o = -1,
                  a = t.length,
                  s = e;
                for (e === t && (t = Pi(t)), n && (s = Mt(e, Kt(n))); ++o < a;)
                  for (var l = 0, c = t[o], u = n ? n(c) : c;
                    (l = i(s, u, l, r)) > -1;) s !== e && Ke.call(s, l, 1), Ke.call(e, l, 1);
                return e
              }

              function qr(e, t) {
                for (var n = e ? t.length : 0, r = n - 1; n--;) {
                  var i = t[n];
                  if (n == r || i !== o) {
                    var o = i;
                    yo(i) ? Ke.call(e, i, 1) : pi(e, i)
                  }
                }
                return e
              }

              function Kr(e, t) {
                return e + mt(kn() * (t - e + 1))
              }

              function Zr(e, t) {
                var n = "";
                if (!e || t < 1 || t > p) return n;
                do {
                  t % 2 && (n += e), (t = mt(t / 2)) && (e += e)
                } while (t);
                return n
              }

              function $r(e, t) {
                return Ro(Oo(e, t, ol), e + "")
              }

              function Jr(e) {
                return Jn(Us(e))
              }

              function Qr(e, t) {
                var n = Us(e);
                return Lo(n, lr(t, 0, n.length))
              }

              function ei(e, t, r, i) {
                if (!ns(e)) return e;
                for (var o = -1, a = (t = yi(t, e)).length, s = a - 1, l = e; null != l && ++o < a;) {
                  var c = Bo(t[o]),
                    u = r;
                  if ("__proto__" === c || "constructor" === c || "prototype" === c) return e;
                  if (o != s) {
                    var h = l[c];
                    (u = i ? i(h, c, l) : n) === n && (u = ns(h) ? h : yo(t[o + 1]) ? [] : {})
                  }
                  nr(l, c, u), l = l[c]
                }
                return e
              }
              var ti = Mn ? function(e, t) {
                  return Mn.set(e, t), e
                } : ol,
                ni = ct ? function(e, t) {
                  return ct(e, "toString", {
                    configurable: !0,
                    enumerable: !1,
                    value: nl(t),
                    writable: !0
                  })
                } : ol;

              function ri(e) {
                return Lo(Us(e))
              }

              function ii(e, t, n) {
                var r = -1,
                  i = e.length;
                t < 0 && (t = -t > i ? 0 : i + t), (n = n > i ? i : n) < 0 && (n += i), i = t > n ? 0 : n - t >>> 0, t >>>= 0;
                for (var o = oe(i); ++r < i;) o[r] = e[r + t];
                return o
              }

              function oi(e, t) {
                var n;
                return dr(e, (function(e, r, i) {
                  return !(n = t(e, r, i))
                })), !!n
              }

              function ai(e, t, n) {
                var r = 0,
                  i = null == e ? r : e.length;
                if ("number" == typeof t && t == t && i <= 2147483647) {
                  for (; r < i;) {
                    var o = r + i >>> 1,
                      a = e[o];
                    null !== a && !us(a) && (n ? a <= t : a < t) ? r = o + 1 : i = o
                  }
                  return i
                }
                return si(e, t, ol, n)
              }

              function si(e, t, r, i) {
                var o = 0,
                  a = null == e ? 0 : e.length;
                if (0 === a) return 0;
                for (var s = (t = r(t)) != t, l = null === t, c = us(t), u = t === n; o < a;) {
                  var h = mt((o + a) / 2),
                    p = r(e[h]),
                    d = p !== n,
                    f = null === p,
                    g = p == p,
                    m = us(p);
                  if (s) var v = i || g;
                  else v = u ? g && (i || d) : l ? g && d && (i || !f) : c ? g && d && !f && (i || !m) : !f && !m && (i ? p <= t : p < t);
                  v ? o = h + 1 : a = h
                }
                return yn(a, 4294967294)
              }

              function li(e, t) {
                for (var n = -1, r = e.length, i = 0, o = []; ++n < r;) {
                  var a = e[n],
                    s = t ? t(a) : a;
                  if (!n || !Ua(s, l)) {
                    var l = s;
                    o[i++] = 0 === a ? 0 : a
                  }
                }
                return o
              }

              function ci(e) {
                return "number" == typeof e ? e : us(e) ? d : +e
              }

              function ui(e) {
                if ("string" == typeof e) return e;
                if (Ga(e)) return Mt(e, ui) + "";
                if (us(e)) return zn ? zn.call(e) : "";
                var t = e + "";
                return "0" == t && 1 / e == -1 / 0 ? "-0" : t
              }

              function hi(e, t, n) {
                var r = -1,
                  i = At,
                  o = e.length,
                  a = !0,
                  s = [],
                  l = s;
                if (n) a = !1, i = Pt;
                else if (o >= 200) {
                  var c = t ? null : Zi(e);
                  if (c) return un(c);
                  a = !1, i = $t, l = new Kn
                } else l = t ? [] : s;
                e: for (; ++r < o;) {
                  var u = e[r],
                    h = t ? t(u) : u;
                  if (u = n || 0 !== u ? u : 0, a && h == h) {
                    for (var p = l.length; p--;)
                      if (l[p] === h) continue e;
                    t && l.push(h), s.push(u)
                  } else i(l, h, n) || (l !== s && l.push(h), s.push(u))
                }
                return s
              }

              function pi(e, t) {
                return null == (e = Ao(e, t = yi(t, e))) || delete e[Bo(Jo(t))]
              }

              function di(e, t, n, r) {
                return ei(e, t, n(Cr(e, t)), r)
              }

              function fi(e, t, n, r) {
                for (var i = e.length, o = r ? i : -1;
                  (r ? o-- : ++o < i) && t(e[o], o, e););
                return n ? ii(e, r ? 0 : o, r ? o + 1 : i) : ii(e, r ? o + 1 : 0, r ? i : o)
              }

              function gi(e, t) {
                var n = e;
                return n instanceof Xn && (n = n.value()), It(t, (function(e, t) {
                  return t.func.apply(t.thisArg, Dt([e], t.args))
                }), n)
              }

              function mi(e, t, n) {
                var r = e.length;
                if (r < 2) return r ? hi(e[0]) : [];
                for (var i = -1, o = oe(r); ++i < r;)
                  for (var a = e[i], s = -1; ++s < r;) s != i && (o[i] = pr(o[i] || a, e[s], t, n));
                return hi(_r(o, 1), t, n)
              }

              function vi(e, t, r) {
                for (var i = -1, o = e.length, a = t.length, s = {}; ++i < o;) {
                  var l = i < a ? t[i] : n;
                  r(s, e[i], l)
                }
                return s
              }

              function _i(e) {
                return Ka(e) ? e : []
              }

              function bi(e) {
                return "function" == typeof e ? e : ol
              }

              function yi(e, t) {
                return Ga(e) ? e : xo(e, t) ? [e] : Fo(ys(e))
              }
              var wi = $r;

              function xi(e, t, r) {
                var i = e.length;
                return r = r === n ? i : r, !t && r >= i ? e : ii(e, t, r)
              }
              var ki = ut || function(e) {
                return ht.clearTimeout(e)
              };

              function Ci(e, t) {
                if (t) return e.slice();
                var n = e.length,
                  r = Xe ? Xe(n) : new e.constructor(n);
                return e.copy(r), r
              }

              function Si(e) {
                var t = new e.constructor(e.byteLength);
                return new Ve(t).set(new Ve(e)), t
              }

              function Ei(e, t) {
                var n = t ? Si(e.buffer) : e.buffer;
                return new e.constructor(n, e.byteOffset, e.length)
              }

              function Ti(e, t) {
                if (e !== t) {
                  var r = e !== n,
                    i = null === e,
                    o = e == e,
                    a = us(e),
                    s = t !== n,
                    l = null === t,
                    c = t == t,
                    u = us(t);
                  if (!l && !u && !a && e > t || a && s && c && !l && !u || i && s && c || !r && c || !o) return 1;
                  if (!i && !a && !u && e < t || u && r && o && !i && !a || l && r && o || !s && o || !c) return -1
                }
                return 0
              }

              function Oi(e, t, n, r) {
                for (var i = -1, o = e.length, a = n.length, s = -1, l = t.length, c = bn(o - a, 0), u = oe(l + c), h = !r; ++s < l;) u[s] = t[s];
                for (; ++i < a;)(h || i < o) && (u[n[i]] = e[i]);
                for (; c--;) u[s++] = e[i++];
                return u
              }

              function Ai(e, t, n, r) {
                for (var i = -1, o = e.length, a = -1, s = n.length, l = -1, c = t.length, u = bn(o - s, 0), h = oe(u + c), p = !r; ++i < u;) h[i] = e[i];
                for (var d = i; ++l < c;) h[d + l] = t[l];
                for (; ++a < s;)(p || i < o) && (h[d + n[a]] = e[i++]);
                return h
              }

              function Pi(e, t) {
                var n = -1,
                  r = e.length;
                for (t || (t = oe(r)); ++n < r;) t[n] = e[n];
                return t
              }

              function Mi(e, t, r, i) {
                var o = !r;
                r || (r = {});
                for (var a = -1, s = t.length; ++a < s;) {
                  var l = t[a],
                    c = i ? i(r[l], e[l], l, r, e) : n;
                  c === n && (c = e[l]), o ? ar(r, l, c) : nr(r, l, c)
                }
                return r
              }

              function Di(e, t) {
                return function(n, r) {
                  var i = Ga(n) ? Ct : ir,
                    o = t ? t() : {};
                  return i(n, e, co(r, 2), o)
                }
              }

              function Ii(e) {
                return $r((function(t, r) {
                  var i = -1,
                    o = r.length,
                    a = o > 1 ? r[o - 1] : n,
                    s = o > 2 ? r[2] : n;
                  for (a = e.length > 3 && "function" == typeof a ? (o--, a) : n, s && wo(r[0], r[1], s) && (a = o < 3 ? n : a, o = 1), t = Ee(t); ++i < o;) {
                    var l = r[i];
                    l && e(t, l, i, a)
                  }
                  return t
                }))
              }

              function Ri(e, t) {
                return function(n, r) {
                  if (null == n) return n;
                  if (!qa(n)) return e(n, r);
                  for (var i = n.length, o = t ? i : -1, a = Ee(n);
                    (t ? o-- : ++o < i) && !1 !== r(a[o], o, a););
                  return n
                }
              }

              function ji(e) {
                return function(t, n, r) {
                  for (var i = -1, o = Ee(t), a = r(t), s = a.length; s--;) {
                    var l = a[e ? s : ++i];
                    if (!1 === n(o[l], l, o)) break
                  }
                  return t
                }
              }

              function Ni(e) {
                return function(t) {
                  var r = an(t = ys(t)) ? dn(t) : n,
                    i = r ? r[0] : t.charAt(0),
                    o = r ? xi(r, 1).join("") : t.slice(1);
                  return i[e]() + o
                }
              }

              function Li(e) {
                return function(t) {
                  return It(Qs(Xs(t).replace(Ze, "")), e, "")
                }
              }

              function Fi(e) {
                return function() {
                  var t = arguments;
                  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]);
                    case 5:
                      return new e(t[0], t[1], t[2], t[3], t[4]);
                    case 6:
                      return new e(t[0], t[1], t[2], t[3], t[4], t[5]);
                    case 7:
                      return new e(t[0], t[1], t[2], t[3], t[4], t[5], t[6])
                  }
                  var n = Un(e.prototype),
                    r = e.apply(n, t);
                  return ns(r) ? r : n
                }
              }

              function Bi(e) {
                return function(t, r, i) {
                  var o = Ee(t);
                  if (!qa(t)) {
                    var a = co(r, 3);
                    t = Is(t), r = function(e) {
                      return a(o[e], e, o)
                    }
                  }
                  var s = e(t, r, i);
                  return s > -1 ? o[a ? t[s] : s] : n
                }
              }

              function zi(e) {
                return ro((function(t) {
                  var i = t.length,
                    o = i,
                    a = Vn.prototype.thru;
                  for (e && t.reverse(); o--;) {
                    var s = t[o];
                    if ("function" != typeof s) throw new Ae(r);
                    if (a && !l && "wrapper" == so(s)) var l = new Vn([], !0)
                  }
                  for (o = l ? o : i; ++o < i;) {
                    var c = so(s = t[o]),
                      u = "wrapper" == c ? ao(s) : n;
                    l = u && ko(u[0]) && 424 == u[1] && !u[4].length && 1 == u[9] ? l[so(u[0])].apply(l, u[3]) : 1 == s.length && ko(s) ? l[c]() : l.thru(s)
                  }
                  return function() {
                    var e = arguments,
                      n = e[0];
                    if (l && 1 == e.length && Ga(n)) return l.plant(n).value();
                    for (var r = 0, o = i ? t[r].apply(this, e) : n; ++r < i;) o = t[r].call(this, o);
                    return o
                  }
                }))
              }

              function Hi(e, t, r, i, o, a, s, l, u, h) {
                var p = t & c,
                  d = 1 & t,
                  f = 2 & t,
                  g = 24 & t,
                  m = 512 & t,
                  v = f ? n : Fi(e);
                return function n() {
                  for (var c = arguments.length, _ = oe(c), b = c; b--;) _[b] = arguments[b];
                  if (g) var y = lo(n),
                    w = tn(_, y);
                  if (i && (_ = Oi(_, i, o, g)), a && (_ = Ai(_, a, s, g)), c -= w, g && c < h) {
                    var x = cn(_, y);
                    return qi(e, t, Hi, n.placeholder, r, _, x, l, u, h - c)
                  }
                  var k = d ? r : this,
                    C = f ? k[e] : e;
                  return c = _.length, l ? _ = Po(_, l) : m && c > 1 && _.reverse(), p && u < c && (_.length = u), this && this !== ht && this instanceof n && (C = v || Fi(C)), C.apply(k, _)
                }
              }

              function Ui(e, t) {
                return function(n, r) {
                  return function(e, t, n, r) {
                    return wr(e, (function(e, i, o) {
                      t(r, n(e), i, o)
                    })), r
                  }(n, e, t(r), {})
                }
              }

              function Wi(e, t) {
                return function(r, i) {
                  var o;
                  if (r === n && i === n) return t;
                  if (r !== n && (o = r), i !== n) {
                    if (o === n) return i;
                    "string" == typeof r || "string" == typeof i ? (r = ui(r), i = ui(i)) : (r = ci(r), i = ci(i)), o = e(r, i)
                  }
                  return o
                }
              }

              function Vi(e) {
                return ro((function(t) {
                  return t = Mt(t, Kt(co())), $r((function(n) {
                    var r = this;
                    return e(t, (function(e) {
                      return kt(e, r, n)
                    }))
                  }))
                }))
              }

              function Xi(e, t) {
                var r = (t = t === n ? " " : ui(t)).length;
                if (r < 2) return r ? Zr(t, e) : t;
                var i = Zr(t, gt(e / pn(t)));
                return an(t) ? xi(dn(i), 0, e).join("") : i.slice(0, e)
              }

              function Gi(e) {
                return function(t, r, i) {
                  return i && "number" != typeof i && wo(t, r, i) && (r = i = n), t = gs(t), r === n ? (r = t, t = 0) : r = gs(r),
                    function(e, t, n, r) {
                      for (var i = -1, o = bn(gt((t - e) / (n || 1)), 0), a = oe(o); o--;) a[r ? o : ++i] = e, e += n;
                      return a
                    }(t, r, i = i === n ? t < r ? 1 : -1 : gs(i), e)
                }
              }

              function Yi(e) {
                return function(t, n) {
                  return "string" == typeof t && "string" == typeof n || (t = _s(t), n = _s(n)), e(t, n)
                }
              }

              function qi(e, t, r, i, o, a, c, u, h, p) {
                var d = 8 & t;
                t |= d ? s : l, 4 & (t &= ~(d ? l : s)) || (t &= -4);
                var f = [e, t, o, d ? a : n, d ? c : n, d ? n : a, d ? n : c, u, h, p],
                  g = r.apply(n, f);
                return ko(e) && Do(g, f), g.placeholder = i, jo(g, e, t)
              }

              function Ki(e) {
                var t = Se[e];
                return function(e, n) {
                  if (e = _s(e), (n = null == n ? 0 : yn(ms(n), 292)) && en(e)) {
                    var r = (ys(e) + "e").split("e");
                    return +((r = (ys(t(r[0] + "e" + (+r[1] + n))) + "e").split("e"))[0] + "e" + (+r[1] - n))
                  }
                  return t(e)
                }
              }
              var Zi = On && 1 / un(new On([, -0]))[1] == h ? function(e) {
                return new On(e)
              } : ul;

              function $i(e) {
                return function(t) {
                  var n = mo(t);
                  return n == k ? sn(t) : n == O ? hn(t) : function(e, t) {
                    return Mt(t, (function(t) {
                      return [t, e[t]]
                    }))
                  }(t, e(t))
                }
              }

              function Ji(e, t, i, h, p, d, f, g) {
                var m = 2 & t;
                if (!m && "function" != typeof e) throw new Ae(r);
                var v = h ? h.length : 0;
                if (v || (t &= -97, h = p = n), f = f === n ? f : bn(ms(f), 0), g = g === n ? g : ms(g), v -= p ? p.length : 0, t & l) {
                  var _ = h,
                    b = p;
                  h = p = n
                }
                var y = m ? n : ao(e),
                  w = [e, t, i, h, p, _, b, d, f, g];
                if (y && function(e, t) {
                    var n = e[1],
                      r = t[1],
                      i = n | r,
                      a = i < 131,
                      s = r == c && 8 == n || r == c && n == u && e[7].length <= t[8] || 384 == r && t[7].length <= t[8] && 8 == n;
                    if (!a && !s) return e;
                    1 & r && (e[2] = t[2], i |= 1 & n ? 0 : 4);
                    var l = t[3];
                    if (l) {
                      var h = e[3];
                      e[3] = h ? Oi(h, l, t[4]) : l, e[4] = h ? cn(e[3], o) : t[4]
                    }(l = t[5]) && (h = e[5], e[5] = h ? Ai(h, l, t[6]) : l, e[6] = h ? cn(e[5], o) : t[6]);
                    (l = t[7]) && (e[7] = l);
                    r & c && (e[8] = null == e[8] ? t[8] : yn(e[8], t[8]));
                    null == e[9] && (e[9] = t[9]);
                    e[0] = t[0], e[1] = i
                  }(w, y), e = w[0], t = w[1], i = w[2], h = w[3], p = w[4], !(g = w[9] = w[9] === n ? m ? 0 : e.length : bn(w[9] - v, 0)) && 24 & t && (t &= -25), t && 1 != t) x = 8 == t || t == a ? function(e, t, r) {
                  var i = Fi(e);
                  return function o() {
                    for (var a = arguments.length, s = oe(a), l = a, c = lo(o); l--;) s[l] = arguments[l];
                    var u = a < 3 && s[0] !== c && s[a - 1] !== c ? [] : cn(s, c);
                    return (a -= u.length) < r ? qi(e, t, Hi, o.placeholder, n, s, u, n, n, r - a) : kt(this && this !== ht && this instanceof o ? i : e, this, s)
                  }
                }(e, t, g) : t != s && 33 != t || p.length ? Hi.apply(n, w) : function(e, t, n, r) {
                  var i = 1 & t,
                    o = Fi(e);
                  return function t() {
                    for (var a = -1, s = arguments.length, l = -1, c = r.length, u = oe(c + s), h = this && this !== ht && this instanceof t ? o : e; ++l < c;) u[l] = r[l];
                    for (; s--;) u[l++] = arguments[++a];
                    return kt(h, i ? n : this, u)
                  }
                }(e, t, i, h);
                else var x = function(e, t, n) {
                  var r = 1 & t,
                    i = Fi(e);
                  return function t() {
                    return (this && this !== ht && this instanceof t ? i : e).apply(r ? n : this, arguments)
                  }
                }(e, t, i);
                return jo((y ? ti : Do)(x, w), e, t)
              }

              function Qi(e, t, r, i) {
                return e === n || Ua(e, De[r]) && !je.call(i, r) ? t : e
              }

              function eo(e, t, r, i, o, a) {
                return ns(e) && ns(t) && (a.set(t, e), Wr(e, t, n, eo, a), a.delete(t)), e
              }

              function to(e) {
                return as(e) ? n : e
              }

              function no(e, t, r, i, o, a) {
                var s = 1 & r,
                  l = e.length,
                  c = t.length;
                if (l != c && !(s && c > l)) return !1;
                var u = a.get(e),
                  h = a.get(t);
                if (u && h) return u == t && h == e;
                var p = -1,
                  d = !0,
                  f = 2 & r ? new Kn : n;
                for (a.set(e, t), a.set(t, e); ++p < l;) {
                  var g = e[p],
                    m = t[p];
                  if (i) var v = s ? i(m, g, p, t, e, a) : i(g, m, p, e, t, a);
                  if (v !== n) {
                    if (v) continue;
                    d = !1;
                    break
                  }
                  if (f) {
                    if (!jt(t, (function(e, t) {
                        if (!$t(f, t) && (g === e || o(g, e, r, i, a))) return f.push(t)
                      }))) {
                      d = !1;
                      break
                    }
                  } else if (g !== m && !o(g, m, r, i, a)) {
                    d = !1;
                    break
                  }
                }
                return a.delete(e), a.delete(t), d
              }

              function ro(e) {
                return Ro(Oo(e, n, Yo), e + "")
              }

              function io(e) {
                return Sr(e, Is, fo)
              }

              function oo(e) {
                return Sr(e, Rs, go)
              }
              var ao = Mn ? function(e) {
                return Mn.get(e)
              } : ul;

              function so(e) {
                for (var t = e.name + "", n = Dn[t], r = je.call(Dn, t) ? n.length : 0; r--;) {
                  var i = n[r],
                    o = i.func;
                  if (null == o || o == e) return i.name
                }
                return t
              }

              function lo(e) {
                return (je.call(Hn, "placeholder") ? Hn : e).placeholder
              }

              function co() {
                var e = Hn.iteratee || al;
                return e = e === al ? Nr : e, arguments.length ? e(arguments[0], arguments[1]) : e
              }

              function uo(e, t) {
                var n, r, i = e.__data__;
                return ("string" == (r = typeof(n = t)) || "number" == r || "symbol" == r || "boolean" == r ? "__proto__" !== n : null === n) ? i["string" == typeof t ? "string" : "hash"] : i.map
              }

              function ho(e) {
                for (var t = Is(e), n = t.length; n--;) {
                  var r = t[n],
                    i = e[r];
                  t[n] = [r, i, Eo(i)]
                }
                return t
              }

              function po(e, t) {
                var r = function(e, t) {
                  return null == e ? n : e[t]
                }(e, t);
                return jr(r) ? r : n
              }
              var fo = Nt ? function(e) {
                  return null == e ? [] : (e = Ee(e), Ot(Nt(e), (function(t) {
                    return qe.call(e, t)
                  })))
                } : vl,
                go = Nt ? function(e) {
                  for (var t = []; e;) Dt(t, fo(e)), e = Ge(e);
                  return t
                } : vl,
                mo = Er;

              function vo(e, t, n) {
                for (var r = -1, i = (t = yi(t, e)).length, o = !1; ++r < i;) {
                  var a = Bo(t[r]);
                  if (!(o = null != e && n(e, a))) break;
                  e = e[a]
                }
                return o || ++r != i ? o : !!(i = null == e ? 0 : e.length) && ts(i) && yo(a, i) && (Ga(e) || Xa(e))
              }

              function _o(e) {
                return "function" != typeof e.constructor || So(e) ? {} : Un(Ge(e))
              }

              function bo(e) {
                return Ga(e) || Xa(e) || !!(Je && e && e[Je])
              }

              function yo(e, t) {
                var n = typeof e;
                return !!(t = null == t ? p : t) && ("number" == n || "symbol" != n && _e.test(e)) && e > -1 && e % 1 == 0 && e < t
              }

              function wo(e, t, n) {
                if (!ns(n)) return !1;
                var r = typeof t;
                return !!("number" == r ? qa(n) && yo(t, n.length) : "string" == r && t in n) && Ua(n[t], e)
              }

              function xo(e, t) {
                if (Ga(e)) return !1;
                var n = typeof e;
                return !("number" != n && "symbol" != n && "boolean" != n && null != e && !us(e)) || (ee.test(e) || !Q.test(e) || null != t && e in Ee(t))
              }

              function ko(e) {
                var t = so(e),
                  n = Hn[t];
                if ("function" != typeof n || !(t in Xn.prototype)) return !1;
                if (e === n) return !0;
                var r = ao(n);
                return !!r && e === r[0]
              }(Sn && mo(new Sn(new ArrayBuffer(1))) != I || En && mo(new En) != k || Tn && mo(Tn.resolve()) != E || On && mo(new On) != O || An && mo(new An) != M) && (mo = function(e) {
                var t = Er(e),
                  r = t == S ? e.constructor : n,
                  i = r ? zo(r) : "";
                if (i) switch (i) {
                  case In:
                    return I;
                  case Rn:
                    return k;
                  case jn:
                    return E;
                  case Nn:
                    return O;
                  case Ln:
                    return M
                }
                return t
              });
              var Co = Ie ? Qa : _l;

              function So(e) {
                var t = e && e.constructor;
                return e === ("function" == typeof t && t.prototype || De)
              }

              function Eo(e) {
                return e == e && !ns(e)
              }

              function To(e, t) {
                return function(r) {
                  return null != r && (r[e] === t && (t !== n || e in Ee(r)))
                }
              }

              function Oo(e, t, r) {
                return t = bn(t === n ? e.length - 1 : t, 0),
                  function() {
                    for (var n = arguments, i = -1, o = bn(n.length - t, 0), a = oe(o); ++i < o;) a[i] = n[t + i];
                    i = -1;
                    for (var s = oe(t + 1); ++i < t;) s[i] = n[i];
                    return s[t] = r(a), kt(e, this, s)
                  }
              }

              function Ao(e, t) {
                return t.length < 2 ? e : Cr(e, ii(t, 0, -1))
              }

              function Po(e, t) {
                for (var r = e.length, i = yn(t.length, r), o = Pi(e); i--;) {
                  var a = t[i];
                  e[i] = yo(a, r) ? o[a] : n
                }
                return e
              }

              function Mo(e, t) {
                if (("constructor" !== t || "function" != typeof e[t]) && "__proto__" != t) return e[t]
              }
              var Do = No(ti),
                Io = dt || function(e, t) {
                  return ht.setTimeout(e, t)
                },
                Ro = No(ni);

              function jo(e, t, n) {
                var r = t + "";
                return Ro(e, function(e, t) {
                  var n = t.length;
                  if (!n) return e;
                  var r = n - 1;
                  return t[r] = (n > 1 ? "& " : "") + t[r], t = t.join(n > 2 ? ", " : " "), e.replace(ae, "{\n/* [wrapped with " + t + "] */\n")
                }(r, function(e, t) {
                  return St(g, (function(n) {
                    var r = "_." + n[0];
                    t & n[1] && !At(e, r) && e.push(r)
                  })), e.sort()
                }(function(e) {
                  var t = e.match(se);
                  return t ? t[1].split(le) : []
                }(r), n)))
              }

              function No(e) {
                var t = 0,
                  r = 0;
                return function() {
                  var i = wn(),
                    o = 16 - (i - r);
                  if (r = i, o > 0) {
                    if (++t >= 800) return arguments[0]
                  } else t = 0;
                  return e.apply(n, arguments)
                }
              }

              function Lo(e, t) {
                var r = -1,
                  i = e.length,
                  o = i - 1;
                for (t = t === n ? i : t; ++r < t;) {
                  var a = Kr(r, o),
                    s = e[a];
                  e[a] = e[r], e[r] = s
                }
                return e.length = t, e
              }
              var Fo = function(e) {
                var t = Na(e, (function(e) {
                    return 500 === n.size && n.clear(), e
                  })),
                  n = t.cache;
                return t
              }((function(e) {
                var t = [];
                return 46 === e.charCodeAt(0) && t.push(""), e.replace(te, (function(e, n, r, i) {
                  t.push(r ? i.replace(he, "$1") : n || e)
                })), t
              }));

              function Bo(e) {
                if ("string" == typeof e || us(e)) return e;
                var t = e + "";
                return "0" == t && 1 / e == -1 / 0 ? "-0" : t
              }

              function zo(e) {
                if (null != e) {
                  try {
                    return Re.call(e)
                  } catch (e) {}
                  try {
                    return e + ""
                  } catch (e) {}
                }
                return ""
              }

              function Ho(e) {
                if (e instanceof Xn) return e.clone();
                var t = new Vn(e.__wrapped__, e.__chain__);
                return t.__actions__ = Pi(e.__actions__), t.__index__ = e.__index__, t.__values__ = e.__values__, t
              }
              var Uo = $r((function(e, t) {
                  return Ka(e) ? pr(e, _r(t, 1, Ka, !0)) : []
                })),
                Wo = $r((function(e, t) {
                  var r = Jo(t);
                  return Ka(r) && (r = n), Ka(e) ? pr(e, _r(t, 1, Ka, !0), co(r, 2)) : []
                })),
                Vo = $r((function(e, t) {
                  var r = Jo(t);
                  return Ka(r) && (r = n), Ka(e) ? pr(e, _r(t, 1, Ka, !0), n, r) : []
                }));

              function Xo(e, t, n) {
                var r = null == e ? 0 : e.length;
                if (!r) return -1;
                var i = null == n ? 0 : ms(n);
                return i < 0 && (i = bn(r + i, 0)), Ft(e, co(t, 3), i)
              }

              function Go(e, t, r) {
                var i = null == e ? 0 : e.length;
                if (!i) return -1;
                var o = i - 1;
                return r !== n && (o = ms(r), o = r < 0 ? bn(i + o, 0) : yn(o, i - 1)), Ft(e, co(t, 3), o, !0)
              }

              function Yo(e) {
                return (null == e ? 0 : e.length) ? _r(e, 1) : []
              }

              function qo(e) {
                return e && e.length ? e[0] : n
              }
              var Ko = $r((function(e) {
                  var t = Mt(e, _i);
                  return t.length && t[0] === e[0] ? Pr(t) : []
                })),
                Zo = $r((function(e) {
                  var t = Jo(e),
                    r = Mt(e, _i);
                  return t === Jo(r) ? t = n : r.pop(), r.length && r[0] === e[0] ? Pr(r, co(t, 2)) : []
                })),
                $o = $r((function(e) {
                  var t = Jo(e),
                    r = Mt(e, _i);
                  return (t = "function" == typeof t ? t : n) && r.pop(), r.length && r[0] === e[0] ? Pr(r, n, t) : []
                }));

              function Jo(e) {
                var t = null == e ? 0 : e.length;
                return t ? e[t - 1] : n
              }
              var Qo = $r(ea);

              function ea(e, t) {
                return e && e.length && t && t.length ? Yr(e, t) : e
              }
              var ta = ro((function(e, t) {
                var n = null == e ? 0 : e.length,
                  r = sr(e, t);
                return qr(e, Mt(t, (function(e) {
                  return yo(e, n) ? +e : e
                })).sort(Ti)), r
              }));

              function na(e) {
                return null == e ? e : Cn.call(e)
              }
              var ra = $r((function(e) {
                  return hi(_r(e, 1, Ka, !0))
                })),
                ia = $r((function(e) {
                  var t = Jo(e);
                  return Ka(t) && (t = n), hi(_r(e, 1, Ka, !0), co(t, 2))
                })),
                oa = $r((function(e) {
                  var t = Jo(e);
                  return t = "function" == typeof t ? t : n, hi(_r(e, 1, Ka, !0), n, t)
                }));

              function aa(e) {
                if (!e || !e.length) return [];
                var t = 0;
                return e = Ot(e, (function(e) {
                  if (Ka(e)) return t = bn(e.length, t), !0
                })), Yt(t, (function(t) {
                  return Mt(e, Wt(t))
                }))
              }

              function sa(e, t) {
                if (!e || !e.length) return [];
                var r = aa(e);
                return null == t ? r : Mt(r, (function(e) {
                  return kt(t, n, e)
                }))
              }
              var la = $r((function(e, t) {
                  return Ka(e) ? pr(e, t) : []
                })),
                ca = $r((function(e) {
                  return mi(Ot(e, Ka))
                })),
                ua = $r((function(e) {
                  var t = Jo(e);
                  return Ka(t) && (t = n), mi(Ot(e, Ka), co(t, 2))
                })),
                ha = $r((function(e) {
                  var t = Jo(e);
                  return t = "function" == typeof t ? t : n, mi(Ot(e, Ka), n, t)
                })),
                pa = $r(aa);
              var da = $r((function(e) {
                var t = e.length,
                  r = t > 1 ? e[t - 1] : n;
                return r = "function" == typeof r ? (e.pop(), r) : n, sa(e, r)
              }));

              function fa(e) {
                var t = Hn(e);
                return t.__chain__ = !0, t
              }

              function ga(e, t) {
                return t(e)
              }
              var ma = ro((function(e) {
                var t = e.length,
                  r = t ? e[0] : 0,
                  i = this.__wrapped__,
                  o = function(t) {
                    return sr(t, e)
                  };
                return !(t > 1 || this.__actions__.length) && i instanceof Xn && yo(r) ? ((i = i.slice(r, +r + (t ? 1 : 0))).__actions__.push({
                  func: ga,
                  args: [o],
                  thisArg: n
                }), new Vn(i, this.__chain__).thru((function(e) {
                  return t && !e.length && e.push(n), e
                }))) : this.thru(o)
              }));
              var va = Di((function(e, t, n) {
                je.call(e, n) ? ++e[n] : ar(e, n, 1)
              }));
              var _a = Bi(Xo),
                ba = Bi(Go);

              function ya(e, t) {
                return (Ga(e) ? St : dr)(e, co(t, 3))
              }

              function wa(e, t) {
                return (Ga(e) ? Et : fr)(e, co(t, 3))
              }
              var xa = Di((function(e, t, n) {
                je.call(e, n) ? e[n].push(t) : ar(e, n, [t])
              }));
              var ka = $r((function(e, t, n) {
                  var r = -1,
                    i = "function" == typeof t,
                    o = qa(e) ? oe(e.length) : [];
                  return dr(e, (function(e) {
                    o[++r] = i ? kt(t, e, n) : Mr(e, t, n)
                  })), o
                })),
                Ca = Di((function(e, t, n) {
                  ar(e, n, t)
                }));

              function Sa(e, t) {
                return (Ga(e) ? Mt : zr)(e, co(t, 3))
              }
              var Ea = Di((function(e, t, n) {
                e[n ? 0 : 1].push(t)
              }), (function() {
                return [
                  [],
                  []
                ]
              }));
              var Ta = $r((function(e, t) {
                  if (null == e) return [];
                  var n = t.length;
                  return n > 1 && wo(e, t[0], t[1]) ? t = [] : n > 2 && wo(t[0], t[1], t[2]) && (t = [t[0]]), Xr(e, _r(t, 1), [])
                })),
                Oa = pt || function() {
                  return ht.Date.now()
                };

              function Aa(e, t, r) {
                return t = r ? n : t, t = e && null == t ? e.length : t, Ji(e, c, n, n, n, n, t)
              }

              function Pa(e, t) {
                var i;
                if ("function" != typeof t) throw new Ae(r);
                return e = ms(e),
                  function() {
                    return --e > 0 && (i = t.apply(this, arguments)), e <= 1 && (t = n), i
                  }
              }
              var Ma = $r((function(e, t, n) {
                  var r = 1;
                  if (n.length) {
                    var i = cn(n, lo(Ma));
                    r |= s
                  }
                  return Ji(e, r, t, n, i)
                })),
                Da = $r((function(e, t, n) {
                  var r = 3;
                  if (n.length) {
                    var i = cn(n, lo(Da));
                    r |= s
                  }
                  return Ji(t, r, e, n, i)
                }));

              function Ia(e, t, i) {
                var o, a, s, l, c, u, h = 0,
                  p = !1,
                  d = !1,
                  f = !0;
                if ("function" != typeof e) throw new Ae(r);

                function g(t) {
                  var r = o,
                    i = a;
                  return o = a = n, h = t, l = e.apply(i, r)
                }

                function m(e) {
                  return h = e, c = Io(_, t), p ? g(e) : l
                }

                function v(e) {
                  var r = e - u;
                  return u === n || r >= t || r < 0 || d && e - h >= s
                }

                function _() {
                  var e = Oa();
                  if (v(e)) return b(e);
                  c = Io(_, function(e) {
                    var n = t - (e - u);
                    return d ? yn(n, s - (e - h)) : n
                  }(e))
                }

                function b(e) {
                  return c = n, f && o ? g(e) : (o = a = n, l)
                }

                function y() {
                  var e = Oa(),
                    r = v(e);
                  if (o = arguments, a = this, u = e, r) {
                    if (c === n) return m(u);
                    if (d) return ki(c), c = Io(_, t), g(u)
                  }
                  return c === n && (c = Io(_, t)), l
                }
                return t = _s(t) || 0, ns(i) && (p = !!i.leading, s = (d = "maxWait" in i) ? bn(_s(i.maxWait) || 0, t) : s, f = "trailing" in i ? !!i.trailing : f), y.cancel = function() {
                  c !== n && ki(c), h = 0, o = u = a = c = n
                }, y.flush = function() {
                  return c === n ? l : b(Oa())
                }, y
              }
              var Ra = $r((function(e, t) {
                  return hr(e, 1, t)
                })),
                ja = $r((function(e, t, n) {
                  return hr(e, _s(t) || 0, n)
                }));

              function Na(e, t) {
                if ("function" != typeof e || null != t && "function" != typeof t) throw new Ae(r);
                var n = function() {
                  var r = arguments,
                    i = t ? t.apply(this, r) : r[0],
                    o = n.cache;
                  if (o.has(i)) return o.get(i);
                  var a = e.apply(this, r);
                  return n.cache = o.set(i, a) || o, a
                };
                return n.cache = new(Na.Cache || qn), n
              }

              function La(e) {
                if ("function" != typeof e) throw new Ae(r);
                return function() {
                  var t = arguments;
                  switch (t.length) {
                    case 0:
                      return !e.call(this);
                    case 1:
                      return !e.call(this, t[0]);
                    case 2:
                      return !e.call(this, t[0], t[1]);
                    case 3:
                      return !e.call(this, t[0], t[1], t[2])
                  }
                  return !e.apply(this, t)
                }
              }
              Na.Cache = qn;
              var Fa = wi((function(e, t) {
                  var n = (t = 1 == t.length && Ga(t[0]) ? Mt(t[0], Kt(co())) : Mt(_r(t, 1), Kt(co()))).length;
                  return $r((function(r) {
                    for (var i = -1, o = yn(r.length, n); ++i < o;) r[i] = t[i].call(this, r[i]);
                    return kt(e, this, r)
                  }))
                })),
                Ba = $r((function(e, t) {
                  var r = cn(t, lo(Ba));
                  return Ji(e, s, n, t, r)
                })),
                za = $r((function(e, t) {
                  var r = cn(t, lo(za));
                  return Ji(e, l, n, t, r)
                })),
                Ha = ro((function(e, t) {
                  return Ji(e, u, n, n, n, t)
                }));

              function Ua(e, t) {
                return e === t || e != e && t != t
              }
              var Wa = Yi(Tr),
                Va = Yi((function(e, t) {
                  return e >= t
                })),
                Xa = Dr(function() {
                  return arguments
                }()) ? Dr : function(e) {
                  return rs(e) && je.call(e, "callee") && !qe.call(e, "callee")
                },
                Ga = oe.isArray,
                Ya = vt ? Kt(vt) : function(e) {
                  return rs(e) && Er(e) == D
                };

              function qa(e) {
                return null != e && ts(e.length) && !Qa(e)
              }

              function Ka(e) {
                return rs(e) && qa(e)
              }
              var Za = Vt || _l,
                $a = _t ? Kt(_t) : function(e) {
                  return rs(e) && Er(e) == b
                };

              function Ja(e) {
                if (!rs(e)) return !1;
                var t = Er(e);
                return t == y || "[object DOMException]" == t || "string" == typeof e.message && "string" == typeof e.name && !as(e)
              }

              function Qa(e) {
                if (!ns(e)) return !1;
                var t = Er(e);
                return t == w || t == x || "[object AsyncFunction]" == t || "[object Proxy]" == t
              }

              function es(e) {
                return "number" == typeof e && e == ms(e)
              }

              function ts(e) {
                return "number" == typeof e && e > -1 && e % 1 == 0 && e <= p
              }

              function ns(e) {
                var t = typeof e;
                return null != e && ("object" == t || "function" == t)
              }

              function rs(e) {
                return null != e && "object" == typeof e
              }
              var is = bt ? Kt(bt) : function(e) {
                return rs(e) && mo(e) == k
              };

              function os(e) {
                return "number" == typeof e || rs(e) && Er(e) == C
              }

              function as(e) {
                if (!rs(e) || Er(e) != S) return !1;
                var t = Ge(e);
                if (null === t) return !0;
                var n = je.call(t, "constructor") && t.constructor;
                return "function" == typeof n && n instanceof n && Re.call(n) == Be
              }
              var ss = yt ? Kt(yt) : function(e) {
                return rs(e) && Er(e) == T
              };
              var ls = wt ? Kt(wt) : function(e) {
                return rs(e) && mo(e) == O
              };

              function cs(e) {
                return "string" == typeof e || !Ga(e) && rs(e) && Er(e) == A
              }

              function us(e) {
                return "symbol" == typeof e || rs(e) && Er(e) == P
              }
              var hs = xt ? Kt(xt) : function(e) {
                return rs(e) && ts(e.length) && !!it[Er(e)]
              };
              var ps = Yi(Br),
                ds = Yi((function(e, t) {
                  return e <= t
                }));

              function fs(e) {
                if (!e) return [];
                if (qa(e)) return cs(e) ? dn(e) : Pi(e);
                if (et && e[et]) return function(e) {
                  for (var t, n = []; !(t = e.next()).done;) n.push(t.value);
                  return n
                }(e[et]());
                var t = mo(e);
                return (t == k ? sn : t == O ? un : Us)(e)
              }

              function gs(e) {
                return e ? (e = _s(e)) === h || e === -1 / 0 ? 17976931348623157e292 * (e < 0 ? -1 : 1) : e == e ? e : 0 : 0 === e ? e : 0
              }

              function ms(e) {
                var t = gs(e),
                  n = t % 1;
                return t == t ? n ? t - n : t : 0
              }

              function vs(e) {
                return e ? lr(ms(e), 0, f) : 0
              }

              function _s(e) {
                if ("number" == typeof e) return e;
                if (us(e)) return d;
                if (ns(e)) {
                  var t = "function" == typeof e.valueOf ? e.valueOf() : e;
                  e = ns(t) ? t + "" : t
                }
                if ("string" != typeof e) return 0 === e ? e : +e;
                e = qt(e);
                var n = ge.test(e);
                return n || ve.test(e) ? lt(e.slice(2), n ? 2 : 8) : fe.test(e) ? d : +e
              }

              function bs(e) {
                return Mi(e, Rs(e))
              }

              function ys(e) {
                return null == e ? "" : ui(e)
              }
              var ws = Ii((function(e, t) {
                  if (So(t) || qa(t)) Mi(t, Is(t), e);
                  else
                    for (var n in t) je.call(t, n) && nr(e, n, t[n])
                })),
                xs = Ii((function(e, t) {
                  Mi(t, Rs(t), e)
                })),
                ks = Ii((function(e, t, n, r) {
                  Mi(t, Rs(t), e, r)
                })),
                Cs = Ii((function(e, t, n, r) {
                  Mi(t, Is(t), e, r)
                })),
                Ss = ro(sr);
              var Es = $r((function(e, t) {
                  e = Ee(e);
                  var r = -1,
                    i = t.length,
                    o = i > 2 ? t[2] : n;
                  for (o && wo(t[0], t[1], o) && (i = 1); ++r < i;)
                    for (var a = t[r], s = Rs(a), l = -1, c = s.length; ++l < c;) {
                      var u = s[l],
                        h = e[u];
                      (h === n || Ua(h, De[u]) && !je.call(e, u)) && (e[u] = a[u])
                    }
                  return e
                })),
                Ts = $r((function(e) {
                  return e.push(n, eo), kt(Ns, n, e)
                }));

              function Os(e, t, r) {
                var i = null == e ? n : Cr(e, t);
                return i === n ? r : i
              }

              function As(e, t) {
                return null != e && vo(e, t, Ar)
              }
              var Ps = Ui((function(e, t, n) {
                  null != t && "function" != typeof t.toString && (t = Fe.call(t)), e[t] = n
                }), nl(ol)),
                Ms = Ui((function(e, t, n) {
                  null != t && "function" != typeof t.toString && (t = Fe.call(t)), je.call(e, t) ? e[t].push(n) : e[t] = [n]
                }), co),
                Ds = $r(Mr);

              function Is(e) {
                return qa(e) ? $n(e) : Lr(e)
              }

              function Rs(e) {
                return qa(e) ? $n(e, !0) : Fr(e)
              }
              var js = Ii((function(e, t, n) {
                  Wr(e, t, n)
                })),
                Ns = Ii((function(e, t, n, r) {
                  Wr(e, t, n, r)
                })),
                Ls = ro((function(e, t) {
                  var n = {};
                  if (null == e) return n;
                  var r = !1;
                  t = Mt(t, (function(t) {
                    return t = yi(t, e), r || (r = t.length > 1), t
                  })), Mi(e, oo(e), n), r && (n = cr(n, 7, to));
                  for (var i = t.length; i--;) pi(n, t[i]);
                  return n
                }));
              var Fs = ro((function(e, t) {
                return null == e ? {} : function(e, t) {
                  return Gr(e, t, (function(t, n) {
                    return As(e, n)
                  }))
                }(e, t)
              }));

              function Bs(e, t) {
                if (null == e) return {};
                var n = Mt(oo(e), (function(e) {
                  return [e]
                }));
                return t = co(t), Gr(e, n, (function(e, n) {
                  return t(e, n[0])
                }))
              }
              var zs = $i(Is),
                Hs = $i(Rs);

              function Us(e) {
                return null == e ? [] : Zt(e, Is(e))
              }
              var Ws = Li((function(e, t, n) {
                return t = t.toLowerCase(), e + (n ? Vs(t) : t)
              }));

              function Vs(e) {
                return Js(ys(e).toLowerCase())
              }

              function Xs(e) {
                return (e = ys(e)) && e.replace(be, nn).replace($e, "")
              }
              var Gs = Li((function(e, t, n) {
                  return e + (n ? "-" : "") + t.toLowerCase()
                })),
                Ys = Li((function(e, t, n) {
                  return e + (n ? " " : "") + t.toLowerCase()
                })),
                qs = Ni("toLowerCase");
              var Ks = Li((function(e, t, n) {
                return e + (n ? "_" : "") + t.toLowerCase()
              }));
              var Zs = Li((function(e, t, n) {
                return e + (n ? " " : "") + Js(t)
              }));
              var $s = Li((function(e, t, n) {
                  return e + (n ? " " : "") + t.toUpperCase()
                })),
                Js = Ni("toUpperCase");

              function Qs(e, t, r) {
                return e = ys(e), (t = r ? n : t) === n ? function(e) {
                  return tt.test(e)
                }(e) ? function(e) {
                  return e.match(Qe) || []
                }(e) : function(e) {
                  return e.match(ce) || []
                }(e) : e.match(t) || []
              }
              var el = $r((function(e, t) {
                  try {
                    return kt(e, n, t)
                  } catch (e) {
                    return Ja(e) ? e : new ke(e)
                  }
                })),
                tl = ro((function(e, t) {
                  return St(t, (function(t) {
                    t = Bo(t), ar(e, t, Ma(e[t], e))
                  })), e
                }));

              function nl(e) {
                return function() {
                  return e
                }
              }
              var rl = zi(),
                il = zi(!0);

              function ol(e) {
                return e
              }

              function al(e) {
                return Nr("function" == typeof e ? e : cr(e, 1))
              }
              var sl = $r((function(e, t) {
                  return function(n) {
                    return Mr(n, e, t)
                  }
                })),
                ll = $r((function(e, t) {
                  return function(n) {
                    return Mr(e, n, t)
                  }
                }));

              function cl(e, t, n) {
                var r = Is(t),
                  i = kr(t, r);
                null != n || ns(t) && (i.length || !r.length) || (n = t, t = e, e = this, i = kr(t, Is(t)));
                var o = !(ns(n) && "chain" in n && !n.chain),
                  a = Qa(e);
                return St(i, (function(n) {
                  var r = t[n];
                  e[n] = r, a && (e.prototype[n] = function() {
                    var t = this.__chain__;
                    if (o || t) {
                      var n = e(this.__wrapped__),
                        i = n.__actions__ = Pi(this.__actions__);
                      return i.push({
                        func: r,
                        args: arguments,
                        thisArg: e
                      }), n.__chain__ = t, n
                    }
                    return r.apply(e, Dt([this.value()], arguments))
                  })
                })), e
              }

              function ul() {}
              var hl = Vi(Mt),
                pl = Vi(Tt),
                dl = Vi(jt);

              function fl(e) {
                return xo(e) ? Wt(Bo(e)) : function(e) {
                  return function(t) {
                    return Cr(t, e)
                  }
                }(e)
              }
              var gl = Gi(),
                ml = Gi(!0);

              function vl() {
                return []
              }

              function _l() {
                return !1
              }
              var bl = Wi((function(e, t) {
                  return e + t
                }), 0),
                yl = Ki("ceil"),
                wl = Wi((function(e, t) {
                  return e / t
                }), 1),
                xl = Ki("floor");
              var kl, Cl = Wi((function(e, t) {
                  return e * t
                }), 1),
                Sl = Ki("round"),
                El = Wi((function(e, t) {
                  return e - t
                }), 0);
              return Hn.after = function(e, t) {
                if ("function" != typeof t) throw new Ae(r);
                return e = ms(e),
                  function() {
                    if (--e < 1) return t.apply(this, arguments)
                  }
              }, Hn.ary = Aa, Hn.assign = ws, Hn.assignIn = xs, Hn.assignInWith = ks, Hn.assignWith = Cs, Hn.at = Ss, Hn.before = Pa, Hn.bind = Ma, Hn.bindAll = tl, Hn.bindKey = Da, Hn.castArray = function() {
                if (!arguments.length) return [];
                var e = arguments[0];
                return Ga(e) ? e : [e]
              }, Hn.chain = fa, Hn.chunk = function(e, t, r) {
                t = (r ? wo(e, t, r) : t === n) ? 1 : bn(ms(t), 0);
                var i = null == e ? 0 : e.length;
                if (!i || t < 1) return [];
                for (var o = 0, a = 0, s = oe(gt(i / t)); o < i;) s[a++] = ii(e, o, o += t);
                return s
              }, Hn.compact = function(e) {
                for (var t = -1, n = null == e ? 0 : e.length, r = 0, i = []; ++t < n;) {
                  var o = e[t];
                  o && (i[r++] = o)
                }
                return i
              }, Hn.concat = function() {
                var e = arguments.length;
                if (!e) return [];
                for (var t = oe(e - 1), n = arguments[0], r = e; r--;) t[r - 1] = arguments[r];
                return Dt(Ga(n) ? Pi(n) : [n], _r(t, 1))
              }, Hn.cond = function(e) {
                var t = null == e ? 0 : e.length,
                  n = co();
                return e = t ? Mt(e, (function(e) {
                  if ("function" != typeof e[1]) throw new Ae(r);
                  return [n(e[0]), e[1]]
                })) : [], $r((function(n) {
                  for (var r = -1; ++r < t;) {
                    var i = e[r];
                    if (kt(i[0], this, n)) return kt(i[1], this, n)
                  }
                }))
              }, Hn.conforms = function(e) {
                return function(e) {
                  var t = Is(e);
                  return function(n) {
                    return ur(n, e, t)
                  }
                }(cr(e, 1))
              }, Hn.constant = nl, Hn.countBy = va, Hn.create = function(e, t) {
                var n = Un(e);
                return null == t ? n : or(n, t)
              }, Hn.curry = function e(t, r, i) {
                var o = Ji(t, 8, n, n, n, n, n, r = i ? n : r);
                return o.placeholder = e.placeholder, o
              }, Hn.curryRight = function e(t, r, i) {
                var o = Ji(t, a, n, n, n, n, n, r = i ? n : r);
                return o.placeholder = e.placeholder, o
              }, Hn.debounce = Ia, Hn.defaults = Es, Hn.defaultsDeep = Ts, Hn.defer = Ra, Hn.delay = ja, Hn.difference = Uo, Hn.differenceBy = Wo, Hn.differenceWith = Vo, Hn.drop = function(e, t, r) {
                var i = null == e ? 0 : e.length;
                return i ? ii(e, (t = r || t === n ? 1 : ms(t)) < 0 ? 0 : t, i) : []
              }, Hn.dropRight = function(e, t, r) {
                var i = null == e ? 0 : e.length;
                return i ? ii(e, 0, (t = i - (t = r || t === n ? 1 : ms(t))) < 0 ? 0 : t) : []
              }, Hn.dropRightWhile = function(e, t) {
                return e && e.length ? fi(e, co(t, 3), !0, !0) : []
              }, Hn.dropWhile = function(e, t) {
                return e && e.length ? fi(e, co(t, 3), !0) : []
              }, Hn.fill = function(e, t, r, i) {
                var o = null == e ? 0 : e.length;
                return o ? (r && "number" != typeof r && wo(e, t, r) && (r = 0, i = o), function(e, t, r, i) {
                  var o = e.length;
                  for ((r = ms(r)) < 0 && (r = -r > o ? 0 : o + r), (i = i === n || i > o ? o : ms(i)) < 0 && (i += o), i = r > i ? 0 : vs(i); r < i;) e[r++] = t;
                  return e
                }(e, t, r, i)) : []
              }, Hn.filter = function(e, t) {
                return (Ga(e) ? Ot : vr)(e, co(t, 3))
              }, Hn.flatMap = function(e, t) {
                return _r(Sa(e, t), 1)
              }, Hn.flatMapDeep = function(e, t) {
                return _r(Sa(e, t), h)
              }, Hn.flatMapDepth = function(e, t, r) {
                return r = r === n ? 1 : ms(r), _r(Sa(e, t), r)
              }, Hn.flatten = Yo, Hn.flattenDeep = function(e) {
                return (null == e ? 0 : e.length) ? _r(e, h) : []
              }, Hn.flattenDepth = function(e, t) {
                return (null == e ? 0 : e.length) ? _r(e, t = t === n ? 1 : ms(t)) : []
              }, Hn.flip = function(e) {
                return Ji(e, 512)
              }, Hn.flow = rl, Hn.flowRight = il, Hn.fromPairs = function(e) {
                for (var t = -1, n = null == e ? 0 : e.length, r = {}; ++t < n;) {
                  var i = e[t];
                  r[i[0]] = i[1]
                }
                return r
              }, Hn.functions = function(e) {
                return null == e ? [] : kr(e, Is(e))
              }, Hn.functionsIn = function(e) {
                return null == e ? [] : kr(e, Rs(e))
              }, Hn.groupBy = xa, Hn.initial = function(e) {
                return (null == e ? 0 : e.length) ? ii(e, 0, -1) : []
              }, Hn.intersection = Ko, Hn.intersectionBy = Zo, Hn.intersectionWith = $o, Hn.invert = Ps, Hn.invertBy = Ms, Hn.invokeMap = ka, Hn.iteratee = al, Hn.keyBy = Ca, Hn.keys = Is, Hn.keysIn = Rs, Hn.map = Sa, Hn.mapKeys = function(
                e, t) {
                var n = {};
                return t = co(t, 3), wr(e, (function(e, r, i) {
                  ar(n, t(e, r, i), e)
                })), n
              }, Hn.mapValues = function(e, t) {
                var n = {};
                return t = co(t, 3), wr(e, (function(e, r, i) {
                  ar(n, r, t(e, r, i))
                })), n
              }, Hn.matches = function(e) {
                return Hr(cr(e, 1))
              }, Hn.matchesProperty = function(e, t) {
                return Ur(e, cr(t, 1))
              }, Hn.memoize = Na, Hn.merge = js, Hn.mergeWith = Ns, Hn.method = sl, Hn.methodOf = ll, Hn.mixin = cl, Hn.negate = La, Hn.nthArg = function(e) {
                return e = ms(e), $r((function(t) {
                  return Vr(t, e)
                }))
              }, Hn.omit = Ls, Hn.omitBy = function(e, t) {
                return Bs(e, La(co(t)))
              }, Hn.once = function(e) {
                return Pa(2, e)
              }, Hn.orderBy = function(e, t, r, i) {
                return null == e ? [] : (Ga(t) || (t = null == t ? [] : [t]), Ga(r = i ? n : r) || (r = null == r ? [] : [r]), Xr(e, t, r))
              }, Hn.over = hl, Hn.overArgs = Fa, Hn.overEvery = pl, Hn.overSome = dl, Hn.partial = Ba, Hn.partialRight = za, Hn.partition = Ea, Hn.pick = Fs, Hn.pickBy = Bs, Hn.property = fl, Hn.propertyOf = function(e) {
                return function(t) {
                  return null == e ? n : Cr(e, t)
                }
              }, Hn.pull = Qo, Hn.pullAll = ea, Hn.pullAllBy = function(e, t, n) {
                return e && e.length && t && t.length ? Yr(e, t, co(n, 2)) : e
              }, Hn.pullAllWith = function(e, t, r) {
                return e && e.length && t && t.length ? Yr(e, t, n, r) : e
              }, Hn.pullAt = ta, Hn.range = gl, Hn.rangeRight = ml, Hn.rearg = Ha, Hn.reject = function(e, t) {
                return (Ga(e) ? Ot : vr)(e, La(co(t, 3)))
              }, Hn.remove = function(e, t) {
                var n = [];
                if (!e || !e.length) return n;
                var r = -1,
                  i = [],
                  o = e.length;
                for (t = co(t, 3); ++r < o;) {
                  var a = e[r];
                  t(a, r, e) && (n.push(a), i.push(r))
                }
                return qr(e, i), n
              }, Hn.rest = function(e, t) {
                if ("function" != typeof e) throw new Ae(r);
                return $r(e, t = t === n ? t : ms(t))
              }, Hn.reverse = na, Hn.sampleSize = function(e, t, r) {
                return t = (r ? wo(e, t, r) : t === n) ? 1 : ms(t), (Ga(e) ? Qn : Qr)(e, t)
              }, Hn.set = function(e, t, n) {
                return null == e ? e : ei(e, t, n)
              }, Hn.setWith = function(e, t, r, i) {
                return i = "function" == typeof i ? i : n, null == e ? e : ei(e, t, r, i)
              }, Hn.shuffle = function(e) {
                return (Ga(e) ? er : ri)(e)
              }, Hn.slice = function(e, t, r) {
                var i = null == e ? 0 : e.length;
                return i ? (r && "number" != typeof r && wo(e, t, r) ? (t = 0, r = i) : (t = null == t ? 0 : ms(t), r = r === n ? i : ms(r)), ii(e, t, r)) : []
              }, Hn.sortBy = Ta, Hn.sortedUniq = function(e) {
                return e && e.length ? li(e) : []
              }, Hn.sortedUniqBy = function(e, t) {
                return e && e.length ? li(e, co(t, 2)) : []
              }, Hn.split = function(e, t, r) {
                return r && "number" != typeof r && wo(e, t, r) && (t = r = n), (r = r === n ? f : r >>> 0) ? (e = ys(e)) && ("string" == typeof t || null != t && !ss(t)) && !(t = ui(t)) && an(e) ? xi(dn(e), 0, r) : e.split(t, r) : []
              }, Hn.spread = function(e, t) {
                if ("function" != typeof e) throw new Ae(r);
                return t = null == t ? 0 : bn(ms(t), 0), $r((function(n) {
                  var r = n[t],
                    i = xi(n, 0, t);
                  return r && Dt(i, r), kt(e, this, i)
                }))
              }, Hn.tail = function(e) {
                var t = null == e ? 0 : e.length;
                return t ? ii(e, 1, t) : []
              }, Hn.take = function(e, t, r) {
                return e && e.length ? ii(e, 0, (t = r || t === n ? 1 : ms(t)) < 0 ? 0 : t) : []
              }, Hn.takeRight = function(e, t, r) {
                var i = null == e ? 0 : e.length;
                return i ? ii(e, (t = i - (t = r || t === n ? 1 : ms(t))) < 0 ? 0 : t, i) : []
              }, Hn.takeRightWhile = function(e, t) {
                return e && e.length ? fi(e, co(t, 3), !1, !0) : []
              }, Hn.takeWhile = function(e, t) {
                return e && e.length ? fi(e, co(t, 3)) : []
              }, Hn.tap = function(e, t) {
                return t(e), e
              }, Hn.throttle = function(e, t, n) {
                var i = !0,
                  o = !0;
                if ("function" != typeof e) throw new Ae(r);
                return ns(n) && (i = "leading" in n ? !!n.leading : i, o = "trailing" in n ? !!n.trailing : o), Ia(e, t, {
                  leading: i,
                  maxWait: t,
                  trailing: o
                })
              }, Hn.thru = ga, Hn.toArray = fs, Hn.toPairs = zs, Hn.toPairsIn = Hs, Hn.toPath = function(e) {
                return Ga(e) ? Mt(e, Bo) : us(e) ? [e] : Pi(Fo(ys(e)))
              }, Hn.toPlainObject = bs, Hn.transform = function(e, t, n) {
                var r = Ga(e),
                  i = r || Za(e) || hs(e);
                if (t = co(t, 4), null == n) {
                  var o = e && e.constructor;
                  n = i ? r ? new o : [] : ns(e) && Qa(o) ? Un(Ge(e)) : {}
                }
                return (i ? St : wr)(e, (function(e, r, i) {
                  return t(n, e, r, i)
                })), n
              }, Hn.unary = function(e) {
                return Aa(e, 1)
              }, Hn.union = ra, Hn.unionBy = ia, Hn.unionWith = oa, Hn.uniq = function(e) {
                return e && e.length ? hi(e) : []
              }, Hn.uniqBy = function(e, t) {
                return e && e.length ? hi(e, co(t, 2)) : []
              }, Hn.uniqWith = function(e, t) {
                return t = "function" == typeof t ? t : n, e && e.length ? hi(e, n, t) : []
              }, Hn.unset = function(e, t) {
                return null == e || pi(e, t)
              }, Hn.unzip = aa, Hn.unzipWith = sa, Hn.update = function(e, t, n) {
                return null == e ? e : di(e, t, bi(n))
              }, Hn.updateWith = function(e, t, r, i) {
                return i = "function" == typeof i ? i : n, null == e ? e : di(e, t, bi(r), i)
              }, Hn.values = Us, Hn.valuesIn = function(e) {
                return null == e ? [] : Zt(e, Rs(e))
              }, Hn.without = la, Hn.words = Qs, Hn.wrap = function(e, t) {
                return Ba(bi(t), e)
              }, Hn.xor = ca, Hn.xorBy = ua, Hn.xorWith = ha, Hn.zip = pa, Hn.zipObject = function(e, t) {
                return vi(e || [], t || [], nr)
              }, Hn.zipObjectDeep = function(e, t) {
                return vi(e || [], t || [], ei)
              }, Hn.zipWith = da, Hn.entries = zs, Hn.entriesIn = Hs, Hn.extend = xs, Hn.extendWith = ks, cl(Hn, Hn), Hn.add = bl, Hn.attempt = el, Hn.camelCase = Ws, Hn.capitalize = Vs, Hn.ceil = yl, Hn.clamp = function(e, t, r) {
                return r === n && (r = t, t = n), r !== n && (r = (r = _s(r)) == r ? r : 0), t !== n && (t = (t = _s(t)) == t ? t : 0), lr(_s(e), t, r)
              }, Hn.clone = function(e) {
                return cr(e, 4)
              }, Hn.cloneDeep = function(e) {
                return cr(e, 5)
              }, Hn.cloneDeepWith = function(e, t) {
                return cr(e, 5, t = "function" == typeof t ? t : n)
              }, Hn.cloneWith = function(e, t) {
                return cr(e, 4, t = "function" == typeof t ? t : n)
              }, Hn.conformsTo = function(e, t) {
                return null == t || ur(e, t, Is(t))
              }, Hn.deburr = Xs, Hn.defaultTo = function(e, t) {
                return null == e || e != e ? t : e
              }, Hn.divide = wl, Hn.endsWith = function(e, t, r) {
                e = ys(e), t = ui(t);
                var i = e.length,
                  o = r = r === n ? i : lr(ms(r), 0, i);
                return (r -= t.length) >= 0 && e.slice(r, o) == t
              }, Hn.eq = Ua, Hn.escape = function(e) {
                return (e = ys(e)) && K.test(e) ? e.replace(Y, rn) : e
              }, Hn.escapeRegExp = function(e) {
                return (e = ys(e)) && re.test(e) ? e.replace(ne, "\\$&") : e
              }, Hn.every = function(e, t, r) {
                var i = Ga(e) ? Tt : gr;
                return r && wo(e, t, r) && (t = n), i(e, co(t, 3))
              }, Hn.find = _a, Hn.findIndex = Xo, Hn.findKey = function(e, t) {
                return Lt(e, co(t, 3), wr)
              }, Hn.findLast = ba, Hn.findLastIndex = Go, Hn.findLastKey = function(e, t) {
                return Lt(e, co(t, 3), xr)
              }, Hn.floor = xl, Hn.forEach = ya, Hn.forEachRight = wa, Hn.forIn = function(e, t) {
                return null == e ? e : br(e, co(t, 3), Rs)
              }, Hn.forInRight = function(e, t) {
                return null == e ? e : yr(e, co(t, 3), Rs)
              }, Hn.forOwn = function(e, t) {
                return e && wr(e, co(t, 3))
              }, Hn.forOwnRight = function(e, t) {
                return e && xr(e, co(t, 3))
              }, Hn.get = Os, Hn.gt = Wa, Hn.gte = Va, Hn.has = function(e, t) {
                return null != e && vo(e, t, Or)
              }, Hn.hasIn = As, Hn.head = qo, Hn.identity = ol, Hn.includes = function(e, t, n, r) {
                e = qa(e) ? e : Us(e), n = n && !r ? ms(n) : 0;
                var i = e.length;
                return n < 0 && (n = bn(i + n, 0)), cs(e) ? n <= i && e.indexOf(t, n) > -1 : !!i && Bt(e, t, n) > -1
              }, Hn.indexOf = function(e, t, n) {
                var r = null == e ? 0 : e.length;
                if (!r) return -1;
                var i = null == n ? 0 : ms(n);
                return i < 0 && (i = bn(r + i, 0)), Bt(e, t, i)
              }, Hn.inRange = function(e, t, r) {
                return t = gs(t), r === n ? (r = t, t = 0) : r = gs(r),
                  function(e, t, n) {
                    return e >= yn(t, n) && e < bn(t, n)
                  }(e = _s(e), t, r)
              }, Hn.invoke = Ds, Hn.isArguments = Xa, Hn.isArray = Ga, Hn.isArrayBuffer = Ya, Hn.isArrayLike = qa, Hn.isArrayLikeObject = Ka, Hn.isBoolean = function(e) {
                return !0 === e || !1 === e || rs(e) && Er(e) == _
              }, Hn.isBuffer = Za, Hn.isDate = $a, Hn.isElement = function(e) {
                return rs(e) && 1 === e.nodeType && !as(e)
              }, Hn.isEmpty = function(e) {
                if (null == e) return !0;
                if (qa(e) && (Ga(e) || "string" == typeof e || "function" == typeof e.splice || Za(e) || hs(e) || Xa(e))) return !e.length;
                var t = mo(e);
                if (t == k || t == O) return !e.size;
                if (So(e)) return !Lr(e).length;
                for (var n in e)
                  if (je.call(e, n)) return !1;
                return !0
              }, Hn.isEqual = function(e, t) {
                return Ir(e, t)
              }, Hn.isEqualWith = function(e, t, r) {
                var i = (r = "function" == typeof r ? r : n) ? r(e, t) : n;
                return i === n ? Ir(e, t, n, r) : !!i
              }, Hn.isError = Ja, Hn.isFinite = function(e) {
                return "number" == typeof e && en(e)
              }, Hn.isFunction = Qa, Hn.isInteger = es, Hn.isLength = ts, Hn.isMap = is, Hn.isMatch = function(e, t) {
                return e === t || Rr(e, t, ho(t))
              }, Hn.isMatchWith = function(e, t, r) {
                return r = "function" == typeof r ? r : n, Rr(e, t, ho(t), r)
              }, Hn.isNaN = function(e) {
                return os(e) && e != +e
              }, Hn.isNative = function(e) {
                if (Co(e)) throw new ke("Unsupported core-js use. Try https://npms.io/search?q=ponyfill.");
                return jr(e)
              }, Hn.isNil = function(e) {
                return null == e
              }, Hn.isNull = function(e) {
                return null === e
              }, Hn.isNumber = os, Hn.isObject = ns, Hn.isObjectLike = rs, Hn.isPlainObject = as, Hn.isRegExp = ss, Hn.isSafeInteger = function(e) {
                return es(e) && e >= -9007199254740991 && e <= p
              }, Hn.isSet = ls, Hn.isString = cs, Hn.isSymbol = us, Hn.isTypedArray = hs, Hn.isUndefined = function(e) {
                return e === n
              }, Hn.isWeakMap = function(e) {
                return rs(e) && mo(e) == M
              }, Hn.isWeakSet = function(e) {
                return rs(e) && "[object WeakSet]" == Er(e)
              }, Hn.join = function(e, t) {
                return null == e ? "" : vn.call(e, t)
              }, Hn.kebabCase = Gs, Hn.last = Jo, Hn.lastIndexOf = function(e, t, r) {
                var i = null == e ? 0 : e.length;
                if (!i) return -1;
                var o = i;
                return r !== n && (o = (o = ms(r)) < 0 ? bn(i + o, 0) : yn(o, i - 1)), t == t ? function(e, t, n) {
                  for (var r = n + 1; r--;)
                    if (e[r] === t) return r;
                  return r
                }(e, t, o) : Ft(e, Ht, o, !0)
              }, Hn.lowerCase = Ys, Hn.lowerFirst = qs, Hn.lt = ps, Hn.lte = ds, Hn.max = function(e) {
                return e && e.length ? mr(e, ol, Tr) : n
              }, Hn.maxBy = function(e, t) {
                return e && e.length ? mr(e, co(t, 2), Tr) : n
              }, Hn.mean = function(e) {
                return Ut(e, ol)
              }, Hn.meanBy = function(e, t) {
                return Ut(e, co(t, 2))
              }, Hn.min = function(e) {
                return e && e.length ? mr(e, ol, Br) : n
              }, Hn.minBy = function(e, t) {
                return e && e.length ? mr(e, co(t, 2), Br) : n
              }, Hn.stubArray = vl, Hn.stubFalse = _l, Hn.stubObject = function() {
                return {}
              }, Hn.stubString = function() {
                return ""
              }, Hn.stubTrue = function() {
                return !0
              }, Hn.multiply = Cl, Hn.nth = function(e, t) {
                return e && e.length ? Vr(e, ms(t)) : n
              }, Hn.noConflict = function() {
                return ht._ === this && (ht._ = ze), this
              }, Hn.noop = ul, Hn.now = Oa, Hn.pad = function(e, t, n) {
                e = ys(e);
                var r = (t = ms(t)) ? pn(e) : 0;
                if (!t || r >= t) return e;
                var i = (t - r) / 2;
                return Xi(mt(i), n) + e + Xi(gt(i), n)
              }, Hn.padEnd = function(e, t, n) {
                e = ys(e);
                var r = (t = ms(t)) ? pn(e) : 0;
                return t && r < t ? e + Xi(t - r, n) : e
              }, Hn.padStart = function(e, t, n) {
                e = ys(e);
                var r = (t = ms(t)) ? pn(e) : 0;
                return t && r < t ? Xi(t - r, n) + e : e
              }, Hn.parseInt = function(e, t, n) {
                return n || null == t ? t = 0 : t && (t = +t), xn(ys(e).replace(ie, ""), t || 0)
              }, Hn.random = function(e, t, r) {
                if (r && "boolean" != typeof r && wo(e, t, r) && (t = r = n), r === n && ("boolean" == typeof t ? (r = t, t = n) : "boolean" == typeof e && (r = e, e = n)), e === n && t === n ? (e = 0, t = 1) : (e = gs(e), t === n ? (t = e,
                    e = 0) : t = gs(t)), e > t) {
                  var i = e;
                  e = t, t = i
                }
                if (r || e % 1 || t % 1) {
                  var o = kn();
                  return yn(e + o * (t - e + st("1e-" + ((o + "").length - 1))), t)
                }
                return Kr(e, t)
              }, Hn.reduce = function(e, t, n) {
                var r = Ga(e) ? It : Xt,
                  i = arguments.length < 3;
                return r(e, co(t, 4), n, i, dr)
              }, Hn.reduceRight = function(e, t, n) {
                var r = Ga(e) ? Rt : Xt,
                  i = arguments.length < 3;
                return r(e, co(t, 4), n, i, fr)
              }, Hn.repeat = function(e, t, r) {
                return t = (r ? wo(e, t, r) : t === n) ? 1 : ms(t), Zr(ys(e), t)
              }, Hn.replace = function() {
                var e = arguments,
                  t = ys(e[0]);
                return e.length < 3 ? t : t.replace(e[1], e[2])
              }, Hn.result = function(e, t, r) {
                var i = -1,
                  o = (t = yi(t, e)).length;
                for (o || (o = 1, e = n); ++i < o;) {
                  var a = null == e ? n : e[Bo(t[i])];
                  a === n && (i = o, a = r), e = Qa(a) ? a.call(e) : a
                }
                return e
              }, Hn.round = Sl, Hn.runInContext = e, Hn.sample = function(e) {
                return (Ga(e) ? Jn : Jr)(e)
              }, Hn.size = function(e) {
                if (null == e) return 0;
                if (qa(e)) return cs(e) ? pn(e) : e.length;
                var t = mo(e);
                return t == k || t == O ? e.size : Lr(e).length
              }, Hn.snakeCase = Ks, Hn.some = function(e, t, r) {
                var i = Ga(e) ? jt : oi;
                return r && wo(e, t, r) && (t = n), i(e, co(t, 3))
              }, Hn.sortedIndex = function(e, t) {
                return ai(e, t)
              }, Hn.sortedIndexBy = function(e, t, n) {
                return si(e, t, co(n, 2))
              }, Hn.sortedIndexOf = function(e, t) {
                var n = null == e ? 0 : e.length;
                if (n) {
                  var r = ai(e, t);
                  if (r < n && Ua(e[r], t)) return r
                }
                return -1
              }, Hn.sortedLastIndex = function(e, t) {
                return ai(e, t, !0)
              }, Hn.sortedLastIndexBy = function(e, t, n) {
                return si(e, t, co(n, 2), !0)
              }, Hn.sortedLastIndexOf = function(e, t) {
                if (null == e ? 0 : e.length) {
                  var n = ai(e, t, !0) - 1;
                  if (Ua(e[n], t)) return n
                }
                return -1
              }, Hn.startCase = Zs, Hn.startsWith = function(e, t, n) {
                return e = ys(e), n = null == n ? 0 : lr(ms(n), 0, e.length), t = ui(t), e.slice(n, n + t.length) == t
              }, Hn.subtract = El, Hn.sum = function(e) {
                return e && e.length ? Gt(e, ol) : 0
              }, Hn.sumBy = function(e, t) {
                return e && e.length ? Gt(e, co(t, 2)) : 0
              }, Hn.template = function(e, t, r) {
                var i = Hn.templateSettings;
                r && wo(e, t, r) && (t = n), e = ys(e), t = ks({}, t, i, Qi);
                var o, a, s = ks({}, t.imports, i.imports, Qi),
                  l = Is(s),
                  c = Zt(s, l),
                  u = 0,
                  h = t.interpolate || ye,
                  p = "__p += '",
                  d = Te((t.escape || ye).source + "|" + h.source + "|" + (h === J ? pe : ye).source + "|" + (t.evaluate || ye).source + "|$", "g"),
                  f = "//# sourceURL=" + (je.call(t, "sourceURL") ? (t.sourceURL + "").replace(/\s/g, " ") : "lodash.templateSources[" + ++rt + "]") + "\n";
                e.replace(d, (function(t, n, r, i, s, l) {
                  return r || (r = i), p += e.slice(u, l).replace(we, on), n && (o = !0, p += "' +\n__e(" + n + ") +\n'"), s && (a = !0, p += "';\n" + s + ";\n__p += '"), r && (p += "' +\n((__t = (" + r +
                    ")) == null ? '' : __t) +\n'"), u = l + t.length, t
                })), p += "';\n";
                var g = je.call(t, "variable") && t.variable;
                if (g) {
                  if (ue.test(g)) throw new ke("Invalid `variable` option passed into `_.template`")
                } else p = "with (obj) {\n" + p + "\n}\n";
                p = (a ? p.replace(W, "") : p).replace(V, "$1").replace(X, "$1;"), p = "function(" + (g || "obj") + ") {\n" + (g ? "" : "obj || (obj = {});\n") + "var __t, __p = ''" + (o ? ", __e = _.escape" : "") + (a ?
                  ", __j = Array.prototype.join;\nfunction print() { __p += __j.call(arguments, '') }\n" : ";\n") + p + "return __p\n}";
                var m = el((function() {
                  return Ce(l, f + "return " + p).apply(n, c)
                }));
                if (m.source = p, Ja(m)) throw m;
                return m
              }, Hn.times = function(e, t) {
                if ((e = ms(e)) < 1 || e > p) return [];
                var n = f,
                  r = yn(e, f);
                t = co(t), e -= f;
                for (var i = Yt(r, t); ++n < e;) t(n);
                return i
              }, Hn.toFinite = gs, Hn.toInteger = ms, Hn.toLength = vs, Hn.toLower = function(e) {
                return ys(e).toLowerCase()
              }, Hn.toNumber = _s, Hn.toSafeInteger = function(e) {
                return e ? lr(ms(e), -9007199254740991, p) : 0 === e ? e : 0
              }, Hn.toString = ys, Hn.toUpper = function(e) {
                return ys(e).toUpperCase()
              }, Hn.trim = function(e, t, r) {
                if ((e = ys(e)) && (r || t === n)) return qt(e);
                if (!e || !(t = ui(t))) return e;
                var i = dn(e),
                  o = dn(t);
                return xi(i, Jt(i, o), Qt(i, o) + 1).join("")
              }, Hn.trimEnd = function(e, t, r) {
                if ((e = ys(e)) && (r || t === n)) return e.slice(0, fn(e) + 1);
                if (!e || !(t = ui(t))) return e;
                var i = dn(e);
                return xi(i, 0, Qt(i, dn(t)) + 1).join("")
              }, Hn.trimStart = function(e, t, r) {
                if ((e = ys(e)) && (r || t === n)) return e.replace(ie, "");
                if (!e || !(t = ui(t))) return e;
                var i = dn(e);
                return xi(i, Jt(i, dn(t))).join("")
              }, Hn.truncate = function(e, t) {
                var r = 30,
                  i = "...";
                if (ns(t)) {
                  var o = "separator" in t ? t.separator : o;
                  r = "length" in t ? ms(t.length) : r, i = "omission" in t ? ui(t.omission) : i
                }
                var a = (e = ys(e)).length;
                if (an(e)) {
                  var s = dn(e);
                  a = s.length
                }
                if (r >= a) return e;
                var l = r - pn(i);
                if (l < 1) return i;
                var c = s ? xi(s, 0, l).join("") : e.slice(0, l);
                if (o === n) return c + i;
                if (s && (l += c.length - l), ss(o)) {
                  if (e.slice(l).search(o)) {
                    var u, h = c;
                    for (o.global || (o = Te(o.source, ys(de.exec(o)) + "g")), o.lastIndex = 0; u = o.exec(h);) var p = u.index;
                    c = c.slice(0, p === n ? l : p)
                  }
                } else if (e.indexOf(ui(o), l) != l) {
                  var d = c.lastIndexOf(o);
                  d > -1 && (c = c.slice(0, d))
                }
                return c + i
              }, Hn.unescape = function(e) {
                return (e = ys(e)) && q.test(e) ? e.replace(G, gn) : e
              }, Hn.uniqueId = function(e) {
                var t = ++Ne;
                return ys(e) + t
              }, Hn.upperCase = $s, Hn.upperFirst = Js, Hn.each = ya, Hn.eachRight = wa, Hn.first = qo, cl(Hn, (kl = {}, wr(Hn, (function(e, t) {
                je.call(Hn.prototype, t) || (kl[t] = e)
              })), kl), {
                chain: !1
              }), Hn.VERSION = "4.17.21", St(["bind", "bindKey", "curry", "curryRight", "partial", "partialRight"], (function(e) {
                Hn[e].placeholder = Hn
              })), St(["drop", "take"], (function(e, t) {
                Xn.prototype[e] = function(r) {
                  r = r === n ? 1 : bn(ms(r), 0);
                  var i = this.__filtered__ && !t ? new Xn(this) : this.clone();
                  return i.__filtered__ ? i.__takeCount__ = yn(r, i.__takeCount__) : i.__views__.push({
                    size: yn(r, f),
                    type: e + (i.__dir__ < 0 ? "Right" : "")
                  }), i
                }, Xn.prototype[e + "Right"] = function(t) {
                  return this.reverse()[e](t).reverse()
                }
              })), St(["filter", "map", "takeWhile"], (function(e, t) {
                var n = t + 1,
                  r = 1 == n || 3 == n;
                Xn.prototype[e] = function(e) {
                  var t = this.clone();
                  return t.__iteratees__.push({
                    iteratee: co(e, 3),
                    type: n
                  }), t.__filtered__ = t.__filtered__ || r, t
                }
              })), St(["head", "last"], (function(e, t) {
                var n = "take" + (t ? "Right" : "");
                Xn.prototype[e] = function() {
                  return this[n](1).value()[0]
                }
              })), St(["initial", "tail"], (function(e, t) {
                var n = "drop" + (t ? "" : "Right");
                Xn.prototype[e] = function() {
                  return this.__filtered__ ? new Xn(this) : this[n](1)
                }
              })), Xn.prototype.compact = function() {
                return this.filter(ol)
              }, Xn.prototype.find = function(e) {
                return this.filter(e).head()
              }, Xn.prototype.findLast = function(e) {
                return this.reverse().find(e)
              }, Xn.prototype.invokeMap = $r((function(e, t) {
                return "function" == typeof e ? new Xn(this) : this.map((function(n) {
                  return Mr(n, e, t)
                }))
              })), Xn.prototype.reject = function(e) {
                return this.filter(La(co(e)))
              }, Xn.prototype.slice = function(e, t) {
                e = ms(e);
                var r = this;
                return r.__filtered__ && (e > 0 || t < 0) ? new Xn(r) : (e < 0 ? r = r.takeRight(-e) : e && (r = r.drop(e)), t !== n && (r = (t = ms(t)) < 0 ? r.dropRight(-t) : r.take(t - e)), r)
              }, Xn.prototype.takeRightWhile = function(e) {
                return this.reverse().takeWhile(e).reverse()
              }, Xn.prototype.toArray = function() {
                return this.take(f)
              }, wr(Xn.prototype, (function(e, t) {
                var r = /^(?:filter|find|map|reject)|While$/.test(t),
                  i = /^(?:head|last)$/.test(t),
                  o = Hn[i ? "take" + ("last" == t ? "Right" : "") : t],
                  a = i || /^find/.test(t);
                o && (Hn.prototype[t] = function() {
                  var t = this.__wrapped__,
                    s = i ? [1] : arguments,
                    l = t instanceof Xn,
                    c = s[0],
                    u = l || Ga(t),
                    h = function(e) {
                      var t = o.apply(Hn, Dt([e], s));
                      return i && p ? t[0] : t
                    };
                  u && r && "function" == typeof c && 1 != c.length && (l = u = !1);
                  var p = this.__chain__,
                    d = !!this.__actions__.length,
                    f = a && !p,
                    g = l && !d;
                  if (!a && u) {
                    t = g ? t : new Xn(this);
                    var m = e.apply(t, s);
                    return m.__actions__.push({
                      func: ga,
                      args: [h],
                      thisArg: n
                    }), new Vn(m, p)
                  }
                  return f && g ? e.apply(this, s) : (m = this.thru(h), f ? i ? m.value()[0] : m.value() : m)
                })
              })), St(["pop", "push", "shift", "sort", "splice", "unshift"], (function(e) {
                var t = Pe[e],
                  n = /^(?:push|sort|unshift)$/.test(e) ? "tap" : "thru",
                  r = /^(?:pop|shift)$/.test(e);
                Hn.prototype[e] = function() {
                  var e = arguments;
                  if (r && !this.__chain__) {
                    var i = this.value();
                    return t.apply(Ga(i) ? i : [], e)
                  }
                  return this[n]((function(n) {
                    return t.apply(Ga(n) ? n : [], e)
                  }))
                }
              })), wr(Xn.prototype, (function(e, t) {
                var n = Hn[t];
                if (n) {
                  var r = n.name + "";
                  je.call(Dn, r) || (Dn[r] = []), Dn[r].push({
                    name: t,
                    func: n
                  })
                }
              })), Dn[Hi(n, 2).name] = [{
                name: "wrapper",
                func: n
              }], Xn.prototype.clone = function() {
                var e = new Xn(this.__wrapped__);
                return e.__actions__ = Pi(this.__actions__), e.__dir__ = this.__dir__, e.__filtered__ = this.__filtered__, e.__iteratees__ = Pi(this.__iteratees__), e.__takeCount__ = this.__takeCount__, e.__views__ = Pi(this.__views__), e
              }, Xn.prototype.reverse = function() {
                if (this.__filtered__) {
                  var e = new Xn(this);
                  e.__dir__ = -1, e.__filtered__ = !0
                } else(e = this.clone()).__dir__ *= -1;
                return e
              }, Xn.prototype.value = function() {
                var e = this.__wrapped__.value(),
                  t = this.__dir__,
                  n = Ga(e),
                  r = t < 0,
                  i = n ? e.length : 0,
                  o = function(e, t, n) {
                    var r = -1,
                      i = n.length;
                    for (; ++r < i;) {
                      var o = n[r],
                        a = o.size;
                      switch (o.type) {
                        case "drop":
                          e += a;
                          break;
                        case "dropRight":
                          t -= a;
                          break;
                        case "take":
                          t = yn(t, e + a);
                          break;
                        case "takeRight":
                          e = bn(e, t - a)
                      }
                    }
                    return {
                      start: e,
                      end: t
                    }
                  }(0, i, this.__views__),
                  a = o.start,
                  s = o.end,
                  l = s - a,
                  c = r ? s : a - 1,
                  u = this.__iteratees__,
                  h = u.length,
                  p = 0,
                  d = yn(l, this.__takeCount__);
                if (!n || !r && i == l && d == l) return gi(e, this.__actions__);
                var f = [];
                e: for (; l-- && p < d;) {
                  for (var g = -1, m = e[c += t]; ++g < h;) {
                    var v = u[g],
                      _ = v.iteratee,
                      b = v.type,
                      y = _(m);
                    if (2 == b) m = y;
                    else if (!y) {
                      if (1 == b) continue e;
                      break e
                    }
                  }
                  f[p++] = m
                }
                return f
              }, Hn.prototype.at = ma, Hn.prototype.chain = function() {
                return fa(this)
              }, Hn.prototype.commit = function() {
                return new Vn(this.value(), this.__chain__)
              }, Hn.prototype.next = function() {
                this.__values__ === n && (this.__values__ = fs(this.value()));
                var e = this.__index__ >= this.__values__.length;
                return {
                  done: e,
                  value: e ? n : this.__values__[this.__index__++]
                }
              }, Hn.prototype.plant = function(e) {
                for (var t, r = this; r instanceof Wn;) {
                  var i = Ho(r);
                  i.__index__ = 0, i.__values__ = n, t ? o.__wrapped__ = i : t = i;
                  var o = i;
                  r = r.__wrapped__
                }
                return o.__wrapped__ = e, t
              }, Hn.prototype.reverse = function() {
                var e = this.__wrapped__;
                if (e instanceof Xn) {
                  var t = e;
                  return this.__actions__.length && (t = new Xn(this)), (t = t.reverse()).__actions__.push({
                    func: ga,
                    args: [na],
                    thisArg: n
                  }), new Vn(t, this.__chain__)
                }
                return this.thru(na)
              }, Hn.prototype.toJSON = Hn.prototype.valueOf = Hn.prototype.value = function() {
                return gi(this.__wrapped__, this.__actions__)
              }, Hn.prototype.first = Hn.prototype.head, et && (Hn.prototype[et] = function() {
                return this
              }), Hn
            }();
            dt ? ((dt.exports = mn)._ = mn, pt._ = mn) : ht._ = mn
          }).call(en)
        }(bv, bv.exports);
        var yv = {
            rect: gl(Qm, {}),
            rect_radius: gl(Ym, {}),
            circle: gl(jm, {}),
            ellipse: gl(Hm, {}),
            heart: gl(ov, {}),
            star: gl(hv, {})
          },
          wv = [gl(nv, {}), gl(Zm, {}), gl(Fm, {}), gl(Vm, {}), gl(lv, {}), gl(fv, {})],
          xv = {
            rect: "rectangle",
            rect_radius: "rounded_rectangle",
            circle: "round",
            ellipse: "oval",
            heart: "heart",
            star: "star"
          },
          kv = new Array;
        ! function(e) {
          for (var t = 0; t < e.length; t++) kv[t] = new Image, kv[t].src = e[t]
        }(["https://static.staticdj.com/oss/operation/79fbbd3c59b5e444f74d54581b9a0411.svg", "https://static.staticdj.com/oss/operation/76f72c9c2894f11f9efcec04cf8f90e0.svg"]);
        var Cv = e => {
            var {
              onCancel: t,
              onConfirm: n,
              file: r,
              url: i
            } = e, [o, a] = qe({
              width: 0,
              height: 0
            }), [s, l] = qe("rect"), [c, u] = qe(!1), p = Je(null), {
              formatMessage: d
            } = zi();
            Ze((() => {
              var e = new Image;
              e.onload = function() {
                var {
                  width: t,
                  height: n
                } = e;
                a({
                  width: t,
                  height: n
                })
              }, e.src = i
            }), [i]), Ze((() => {
              document.addEventListener("click", (() => {
                u(!1)
              }))
            }), []);
            var f = e => {
                p.current.zoomImage(e)
              },
              {
                width: g,
                height: m
              } = o,
              v = et((() => {
                var e = No() ? window.document.body.clientWidth - 32 : 800;
                return gl("div", {
                  className: vv.cropper_container,
                  style: {
                    maxWidth: e,
                    maxHeight: 602,
                    minWidth: 300,
                    width: g
                  },
                  children: gl(_m, "circle" === s ? {
                    className: vv.copper_wrapper,
                    crossOrigin: "anonymous",
                    stencilComponent: bm,
                    stencilProps: {
                      aspectRatio: 1,
                      previewClassName: vv["preview_".concat(s)]
                    },
                    ref: p,
                    src: i
                  } : {
                    defaultSize: "rect" === s ? e => {
                      var {
                        imageSize: t,
                        visibleArea: n
                      } = e, r = Math.min((n || t).width / 2, (n || t).height / 2);
                      return {
                        width: r,
                        height: r
                      }
                    } : {},
                    className: vv.copper_wrapper,
                    crossOrigin: "anonymous",
                    stencilProps: {
                      aspectRatio: {
                        heart: 268 / 238,
                        star: 269 / 256,
                        rect_radius: 1,
                        ellipse: 1,
                        circle: 1,
                        rect: ""
                      } [s],
                      previewClassName: vv["preview_".concat(s)],
                      overlayClassName: vv["overlay_".concat(s)]
                    },
                    ref: p,
                    src: i
                  })
                })
              }), [i, g, s]),
              _ = et((() => yv[s]), [s]),
              b = et((() => {
                var e = Object.values(yv),
                  t = Object.keys(yv);
                return gl(de, {
                  children: null == e ? void 0 : e.map(((e, n) => gl("div", {
                    onClick: () => {
                      l(t[n])
                    },
                    className: ul(vv.shape_icon, t[n] === s ? vv.active : ""),
                    children: t[n] === s ? wv[n] : e
                  })))
                })
              }), [s]);
            if (i && g) return gl("div", {
              className: "notranslate",
              children: [v, gl("div", {
                className: vv.hidden_canvas,
                children: [gl("canvas", {
                  id: "fabricInstance",
                  className: vv.hidden_canvas
                }), gl("canvas", {
                  id: "fabricInstance2",
                  className: vv.hidden_canvas
                }), gl("canvas", {
                  id: "fabricInstance3",
                  className: vv.hidden_canvas
                })]
              }), gl("div", {
                className: vv.cropper_footer,
                children: [gl("div", {
                  className: vv.operate_box,
                  children: [!No() && gl(de, {
                    children: [gl(Em, {
                      className: vv.icon,
                      onClick: () => f(.8)
                    }), gl(Am, {
                      className: vv.icon,
                      onClick: () => f(1.2)
                    }), gl("div", {
                      className: vv.mock_line
                    })]
                  }), gl("div", {
                    className: ul(vv.cropper_type_wrapper, c ? vv.active : "", No() ? vv.ml0 : ""),
                    onClick: e => {
                      e.stopPropagation(), u(!c)
                    },
                    children: [gl("div", {
                      className: vv.cropper_type_icon,
                      children: _
                    }), gl("div", {
                      className: vv.cropper_type_arrow,
                      children: gl(Dm, {})
                    }), c && gl("div", {
                      className: vv.cropper_select_list,
                      children: [b, gl(mv, {
                        className: vv.cropper_select_list_arrow
                      })]
                    })]
                  })]
                }), gl("div", {
                  children: [gl("button", {
                    className: vv.footer_button,
                    onClick: () => {
                      var e;
                      t(r), fabricInstance && (null === (e = fabricInstance) || void 0 === e || e.dispose())
                    },
                    children: d({
                      id: "cancel"
                    })
                  }), gl("button", {
                    className: vv.footer_button,
                    onClick: () => {
                      var e = p.current.getCanvas(),
                        t = new _v.fabric.Canvas("fabricInstance"),
                        i = e.toDataURL((null == r ? void 0 : r.type) || "image/png", .5),
                        o = s;
                      "circle" === o ? _v.fabric.Image.fromURL(i, (e => {
                        t.setWidth(e.width), t.setHeight(e.height), e.set({
                          clipPath: new _v.fabric.Circle({
                            radius: e.width / 2,
                            originX: "center",
                            originY: "center"
                          })
                        }), t.add(e), t.renderAll(), i = t.toDataURL((null == r ? void 0 : r.type) || "image/png", .5), n(h(h({}, r), {}, {
                          dataUrl: i
                        }))
                      })) : "ellipse" === o ? _v.fabric.Image.fromURL(i, (e => {
                        t.setWidth(e.width), t.setHeight(e.height), e.set({
                          clipPath: new _v.fabric.Ellipse({
                            rx: e.width / 2 / 2,
                            ry: e.height / 2,
                            originX: "center",
                            originY: "center"
                          })
                        }), t.add(e), t.renderAll(), i = t.toDataURL((null == r ? void 0 : r.type) || "image/png", .5), n(h(h({}, r), {}, {
                          dataUrl: i
                        }))
                      })) : "rect_radius" === o ? _v.fabric.Image.fromURL(i, (e => {
                        t.setWidth(e.width), t.setHeight(e.height), e.set({
                          clipPath: new _v.fabric.Rect({
                            width: e.width,
                            height: e.height,
                            rx: 28,
                            ry: 28,
                            originX: "center",
                            originY: "center"
                          })
                        }), t.add(e), t.renderAll(), i = t.toDataURL((null == r ? void 0 : r.type) || "image/png", .5), n(h(h({}, r), {}, {
                          dataUrl: i
                        }))
                      })) : "heart" === o ? (i = e.toDataURL((null == r ? void 0 : r.type) || "image/png", 1), _v.fabric.Image.fromURL(i, (e => {
                        var t = document.getElementById("fabricInstance2"),
                          o = e.height / e.width * 300,
                          a = 25 / 238 * o;
                        t.width = 800, t.height = 600;
                        var s = t.getContext("2d");
                        s.fillStyle = "rgba(255, 255, 255, 0)", s.fillRect(0, 0, 800, 600), s.save(), s.beginPath(), s.moveTo(400, 175 + a), s.bezierCurveTo(568, 125, 568, 330, 400, o + 168), s.bezierCurveTo(232,
                          330, 232, 125, 400, 175 + a), s.clip(), s.closePath(), (e = new Image).src = i, e.onload = function() {
                          s.drawImage(e, 273, 172, 254, o), i = t.toDataURL("image/png", .5);
                          var a = new Image;
                          a.src = i, a.id = "img3", a.onload = () => {
                            var e = document.getElementById("fabricInstance3");
                            e.width = 254, e.height = o, e.getContext("2d").drawImage(a, -273, -1 * (600 - o) / 2 - 3), i = e.toDataURL("image/png", .5), n(h(h({}, r), {}, {
                              dataUrl: i
                            }))
                          }
                        }
                      }))) : "star" === o ? (i = e.toDataURL((null == r ? void 0 : r.type) || "image/png", 1), _v.fabric.Image.fromURL(i, (e => {
                        var t = document.getElementById("fabricInstance2"),
                          o = t.getContext("2d");
                        o.fillStyle = "rgba(255,255,255,0)", o.fillRect(0, 0, e.width, e.height);
                        var a = new Image;
                        a.src = i, a.onload = function() {
                          t.width = e.width, t.height = e.height,
                            function(o, a) {
                              var s = Math.max(e.width / 2, e.height / 2);
                              (function(e, t, n) {
                                var r = 360 / t / 2,
                                  i = 90,
                                  o = n / 2;
                                e.save(), e.translate(n, n), e.rotate(60), e.moveTo(0, n), e.beginPath();
                                for (var a = 0; a <= t; a++) {
                                  var s = n * Math.sin((i + 2 * a * r) / 180 * Math.PI),
                                    l = n * Math.cos((i + 2 * a * r) / 180 * Math.PI),
                                    c = o * Math.sin((i + (2 * a + 1) * r) / 180 * Math.PI),
                                    u = o * Math.cos((i + (2 * a + 1) * r) / 180 * Math.PI);
                                  e.lineTo(s, l), e.lineTo(c, u)
                                }
                                e.closePath(), e.clip()
                              })(o, 5, s), o.save(), o.rotate(-60), o.drawImage(a, -s, -s, e.width, e.height), i = t.toDataURL("image/png", .5), n(h(h({}, r), {}, {
                                dataUrl: i
                              }))
                            }(o, a)
                        }
                      }))) : n(h(h({}, r), {}, {
                        dataUrl: i
                      })), Do("admin_plugin_product_customizer_shape", {
                        shape_type: xv[o]
                      })
                    },
                    children: d({
                      id: "select"
                    })
                  })]
                })]
              })]
            })
          },
          Sv = je(null),
          Ev = pp() ? $e : Ze,
          Tv = Ev,
          Ov = function(e, t) {
            var n = Je(!0);
            Ev((function() {
              if (!n.current) return e()
            }), t), Ev((function() {
              return n.current = !1,
                function() {
                  n.current = !0
                }
            }), [])
          },
          Av = [];

        function Pv(e, t) {
          if (!e) return !1;
          if (e.contains) return e.contains(t);
          for (var n = t; n;) {
            if (n === e) return !0;
            n = n.parentNode
          }
          return !1
        }
        var Mv, Dv = "data-rc-order",
          Iv = "rc-util-key",
          Rv = new Map;

        function jv() {
          var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
            t = e.mark;
          return t ? t.startsWith("data-") ? t : "data-".concat(t) : Iv
        }

        function Nv(e) {
          return e.attachTo ? e.attachTo : document.querySelector("head") || document.body
        }

        function Lv(e) {
          return "queue" === e ? "prependQueue" : e ? "prepend" : "append"
        }

        function Fv(e) {
          return Array.from((Rv.get(e) || e).children).filter((function(e) {
            return "STYLE" === e.tagName
          }))
        }

        function Bv(e) {
          var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};
          if (!pp()) return null;
          var n = t.csp,
            r = t.prepend,
            i = document.createElement("style");
          i.setAttribute(Dv, Lv(r)), null != n && n.nonce && (i.nonce = null == n ? void 0 : n.nonce), i.innerHTML = e;
          var o = Nv(t),
            a = o.firstChild;
          if (r) {
            if ("queue" === r) {
              var s = Fv(o).filter((function(e) {
                return ["prepend", "prependQueue"].includes(e.getAttribute(Dv))
              }));
              if (s.length) return o.insertBefore(i, s[s.length - 1].nextSibling), i
            }
            o.insertBefore(i, a)
          } else o.appendChild(i);
          return i
        }

        function zv(e) {
          var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {},
            n = Nv(t);
          return Fv(n).find((function(n) {
            return n.getAttribute(jv(t)) === e
          }))
        }

        function Hv(e) {
          var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {},
            n = zv(e, t);
          if (n) {
            var r = Nv(t);
            r.removeChild(n)
          }
        }

        function Uv(e, t) {
          var n = Rv.get(e);
          if (!n || !Pv(document, n)) {
            var r = Bv("", t),
              i = r.parentNode;
            Rv.set(e, i), e.removeChild(r)
          }
        }
        var Wv = "rc-util-locker-".concat(Date.now()),
          Vv = 0;

        function Xv(e) {
          var t = !!e,
            n = ap(qe((function() {
              return Vv += 1, "".concat(Wv, "_").concat(Vv)
            })), 1)[0];
          Tv((function() {
            if (t) {
              var e = function(e) {
                  if ("undefined" == typeof document) return 0;
                  if (e || void 0 === Mv) {
                    var t = document.createElement("div");
                    t.style.width = "100%", t.style.height = "200px";
                    var n = document.createElement("div"),
                      r = n.style;
                    r.position = "absolute", r.top = "0", r.left = "0", r.pointerEvents = "none", r.visibility = "hidden", r.width = "200px", r.height = "150px", r.overflow = "hidden", n.appendChild(t), document.body.appendChild(n);
                    var i = t.offsetWidth;
                    n.style.overflow = "scroll";
                    var o = t.offsetWidth;
                    i === o && (o = n.clientWidth), document.body.removeChild(n), Mv = i - o
                  }
                  return Mv
                }(),
                r = document.body.scrollHeight > (window.innerHeight || document.documentElement.clientHeight) && window.innerWidth > document.body.offsetWidth;
              ! function(e, t) {
                var n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {};
                Uv(Nv(n), n);
                var r = zv(t, n);
                if (r) {
                  var i, o, a;
                  return null !== (i = n.csp) && void 0 !== i && i.nonce && r.nonce !== (null === (o = n.csp) || void 0 === o ? void 0 : o.nonce) && (r.nonce = null === (a = n.csp) || void 0 === a ? void 0 : a.nonce), r.innerHTML !== e && (
                    r.innerHTML = e), r
                }
                var s = Bv(e, n);
                s.setAttribute(jv(n), t)
              }("\nhtml body {\n  overflow-y: hidden;\n  ".concat(r ? "width: calc(100% - ".concat(e, "px);") : "", "\n}"), n)
            } else Hv(n);
            return function() {
              Hv(n)
            }
          }), [t, n])
        }
        var Gv = !1;
        var Yv = function(e) {
            return !1 !== e && (pp() && e ? "string" == typeof e ? document.querySelector(e) : "function" == typeof e ? e() : e : null)
          },
          qv = mt((function(e, t) {
            var n = e.open,
              r = e.autoLock,
              i = e.getContainer,
              o = e.autoDestroy,
              a = void 0 === o || o,
              s = e.children,
              l = ap(qe(n), 2),
              c = l[0],
              u = l[1],
              h = c || n;
            Ze((function() {
              (a || n) && u(n)
            }), [n, a]);
            var p = ap(qe((function() {
                return Yv(i)
              })), 2),
              d = p[0],
              f = p[1];
            Ze((function() {
              var e = Yv(i);
              f(null != e ? e : null)
            }));
            var g = function(e, t) {
                var n = ap(qe((function() {
                    return pp() ? document.createElement("div") : null
                  })), 1)[0],
                  r = Je(!1),
                  i = nt(Sv),
                  o = ap(qe(Av), 2),
                  a = o[0],
                  s = o[1],
                  l = i || (r.current ? void 0 : function(e) {
                    s((function(t) {
                      return [e].concat(fh(t))
                    }))
                  });

                function c() {
                  n.parentElement || document.body.appendChild(n), r.current = !0
                }

                function u() {
                  var e;
                  null === (e = n.parentElement) || void 0 === e || e.removeChild(n), r.current = !1
                }
                return Tv((function() {
                  return e ? i ? i(c) : c() : u(), u
                }), [e]), Tv((function() {
                  a.length && (a.forEach((function(e) {
                    return e()
                  })), s(Av))
                }), [a]), [n, l]
              }(h && !d),
              m = ap(g, 2),
              v = m[0],
              _ = m[1],
              b = null != d ? d : v;
            Xv(r && n && pp() && (b === v || b === document.body));
            var y = null;
            s && hp(s) && t && (y = s.ref);
            var w = function() {
              for (var e = arguments.length, t = new Array(e), n = 0; n < e; n++) t[n] = arguments[n];
              return lp((function() {
                return up.apply(void 0, t)
              }), t, (function(e, t) {
                return e.length === t.length && e.every((function(e, n) {
                  return e === t[n]
                }))
              }))
            }(y, t);
            if (!h || !pp() || void 0 === d) return null;
            var x, k = !1 === b || ("boolean" == typeof x && (Gv = x), Gv),
              C = s;
            return t && (C = Gt(s, {
              ref: w
            })), ue(Sv.Provider, {
              value: _
            }, k ? C : Ot(C, b))
          })),
          Kv = qv,
          Zv = {
            MAC_ENTER: 3,
            BACKSPACE: 8,
            TAB: 9,
            NUM_CENTER: 12,
            ENTER: 13,
            SHIFT: 16,
            CTRL: 17,
            ALT: 18,
            PAUSE: 19,
            CAPS_LOCK: 20,
            ESC: 27,
            SPACE: 32,
            PAGE_UP: 33,
            PAGE_DOWN: 34,
            END: 35,
            HOME: 36,
            LEFT: 37,
            UP: 38,
            RIGHT: 39,
            DOWN: 40,
            PRINT_SCREEN: 44,
            INSERT: 45,
            DELETE: 46,
            ZERO: 48,
            ONE: 49,
            TWO: 50,
            THREE: 51,
            FOUR: 52,
            FIVE: 53,
            SIX: 54,
            SEVEN: 55,
            EIGHT: 56,
            NINE: 57,
            QUESTION_MARK: 63,
            A: 65,
            B: 66,
            C: 67,
            D: 68,
            E: 69,
            F: 70,
            G: 71,
            H: 72,
            I: 73,
            J: 74,
            K: 75,
            L: 76,
            M: 77,
            N: 78,
            O: 79,
            P: 80,
            Q: 81,
            R: 82,
            S: 83,
            T: 84,
            U: 85,
            V: 86,
            W: 87,
            X: 88,
            Y: 89,
            Z: 90,
            META: 91,
            WIN_KEY_RIGHT: 92,
            CONTEXT_MENU: 93,
            NUM_ZERO: 96,
            NUM_ONE: 97,
            NUM_TWO: 98,
            NUM_THREE: 99,
            NUM_FOUR: 100,
            NUM_FIVE: 101,
            NUM_SIX: 102,
            NUM_SEVEN: 103,
            NUM_EIGHT: 104,
            NUM_NINE: 105,
            NUM_MULTIPLY: 106,
            NUM_PLUS: 107,
            NUM_MINUS: 109,
            NUM_PERIOD: 110,
            NUM_DIVISION: 111,
            F1: 112,
            F2: 113,
            F3: 114,
            F4: 115,
            F5: 116,
            F6: 117,
            F7: 118,
            F8: 119,
            F9: 120,
            F10: 121,
            F11: 122,
            F12: 123,
            NUMLOCK: 144,
            SEMICOLON: 186,
            DASH: 189,
            EQUALS: 187,
            COMMA: 188,
            PERIOD: 190,
            SLASH: 191,
            APOSTROPHE: 192,
            SINGLE_QUOTE: 222,
            OPEN_SQUARE_BRACKET: 219,
            BACKSLASH: 220,
            CLOSE_SQUARE_BRACKET: 221,
            WIN_KEY: 224,
            MAC_FF_META: 224,
            WIN_IME: 229,
            isTextModifyingKeyEvent: function(e) {
              var t = e.keyCode;
              if (e.altKey && !e.ctrlKey || e.metaKey || t >= Zv.F1 && t <= Zv.F12) return !1;
              switch (t) {
                case Zv.ALT:
                case Zv.CAPS_LOCK:
                case Zv.CONTEXT_MENU:
                case Zv.CTRL:
                case Zv.DOWN:
                case Zv.END:
                case Zv.ESC:
                case Zv.HOME:
                case Zv.INSERT:
                case Zv.LEFT:
                case Zv.MAC_FF_META:
                case Zv.META:
                case Zv.NUMLOCK:
                case Zv.NUM_CENTER:
                case Zv.PAGE_DOWN:
                case Zv.PAGE_UP:
                case Zv.PAUSE:
                case Zv.PRINT_SCREEN:
                case Zv.RIGHT:
                case Zv.SHIFT:
                case Zv.UP:
                case Zv.WIN_KEY:
                case Zv.WIN_KEY_RIGHT:
                  return !1;
                default:
                  return !0
              }
            },
            isCharacterKey: function(e) {
              if (e >= Zv.ZERO && e <= Zv.NINE) return !0;
              if (e >= Zv.NUM_ZERO && e <= Zv.NUM_MULTIPLY) return !0;
              if (e >= Zv.A && e <= Zv.Z) return !0;
              if (-1 !== window.navigator.userAgent.indexOf("WebKit") && 0 === e) return !0;
              switch (e) {
                case Zv.SPACE:
                case Zv.QUESTION_MARK:
                case Zv.NUM_PLUS:
                case Zv.NUM_MINUS:
                case Zv.NUM_PERIOD:
                case Zv.NUM_DIVISION:
                case Zv.SEMICOLON:
                case Zv.DASH:
                case Zv.EQUALS:
                case Zv.COMMA:
                case Zv.PERIOD:
                case Zv.SLASH:
                case Zv.APOSTROPHE:
                case Zv.SINGLE_QUOTE:
                case Zv.OPEN_SQUARE_BRACKET:
                case Zv.BACKSLASH:
                case Zv.CLOSE_SQUARE_BRACKET:
                  return !0;
                default:
                  return !1
              }
            }
          },
          $v = Zv;
        var Jv = 0;

        function Qv(e) {
          var t = ap(qe("ssr-id"), 2),
            n = t[0],
            r = t[1],
            i = mh({}, Qt).useId,
            o = null == i ? void 0 : i();
          return Ze((function() {
            if (!i) {
              var e = Jv;
              Jv += 1, r("rc_unique_".concat(e))
            }
          }), []), e || (o || n)
        }

        function e_(e) {
          var t = e.prefixCls,
            n = e.style,
            r = e.visible,
            i = e.maskProps,
            o = e.motionName;
          return ue(Jp, {
            key: "mask",
            visible: r,
            motionName: o,
            leavedClassName: "".concat(t, "-mask-hidden")
          }, (function(e, r) {
            var o = e.className;
            return ue("div", Ku({
              ref: r,
              style: mh(mh({}, e.style), n),
              className: ul("".concat(t, "-mask"), o)
            }, i))
          }))
        }

        function t_(e, t, n) {
          var r = t;
          return !r && n && (r = "".concat(e, "-").concat(n)), r
        }

        function n_(e, t) {
          var n = e["page".concat(t ? "Y" : "X", "Offset")],
            r = "scroll".concat(t ? "Top" : "Left");
          if ("number" != typeof n) {
            var i = e.document;
            "number" != typeof(n = i.documentElement[r]) && (n = i.body[r])
          }
          return n
        }
        var r_ = dt((function(e) {
            return e.children
          }), (function(e, t) {
            return !t.shouldUpdate
          })),
          i_ = {
            width: 0,
            height: 0,
            overflow: "hidden",
            outline: "none"
          },
          o_ = Jt.forwardRef((function(e, t) {
            var n = e.prefixCls,
              r = e.className,
              i = e.style,
              o = e.title,
              a = e.ariaId,
              s = e.footer,
              l = e.closable,
              c = e.closeIcon,
              u = e.onClose,
              h = e.children,
              p = e.bodyStyle,
              d = e.bodyProps,
              f = e.modalRender,
              g = e.onMouseDown,
              m = e.onMouseUp,
              v = e.holderRef,
              _ = e.visible,
              b = e.forceRender,
              y = e.width,
              w = e.height,
              x = Je(),
              k = Je();
            Jt.useImperativeHandle(t, (function() {
              return {
                focus: function() {
                  var e;
                  null === (e = x.current) || void 0 === e || e.focus()
                },
                changeActive: function(e) {
                  var t = document.activeElement;
                  e && t === k.current ? x.current.focus() : e || t !== x.current || k.current.focus()
                }
              }
            }));
            var C, S, E, T = {};
            void 0 !== y && (T.width = y), void 0 !== w && (T.height = w), s && (C = Jt.createElement("div", {
              className: "".concat(n, "-footer")
            }, s)), o && (S = Jt.createElement("div", {
              className: "".concat(n, "-header")
            }, Jt.createElement("div", {
              className: "".concat(n, "-title"),
              id: a
            }, o))), l && (E = Jt.createElement("button", {
              type: "button",
              onClick: u,
              "aria-label": "Close",
              className: "".concat(n, "-close")
            }, c || Jt.createElement("span", {
              className: "".concat(n, "-close-x")
            })));
            var O = Jt.createElement("div", {
              className: "".concat(n, "-content")
            }, E, S, Jt.createElement("div", Ku({
              className: "".concat(n, "-body"),
              style: p
            }, d), h), C);
            return Jt.createElement("div", {
              key: "dialog-element",
              role: "dialog",
              "aria-labelledby": o ? a : null,
              "aria-modal": "true",
              ref: v,
              style: mh(mh({}, i), T),
              className: ul(n, r),
              onMouseDown: g,
              onMouseUp: m
            }, Jt.createElement("div", {
              tabIndex: 0,
              ref: x,
              style: i_,
              "aria-hidden": "true"
            }), Jt.createElement(r_, {
              shouldUpdate: _ || b
            }, f ? f(O) : O), Jt.createElement("div", {
              tabIndex: 0,
              ref: k,
              style: i_,
              "aria-hidden": "true"
            }))
          })),
          a_ = o_,
          s_ = mt((function(e, t) {
            var n = e.prefixCls,
              r = e.title,
              i = e.style,
              o = e.className,
              a = e.visible,
              s = e.forceRender,
              l = e.destroyOnClose,
              c = e.motionName,
              u = e.ariaId,
              h = e.onVisibleChanged,
              p = e.mousePosition,
              d = Je(),
              f = ap(qe(), 2),
              g = f[0],
              m = f[1],
              v = {};

            function _() {
              var e = function(e) {
                var t = e.getBoundingClientRect(),
                  n = {
                    left: t.left,
                    top: t.top
                  },
                  r = e.ownerDocument,
                  i = r.defaultView || r.parentWindow;
                return n.left += n_(i), n.top += n_(i, !0), n
              }(d.current);
              m(p ? "".concat(p.x - e.left, "px ").concat(p.y - e.top, "px") : "")
            }
            return g && (v.transformOrigin = g), ue(Jp, {
              visible: a,
              onVisibleChanged: h,
              onAppearPrepare: _,
              onEnterPrepare: _,
              forceRender: s,
              motionName: c,
              removeOnLeave: l,
              ref: d
            }, (function(a, s) {
              var l = a.className,
                c = a.style;
              return ue(a_, Ku({}, e, {
                ref: t,
                title: r,
                ariaId: u,
                prefixCls: n,
                holderRef: s,
                style: mh(mh(mh({}, c), i), v),
                className: ul(o, l)
              }))
            }))
          }));
        s_.displayName = "Content";
        var l_ = s_;

        function c_(e) {
          var t = e.prefixCls,
            n = void 0 === t ? "rc-dialog" : t,
            r = e.zIndex,
            i = e.visible,
            o = void 0 !== i && i,
            a = e.keyboard,
            s = void 0 === a || a,
            l = e.focusTriggerAfterClose,
            c = void 0 === l || l,
            u = e.wrapStyle,
            h = e.wrapClassName,
            p = e.wrapProps,
            d = e.onClose,
            f = e.afterClose,
            g = e.transitionName,
            m = e.animation,
            v = e.closable,
            _ = void 0 === v || v,
            b = e.mask,
            y = void 0 === b || b,
            w = e.maskTransitionName,
            x = e.maskAnimation,
            k = e.maskClosable,
            C = void 0 === k || k,
            S = e.maskStyle,
            E = e.maskProps,
            T = e.rootClassName,
            O = Je(),
            A = Je(),
            P = Je(),
            M = ap(qe(o), 2),
            D = M[0],
            I = M[1],
            R = Qv();

          function j(e) {
            null == d || d(e)
          }
          var N = Je(!1),
            L = Je(),
            F = null;
          return C && (F = function(e) {
            N.current ? N.current = !1 : A.current === e.target && j(e)
          }), Ze((function() {
            o && (I(!0), Pv(A.current, document.activeElement) || (O.current = document.activeElement))
          }), [o]), Ze((function() {
            return function() {
              clearTimeout(L.current)
            }
          }), []), ue("div", Ku({
            className: ul("".concat(n, "-root"), T)
          }, wh(e, {
            data: !0
          })), ue(e_, {
            prefixCls: n,
            visible: y && o,
            motionName: t_(n, w, x),
            style: mh({
              zIndex: r
            }, S),
            maskProps: E
          }), ue("div", Ku({
            tabIndex: -1,
            onKeyDown: function(e) {
              if (s && e.keyCode === $v.ESC) return e.stopPropagation(), void j(e);
              o && e.keyCode === $v.TAB && P.current.changeActive(!e.shiftKey)
            },
            className: ul("".concat(n, "-wrap"), h),
            ref: A,
            onClick: F,
            style: mh(mh({
              zIndex: r
            }, u), {}, {
              display: D ? null : "none"
            })
          }, p), ue(l_, Ku({}, e, {
            onMouseDown: function() {
              clearTimeout(L.current), N.current = !0
            },
            onMouseUp: function() {
              L.current = setTimeout((function() {
                N.current = !1
              }))
            },
            ref: P,
            closable: _,
            ariaId: R,
            prefixCls: n,
            visible: o && D,
            onClose: j,
            onVisibleChanged: function(e) {
              if (e) Pv(A.current, document.activeElement) || null === (t = P.current) || void 0 === t || t.focus();
              else {
                if (I(!1), y && O.current && c) {
                  try {
                    O.current.focus({
                      preventScroll: !0
                    })
                  } catch (e) {}
                  O.current = null
                }
                D && (null == f || f())
              }
              var t
            },
            motionName: t_(n, g, m)
          }))))
        }
        var u_ = function(e) {
          var t = e.visible,
            n = e.getContainer,
            r = e.forceRender,
            i = e.destroyOnClose,
            o = void 0 !== i && i,
            a = e.afterClose,
            s = ap(qe(t), 2),
            l = s[0],
            c = s[1];
          return Ze((function() {
            t && c(!0)
          }), [t]), r || !o || l ? ue(Kv, {
            open: t || r || l,
            autoDestroy: !1,
            getContainer: n,
            autoLock: t || l
          }, ue(c_, Ku({}, e, {
            destroyOnClose: o,
            afterClose: function() {
              null == a || a(), c(!1)
            }
          }))) : null
        };
        u_.displayName = "Dialog";
        var h_ = u_,
          p_ = "Upload-module_upload_dialog__jV-WW",
          d_ = "Upload-module_upload_large__9rjsH",
          f_ = "Upload-module_large_content__PoxTi",
          g_ = "Upload-module_large_img__Xguu1",
          m_ = "Upload-module_large_tips__TOH6I",
          v_ = "Upload-module_upload_tips__8XVTP",
          __ = "Upload-module_upload_tips_dot__GLSmQ";

        function b_(e, t) {
          var n = void 0 !== e.uid ? "uid" : "name";
          return t.filter((t => t[n] === e[n]))[0]
        }
        c(
        '.Upload-module_upload_dialog__jV-WW{border-radius:8px;left:50%;margin:0!important;padding:0!important;position:absolute!important;top:50%;transform:translateX(-50%) translateY(-50%);width:auto!important}.Upload-module_upload_dialog__jV-WW .rc-dialog-body{display:block;padding:0}.Upload-module_upload_large__9rjsH{border-radius:8px;height:228px;margin-bottom:6px;width:100%}.Upload-module_large_content__PoxTi{align-items:flex-start;display:inline-flex;flex-direction:column;gap:8px}.Upload-module_large_img__Xguu1{align-items:center;display:flex;flex-direction:column;gap:4px;width:100%}.Upload-module_large_img__Xguu1 p{color:#333;font-style:normal;font-weight:600;width:100%}.Upload-module_large_img__Xguu1 p span{color:#477bff;font-weight:600;position:relative}.Upload-module_large_img__Xguu1 p span:after{background-color:#477bff;bottom:3px;content:"";height:1px;left:0;position:absolute;width:100%}.Upload-module_large_tips__TOH6I{align-items:flex-start;display:flex;flex-direction:column;gap:4px}.Upload-module_upload_tips__8XVTP{align-items:center;color:rgba(51,51,51,.8);display:flex;font-size:13px!important;font-style:normal;font-weight:400;gap:6px}.Upload-module_upload_tips_dot__GLSmQ{background-color:#5c5c5c;border-radius:50%;display:inline-block;height:3px;width:3px}');
        var y_, w_ = e => {
            var {
              optionData: t,
              control: n,
              defaultValue: r = [],
              fieldName: i,
              propertyName: o,
              name: a,
              required: s,
              max_file: l = 1,
              help: c,
              visible: u,
              type: p
            } = e, d = l > 1, {
              setError: f,
              clearErrors: g
            } = nt(rp), [m, _] = qe(!1), [b, k] = qe({}), S = Je(null), T = Je(null), [O, A] = qe(""), [D, I] = qe(null), {
              formatMessage: R
            } = zi(), [j, N] = Od(), F = nt(Hc), z = La({
              control: n,
              name: i
            }), {
              field: {
                onChange: U,
                onBlur: W,
                value: V,
                ref: X
              }
            } = Fa({
              control: n,
              name: i,
              rules: {
                required: {
                  value: !!s,
                  message: R({
                    id: "required_tip"
                  })
                }
              },
              defaultValue: r
            }), G = V;
            V.length || (G = z || []);
            var [Y, q] = qe(null), K = gl("div", {
              className: ul("pk-flex pk-justify-center pk-items-center pk-border pk-border-dashed pk-border-[#333/20] pk-rounded pk-bg-[#fdfdfd] hover:pk-bg-[#f6f6f7] hover:pk-border-[#333/40]", No() ? "pk-w-18 pk-h-18" : "pk-w-20 pk-h-20"),
              children: gl(Kh, {})
            }), Z = gl("div", {
              className: ul("pk-flex pk-justify-center pk-items-center pk-border pk-border-dashed pk-border-[#333/20] pk-bg-[#fdfdfd] hover:pk-bg-[#f6f6f7] hover:pk-border-[#333/40]", d_),
              children: gl("div", {
                className: f_,
                children: [gl("div", {
                  className: g_,
                  children: [gl(Qh, {}), No() ? gl("p", {
                    className: No() ? "!pk-text-[15px] text-center" : "!pk-text-[16px]",
                    children: R({
                      id: "options.upload.large.text.mobile"
                    })
                  }) : gl("p", {
                    className: No() ? "!pk-text-[15px]" : "!pk-text-[16px]",
                    children: [R({
                      id: "options.upload.large.text"
                    }), gl("span", {
                      className: No() ? "!pk-text-[15px]" : "!pk-text-[16px]",
                      children: R({
                        id: "options.upload.large.browse"
                      })
                    })]
                  })]
                }), gl("div", {
                  className: m_,
                  children: [gl("div", {
                    className: v_,
                    children: [gl("span", {
                      className: __
                    }), R({
                      id: "options.upload.large.limit"
                    })]
                  }), gl("div", {
                    className: v_,
                    children: [gl("span", {
                      className: __
                    }), R({
                      id: "options.upload.large.maxfiles"
                    }), ": ", null == t ? void 0 : t.max_file]
                  })]
                })]
              })
            }), $ = Je(), J = (e, t) => {
              var n = [...t],
                r = n.findIndex((t => {
                  var {
                    uid: n
                  } = t;
                  return n === e.uid
                })); - 1 === r ? n.push(e) : n[r] = e;
              var i = n.filter((e => "error" == e.status));
              return null != i && i.length && (null == i ? void 0 : i.length) === (null == n ? void 0 : n.length) ? (j.destroy(), j.open({
                content: R({
                  id: "image_upload_fail"
                })
              })) : null != i && i.length && (j.destroy(), j.open({
                content: R({
                  id: "image_upload_section_fail"
                })
              })), n.filter((e => "error" !== e.status))
            }, Q = t => {
              var n, r, o, a = function(e, t) {
                var n = void 0 !== e.uid ? "uid" : "name",
                  r = t.filter((t => t[n] !== e[n]));
                return r.length === t.length ? null : r
              }(t, G);
              if (a && (n = h({}, t), zc.$emit(M, t), null === (r = $.current) || void 0 === r || r.abort(n), U(a), "upload" === p && null !== (o = e.preview_setting) && void 0 !== o && o.preview_open)) {
                var s = Uc(e, F);
                zc.$emit(B, {
                  label_id: i,
                  bg_image_url: s
                })
              }
            }, ee = () => {
              _(!1), A(""), T.current("cancel upload")
            }, te = e => {
              _(!1), A(""), S.current(e)
            }, ne = (e, t) => (e.objectName = "".concat(window.SHOP_PARAMS.shop_id, "/").concat((new Date).getTime(), ".").concat((y(e.type) || w(e.name)).toLowerCase()), e.status = "uploading", d && G.push(e), U(d ? G : [e]), "cropper" == t &&
              I(e), "cropper" !== t && Y && Date.now() < 1e3 * Y.expire ? e : v().then((t => (q(t.data), e)))), re = n => gl(Fh, {
              ref: $,
              action: null == Y ? void 0 : Y.write_host,
              accept: "image/png,image/jpeg,image/gif,image/jpg",
              multiple: d,
              beforeUpload: (e, t) => {
                var n;
                I(null);
                var r = (null === (n = G) || void 0 === n ? void 0 : n.length) || 0;
                return r >= l && (j.destroy(), j.open({
                  content: R({
                    id: "upload_max_tip"
                  }, {
                    max: l
                  })
                }), t = t.slice(0, l - r)), !!b_(e, t) && (e.size > L ? (j.destroy(), j.open({
                  content: R({
                    id: "image_size_tip"
                  })
                }), !1) : 1 === t.length ? (e => new Promise(((t, n) => {
                  k(e);
                  var r = new FileReader;
                  r.readAsDataURL(e), S.current = t, T.current = n, r.onload = function(e) {
                    A(e.target.result), _(!0)
                  }
                })))(e).then((t => {
                  var n = E(t.dataUrl, e.name, e.type);
                  return n.uid = e.uid, ne(n, "cropper")
                })) : ne(e))
              },
              data: e => ({
                policy: null == Y ? void 0 : Y.policy,
                OSSAccessKeyId: null == Y ? void 0 : Y.access_id,
                success_action_status: 200,
                signature: null == Y ? void 0 : Y.sign,
                "x-oss-forbid-overwrite": !0,
                key: (null == D ? void 0 : D.objectName) || e.objectName
              }),
              onStart: e => {
                C(D || e).then((t => {
                  var n = b_(D || e, G);
                  t && n && "success" !== n.status && (D ? D.thumbUrl = t : e.thumbUrl = t, U(J(D || e, G)))
                }))
              },
              onSuccess: (t, n) => {
                var r;
                if (b_(D || n, G)) {
                  if (D ? D.status = "success" : n.status = "success", D ? D.url = Y.read_host + D.objectName : n.url = Y.read_host + n.objectName, "design" === p && (D ? D.label_id = i : n.label_id = i, zc.$emit(P, D || n)), "upload" ===
                    p && null !== (r = e.preview_setting) && void 0 !== r && r.preview_open) {
                    var o = Uc(e, F);
                    D ? D.label_id = i : n.label_id = i, D ? D.bg_image_url = o : n.bg_image_url = o, zc.$emit(B, D || n)
                  }
                  U(J(D || n, G))
                }
              },
              onError: (e, t, n) => {
                b_(D || n, G) && (n.status = "error", U(J(D || n, G)))
              },
              tabIndex: "0",
              onBlur: W,
              className: ul("pk-block", "large" === (null == t ? void 0 : t.upload_style) ? "pk-w-full" : "pk-w-fit"),
              children: n || ("large" === (null == t ? void 0 : t.upload_style) ? Z : K)
            });
            return Ze((() => {
              G.length && g(i)
            }), [g, i, G]), gl(de, {
              children: [u ? gl(Lc, {
                optionData: t,
                control: n,
                name: i,
                label: a,
                help: c,
                alwaysShowError: {
                  maxFileSize: !0
                },
                children: [gl("div", {
                  className: "pk-flex pk-gap-4 pk-flex-wrap",
                  children: ["large" === (null == t ? void 0 : t.upload_style) && re(G.length < l ? null : gl(de, {})), G.map((t => (t => gl("div", {
                    onClick: () => {
                      var t;
                      "upload" === p && null !== (t = e.preview_setting) && void 0 !== t && t.preview_open && zc.$emit(H, e.fieldName)
                    },
                    className: ul("pk-relative pk-border pk-flex-none pk-text-sm pk-group", "error" === t.status ? "pk-border-[#DB393A]" : "pk-border-[#d9d9d9]", null != t && t.url ? "pk-border-0" : "", No() ?
                      "pk-w-18 pk-h-18" : "pk-w-20 pk-h-20"),
                    children: [gl(np, {
                      onClick: e => {
                        e.stopPropagation(), Q(t)
                      },
                      role: "button",
                      className: "pk-absolute pk--top-3 pk--right-3"
                    }), null != t && t.url ? x(t) ? gl("img", {
                      className: ul("pk-rounded pk-object-contain", No() ? "pk-w-18 pk-h-18" : "pk-w-20 pk-h-20"),
                      src: t.url,
                      alt: t.objectName,
                      onerror: e => {
                        throw setTimeout((() => {
                          Q(t)
                        }), 20), j.destroy(), j.open({
                          content: R({
                            id: "image_upload_fail"
                          })
                        }), new Error(R({
                          id: "image_upload_fail"
                        }))
                      }
                    }) : gl("div", {
                      className: "pk-flex pk-justify-center pk-items-center pk-h-full",
                      children: gl("span", {
                        className: "pk-break-all",
                        children: t.name
                      })
                    }) : gl("div", {
                      className: ul({
                        "pk-text-[#DB393A]": "error" === t.status,
                        "pk-text-[#292929]/75": "uploading" === t.status
                      }, "pk-flex pk-justify-center pk-items-center pk-h-full pk-bg-[#F6F6F7] pk-break-all"),
                      children: "uploading" === t.status ? gl(op, {
                        style: {
                          transform: "scale(0.3)",
                          flexShrink: 0
                        }
                      }) : "Error"
                    })]
                  }))(t))), "large" !== (null == t ? void 0 : t.upload_style) && re(G.length < l ? null : gl(de, {})), m && gl(h_, {
                    className: p_,
                    title: null,
                    onClose: () => {
                      _(!1)
                    },
                    closable: !1,
                    maskClosable: !1,
                    visible: !0,
                    children: gl(Cv, {
                      file: b,
                      url: O,
                      onConfirm: te,
                      onCancel: ee
                    })
                  })]
                }), G.filter((e => e.url)).map(((e, t) => gl("input", {
                  ref: X,
                  type: "hidden",
                  name: "properties[".concat(o, "_").concat(t + 1, "]"),
                  value: e.url || ""
                }, e.uid)))]
              }) : null, N]
            })
          },
          x_ = ["product", "order", "options", "type", "fid", "advance"],
          k_ = {
            swatch: Yc,
            dropdown: tu,
            text: Tu,
            button: Ou,
            checkbox: qu,
            upload: w_,
            design: w_
          },
          C_ = e => {
            var {
              type: t,
              default: n
            } = e;
            return "text" === t && n ? n : "checkbox" !== t && "button" !== t || null == e || !e.default_selection || null == e ? void 0 : e.default_selection_values
          },
          S_ = e => {
            var {
              data: t,
              control: n,
              setData: r
            } = e, [i, o] = qe(!1);
            Ze((() => {
              var e = () => {
                o(!i)
              };
              return zc.$on(D, e), zc.$on(I, e), () => {
                zc.$off(D, e), zc.$off(I, e)
              }
            }), [i]);
            var a = et((() => {
              var e = [],
                r = {
                  columnSpan: [],
                  children: []
                },
                i = () => {
                  e.push(gl("div", {
                    className: "pk-grid pk-gap-x-3 pk-grid-flow-col pk-grid-rows-[auto,auto,auto,auto]",
                    style: {
                      "grid-template-columns": r.columnSpan.map((e => "minmax(0px,".concat(e, "fr)"))).join(" ")
                    },
                    children: r.children
                  })), r = {
                    columnSpan: [],
                    children: []
                  }
                },
                o = (e, t) => {
                  r.columnSpan.push(1 / e), r.children.push(t)
                };
              return t.forEach(((t, a) => {
                if (!t.isHidden) {
                  var {
                    product: s,
                    order: l,
                    options: c,
                    type: u,
                    fid: p,
                    advance: d
                  } = t, f = g(t, x_), {
                    columns: m = 1
                  } = d || {}, v = gl(k_[u], h(h(h({
                    control: n,
                    name: s,
                    visible: !(null != t && t.isHidden),
                    propertyName: l,
                    fieldName: p,
                    options: c,
                    defaultValue: C_(t)
                  }, d), f), {}, {
                    optionData: t,
                    required: !(!d.required || null != t && t.isHidden),
                    type: u,
                    textStyleChange: e => (e => {
                      var n;
                      e && null != t && null !== (n = t.preview_setting) && void 0 !== n && n.preview_open && (t.preview_setting.data.forEach((t => {
                        t.cards.forEach((n => {
                          h(h({}, t.cards[0]), e)
                        }))
                      })), t.isInit = e.isInit, zc.$emit(z, h(h({}, t), e)))
                    })(e)
                  }), p);
                  "dropdown" === u ? (r.columnSpan.reduce(((e, t) => e + t), 0) + 1 / m <= 1 || i(), o(m, v)) : (r.children.length && i(), e.push(v))
                }
              })), r.children.length && i(), e
            }), [n, t, i]);
            return {
              formDom: a
            }
          };

        function E_() {
          return E_ = Object.assign ? Object.assign.bind() : function(e) {
            for (var t = 1; t < arguments.length; t++) {
              var n = arguments[t];
              for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r])
            }
            return e
          }, E_.apply(this, arguments)
        }
        var T_, O_, A_, P_, M_ = e => ue("svg", E_({
            width: 10,
            height: 8,
            fill: "none",
            xmlns: "http://www.w3.org/2000/svg"
          }, e), y_ || (y_ = ue("path", {
            fillRule: "evenodd",
            clipRule: "evenodd",
            d: "M9.477 1.023a.675.675 0 0 1 0 .954l-5 5a.675.675 0 0 1-.954 0l-2.5-2.5a.675.675 0 0 1 .954-.954L4 5.546l4.523-4.523a.675.675 0 0 1 .954 0Z",
            fill: "#333",
            fillOpacity: .8
          }))),
          D_ = ["text", "upload", "design"],
          I_ = window.SHOP_PARAMS.finance_symbol,
          R_ = (null === (T_ = window) || void 0 === T_ || null === (O_ = T_.SHOPLAZZA) || void 0 === O_ || null === (A_ = O_.market) || void 0 === A_ || null === (P_ = A_.market_price_setting) || void 0 === P_ ? void 0 : P_.actual_rate) || 1,
          j_ = 1e5,
          N_ = e => {
            var {
              data: t,
              control: n
            } = e, {
              formatMessage: r
            } = zi(), i = t.reduce(((e, t) => {
              var i, o;
              if (null != t && t.isHidden || null === (i = n._formValues[t.fid]) || void 0 === i || !i.length) return e;
              D_.includes(t.type) && Number(t.price) ? e.push({
                des: r({
                  id: "add_price_tip"
                }, {
                  key: gl("span", {
                    className: "pk-font-semibold",
                    children: "[".concat(t.product, "]")
                  }),
                  price: gl("span", {
                    className: "pk-font-semibold money",
                    children: "".concat(I_).concat((Number(t.price) * j_ * R_ / j_).toFixed(2))
                  })
                })
              }) : null === (o = t.options) || void 0 === o || o.forEach((i => {
                ("dropdown" === t.type ? n._formValues[t.fid] === i.label : n._formValues[t.fid].includes(i.label)) && Number(i.price) && e.push({
                  des: r({
                    id: "select_add_price_tip"
                  }, {
                    key: gl("span", {
                      className: "pk-font-semibold",
                      children: "[".concat(t.product, ": ").concat(i.label, "]")
                    }),
                    price: gl("span", {
                      className: "money pk-font-semibold",
                      children: "".concat(I_).concat((Number(i.price) * j_ * R_ / j_).toFixed(2))
                    })
                  })
                })
              }));
              return e
            }), []);
            return !(null == i || !i.length) && gl("div", {
              className: ul("pk-flex pk-flex-col pk-pt-2 pk-pb-1", No() ? "!pk-text-[13px]" : "!pk-text-[14px]"),
              children: null == i ? void 0 : i.map((e => gl("div", {
                className: "pk-flex pk-items-center pk-mb-4 last:pk-mb-0",
                children: [gl("div", {
                  className: "pk-flex pk-items-center pk-justify-center pk-mr-2.5 pk-w-4.5 pk-h-4.5 pk-rounded-full pk-bg-[#E6E6E6]/40",
                  children: gl(M_, {})
                }), gl("div", {
                  children: e.des
                })]
              }, e.fid)))
            })
          },
          L_ = "Tab-module_parakeet_comp_tab__Zx-vZ",
          F_ = "Tab-module_tab_item__tBdan",
          B_ = "Tab-module_tab_item_active__6rfwe";
        c(
        '.Tab-module_parakeet_comp_tab__Zx-vZ{display:flex;font-weight:600;margin-bottom:16px}.Tab-module_tab_item__tBdan{border:none;color:rgba(51,51,51,.7);cursor:pointer;flex:1;font-size:18px;height:35px;line-height:130%;position:relative;text-align:center}.Tab-module_tab_item__tBdan:after{background-color:hsla(0,0%,90%,.6);bottom:-2px;content:"";height:2px;left:0;position:absolute;width:100%}.Tab-module_tab_item__tBdan:first-child:after{border-radius:2px 0 0 2px}.Tab-module_tab_item__tBdan:last-child:after{border-radius:0 2px 2px 0}.Tab-module_tab_item_active__6rfwe{color:#333;height:34px}.Tab-module_tab_item_active__6rfwe:after{background-color:#333;border-radius:1px!important;bottom:-3px!important;content:"";height:3px!important;left:0;position:absolute;width:100%}@media screen and (max-width:959px){.Tab-module_parakeet_comp_tab__Zx-vZ{padding:0 16px}.eva .parakeet_comp_tab{padding:0}.hero .parakeet_comp_tab,.nova .parakeet_comp_tab,.wind .parakeet_comp_tab{margin-top:26px}.flash .parakeet_comp_tab{margin-top:26px;padding:0 8px}.flash #app-parakeet{padding:0 10px}.dj_skin_body .parakeet_comp_tab{margin-top:26px}}');
        var z_ = dt((e => {
          var {
            tabs: t,
            onChange: n,
            value: r
          } = e, [i, o] = qe(0);
          return Ze((() => {
            o(r)
          }), [r]), gl("div", {
            className: ul(["parakeet_comp_tab", L_]),
            children: t.map((e => gl("div", {
              className: ul([
                [F_], {
                  [B_]: i === e
                }
              ]),
              onClick: () => {
                o(e), n(e)
              },
              children: e
            }, e)))
          })
        }));

        function H_(e) {
          var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {},
            n = [];
          return Jt.Children.forEach(e, (function(e) {
            (null != e || t.keepEmpty) && (Array.isArray(e) ? n = n.concat(H_(e)) : an.exports.isFragment(e) && e.props ? n = n.concat(H_(e.props.children, t)) : n.push(e))
          })), n
        }
        var U_ = function() {
          if ("undefined" == typeof navigator || "undefined" == typeof window) return !1;
          var e = navigator.userAgent || navigator.vendor || window.opera;
          return /(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i
            .test(e) ||
            /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw-(n|u)|c55\/|capi|ccwa|cdm-|cell|chtm|cldc|cmd-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc-s|devi|dica|dmob|do(c|p)o|ds(12|-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(-|_)|g1 u|g560|gene|gf-5|g-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd-(m|p|t)|hei-|hi(pt|ta)|hp( i|ip)|hs-c|ht(c(-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i-(20|go|ma)|i230|iac( |-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|-[a-w])|libw|lynx|m1-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|-([1-8]|c))|phil|pire|pl(ay|uc)|pn-2|po(ck|rt|se)|prox|psio|pt-g|qa-a|qc(07|12|21|32|60|-[2-7]|i-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h-|oo|p-)|sdk\/|se(c(-|0|1)|47|mc|nd|ri)|sgh-|shar|sie(-|m)|sk-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h-|v-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl-|tdg-|tel(i|m)|tim-|t-mo|to(pl|sh)|ts(70|m-|m3|m5)|tx-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas-|your|zeto|zte-/i
            .test(null == e ? void 0 : e.substr(0, 4))
        };

        function W_(e) {
          var t = Je();
          t.current = e;
          var n = tt((function() {
            for (var e, n = arguments.length, r = new Array(n), i = 0; i < n; i++) r[i] = arguments[i];
            return null === (e = t.current) || void 0 === e ? void 0 : e.call.apply(e, [t].concat(r))
          }), []);
          return n
        }

        function V_(e) {
          return void 0 !== e
        }

        function X_(e, t) {
          var n = t || {},
            r = n.defaultValue,
            i = n.value,
            o = n.onChange,
            a = n.postState,
            s = ap(Lp((function() {
              return V_(i) ? i : V_(r) ? "function" == typeof r ? r() : r : "function" == typeof e ? e() : e
            })), 2),
            l = s[0],
            c = s[1],
            u = void 0 !== i ? i : l,
            h = a ? a(u) : u,
            p = W_(o),
            d = ap(Lp([u]), 2),
            f = d[0],
            g = d[1];
          return Ov((function() {
            var e = f[0];
            l !== e && p(l, e)
          }), [f]), Ov((function() {
            V_(i) || c(i)
          }), [i]), [h, W_((function(e, t) {
            c(e, t), g([u], t)
          }))]
        }
        var G_ = new Map;
        var Y_ = new ol((function(e) {
          e.forEach((function(e) {
            var t, n = e.target;
            null === (t = G_.get(n)) || void 0 === t || t.forEach((function(e) {
              return e(n)
            }))
          }))
        }));
        var q_ = function(e) {
            nh(n, e);
            var t = ah(n);

            function n() {
              return Zu(this, n), t.apply(this, arguments)
            }
            return eh(n, [{
              key: "render",
              value: function() {
                return this.props.children
              }
            }]), n
          }(fe),
          K_ = je(null);

        function Z_(e, t) {
          var n = e.children,
            r = e.disabled,
            i = Je(null),
            o = Je(null),
            a = nt(K_),
            s = "function" == typeof n,
            l = s ? n(i) : n,
            c = Je({
              width: -1,
              height: -1,
              offsetWidth: -1,
              offsetHeight: -1
            }),
            u = !s && Xt(l) && hp(l),
            h = u ? l.ref : null,
            p = et((function() {
              return up(h, i)
            }), [h, i]),
            d = function() {
              return sp(i.current) || sp(o.current)
            };
          Qe(t, (function() {
            return d()
          }));
          var f = Je(e);
          f.current = e;
          var g = tt((function(e) {
            var t = f.current,
              n = t.onResize,
              r = t.data,
              i = e.getBoundingClientRect(),
              o = i.width,
              s = i.height,
              l = e.offsetWidth,
              u = e.offsetHeight,
              h = Math.floor(o),
              p = Math.floor(s);
            if (c.current.width !== h || c.current.height !== p || c.current.offsetWidth !== l || c.current.offsetHeight !== u) {
              var d = {
                width: h,
                height: p,
                offsetWidth: l,
                offsetHeight: u
              };
              c.current = d;
              var g = l === Math.round(o) ? o : l,
                m = u === Math.round(s) ? s : u,
                v = mh(mh({}, d), {}, {
                  offsetWidth: g,
                  offsetHeight: m
                });
              null == a || a(v, e, r), n && Promise.resolve().then((function() {
                n(v, e)
              }))
            }
          }), []);
          return Ze((function() {
            var e, t, n = d();
            return n && !r && (e = n, t = g, G_.has(e) || (G_.set(e, new Set), Y_.observe(e)), G_.get(e).add(t)),
              function() {
                return function(e, t) {
                  G_.has(e) && (G_.get(e).delete(t), G_.get(e).size || (Y_.unobserve(e), G_.delete(e)))
                }(n, g)
              }
          }), [i.current, r]), ue(q_, {
            ref: o
          }, u ? Gt(l, {
            ref: p
          }) : l)
        }
        var $_ = mt(Z_);

        function J_(e, t) {
          var n = e.children;
          return ("function" == typeof n ? [n] : H_(n)).map((function(n, r) {
            var i = (null == n ? void 0 : n.key) || "".concat("rc-observer-key", "-").concat(r);
            return ue($_, Ku({}, e, {
              key: i,
              ref: 0 === r ? t : void 0
            }), n)
          }))
        }
        var Q_ = mt(J_);
        Q_.Collection = function(e) {
          var t = e.children,
            n = e.onBatchResize,
            r = Je(0),
            i = Je([]),
            o = nt(K_),
            a = tt((function(e, t, a) {
              r.current += 1;
              var s = r.current;
              i.current.push({
                size: e,
                element: t,
                data: a
              }), Promise.resolve().then((function() {
                s === r.current && (null == n || n(i.current), i.current = [])
              })), null == o || o(e, t, a)
            }), [n, o]);
          return ue(K_.Provider, {
            value: a
          }, t)
        };
        var eb = Q_;

        function tb(e) {
          var t = Je(),
            n = Je(!1);
          return Ze((function() {
              return function() {
                n.current = !0, Vp.cancel(t.current)
              }
            }), []),
            function() {
              for (var r = arguments.length, i = new Array(r), o = 0; o < r; o++) i[o] = arguments[o];
              n.current || (Vp.cancel(t.current), t.current = Vp((function() {
                e.apply(void 0, i)
              })))
            }
        }

        function nb(e, t) {
          var n, r = e.prefixCls,
            i = e.id,
            o = e.active,
            a = e.tab,
            s = a.key,
            l = a.tab,
            c = a.disabled,
            u = a.closeIcon,
            h = e.closable,
            p = e.renderWrapper,
            d = e.removeAriaLabel,
            f = e.editable,
            g = e.onClick,
            m = e.onRemove,
            v = e.onFocus,
            _ = e.style,
            b = "".concat(r, "-tab");
          Ze((function() {
            return m
          }), []);
          var y = f && !1 !== h && !c;

          function w(e) {
            c || g(e)
          }
          var x = ue("div", {
            key: s,
            ref: t,
            className: ul(b, (n = {}, sh(n, "".concat(b, "-with-remove"), y), sh(n, "".concat(b, "-active"), o), sh(n, "".concat(b, "-disabled"), c), n)),
            style: _,
            onClick: w
          }, ue("div", {
            role: "tab",
            "aria-selected": o,
            id: i && "".concat(i, "-tab-").concat(s),
            className: "".concat(b, "-btn"),
            "aria-controls": i && "".concat(i, "-panel-").concat(s),
            "aria-disabled": c,
            tabIndex: c ? null : 0,
            onClick: function(e) {
              e.stopPropagation(), w(e)
            },
            onKeyDown: function(e) {
              [$v.SPACE, $v.ENTER].includes(e.which) && (e.preventDefault(), w(e))
            },
            onFocus: v
          }, l), y && ue("button", {
            type: "button",
            "aria-label": d || "remove",
            tabIndex: 0,
            className: "".concat(b, "-remove"),
            onClick: function(e) {
              var t;
              e.stopPropagation(), (t = e).preventDefault(), t.stopPropagation(), f.onEdit("remove", {
                key: s,
                event: t
              })
            }
          }, u || f.removeIcon || "×"));
          return p ? p(x) : x
        }
        var rb = mt(nb),
          ib = {
            width: 0,
            height: 0,
            left: 0,
            top: 0
          };
        var ob = {
          width: 0,
          height: 0,
          left: 0,
          top: 0,
          right: 0
        };
        var ab = function(e, t, n, r) {
            var i = n ? n.call(r, e, t) : void 0;
            if (void 0 !== i) return !!i;
            if (e === t) return !0;
            if ("object" != typeof e || !e || "object" != typeof t || !t) return !1;
            var o = Object.keys(e),
              a = Object.keys(t);
            if (o.length !== a.length) return !1;
            for (var s = Object.prototype.hasOwnProperty.bind(t), l = 0; l < o.length; l++) {
              var c = o[l];
              if (!s(c)) return !1;
              var u = e[c],
                h = t[c];
              if (!1 === (i = n ? n.call(r, u, h, c) : void 0) || void 0 === i && u !== h) return !1
            }
            return !0
          },
          sb = ["prefixCls", "invalidate", "item", "renderItem", "responsive", "responsiveDisabled", "registerSize", "itemKey", "className", "style", "children", "display", "order", "component"],
          lb = void 0;

        function cb(e, t) {
          var n = e.prefixCls,
            r = e.invalidate,
            i = e.item,
            o = e.renderItem,
            a = e.responsive,
            s = e.responsiveDisabled,
            l = e.registerSize,
            c = e.itemKey,
            u = e.className,
            h = e.style,
            p = e.children,
            d = e.display,
            f = e.order,
            g = e.component,
            m = void 0 === g ? "div" : g,
            v = lh(e, sb),
            _ = a && !d;

          function b(e) {
            l(c, e)
          }
          Ze((function() {
            return function() {
              b(null)
            }
          }), []);
          var y, w = o && i !== lb ? o(i) : p;
          r || (y = {
            opacity: _ ? 0 : 1,
            height: _ ? 0 : lb,
            overflowY: _ ? "hidden" : lb,
            order: a ? f : lb,
            pointerEvents: _ ? "none" : lb,
            position: _ ? "absolute" : lb
          });
          var x = {};
          _ && (x["aria-hidden"] = !0);
          var k = ue(m, Ku({
            className: ul(!r && n, u),
            style: mh(mh({}, y), h)
          }, x, v, {
            ref: t
          }), w);
          return a && (k = ue(eb, {
            onResize: function(e) {
              b(e.offsetWidth)
            },
            disabled: s
          }, k)), k
        }
        var ub = mt(cb);
        ub.displayName = "Item";
        var hb = ub;
        var pb = ["component"],
          db = ["className"],
          fb = ["className"],
          gb = mt((function(e, t) {
            var n = nt(_b);
            if (!n) {
              var r = e.component;
              return ue(void 0 === r ? "div" : r, Ku({}, lh(e, pb), {
                ref: t
              }))
            }
            var i = n.className,
              o = lh(n, db),
              a = e.className,
              s = lh(e, fb);
            return ue(_b.Provider, {
              value: null
            }, ue(hb, Ku({
              ref: t,
              className: ul(i, a)
            }, o, s)))
          }));
        gb.displayName = "RawItem";
        var mb = gb,
          vb = ["prefixCls", "data", "renderItem", "renderRawItem", "itemKey", "itemWidth", "ssr", "style", "className", "maxCount", "renderRest", "renderRawRest", "suffix", "component", "itemComponent", "onVisibleChange"],
          _b = je(null),
          bb = "responsive",
          yb = "invalidate";

        function wb(e) {
          return "+ ".concat(e.length, " ...")
        }

        function xb(e, t) {
          var n, r, i, o, a = e.prefixCls,
            s = void 0 === a ? "rc-overflow" : a,
            l = e.data,
            c = void 0 === l ? [] : l,
            u = e.renderItem,
            h = e.renderRawItem,
            p = e.itemKey,
            d = e.itemWidth,
            f = void 0 === d ? 10 : d,
            g = e.ssr,
            m = e.style,
            v = e.className,
            _ = e.maxCount,
            b = e.renderRest,
            y = e.renderRawRest,
            w = e.suffix,
            x = e.component,
            k = void 0 === x ? "div" : x,
            C = e.itemComponent,
            S = e.onVisibleChange,
            E = lh(e, vb),
            T = (n = ap(Lp({}), 2)[1], r = Je([]), i = 0, o = 0, function(e) {
              var t = i;
              return i += 1, r.current.length < t + 1 && (r.current[t] = e), [r.current[t], function(e) {
                r.current[t] = "function" == typeof e ? e(r.current[t]) : e, Vp.cancel(o), o = Vp((function() {
                  n({}, !0)
                }))
              }]
            }),
            O = "full" === g,
            A = ap(T(null), 2),
            P = A[0],
            M = A[1],
            D = P || 0,
            I = ap(T(new Map), 2),
            R = I[0],
            j = I[1],
            N = ap(T(0), 2),
            L = N[0],
            F = N[1],
            B = ap(T(0), 2),
            z = B[0],
            H = B[1],
            U = ap(T(0), 2),
            W = U[0],
            V = U[1],
            X = ap(qe(null), 2),
            G = X[0],
            Y = X[1],
            q = ap(qe(null), 2),
            K = q[0],
            Z = q[1],
            $ = et((function() {
              return null === K && O ? Number.MAX_SAFE_INTEGER : K || 0
            }), [K, P]),
            J = ap(qe(!1), 2),
            Q = J[0],
            ee = J[1],
            te = "".concat(s, "-item"),
            ne = Math.max(L, z),
            re = _ === bb,
            ie = c.length && re,
            oe = _ === yb,
            ae = ie || "number" == typeof _ && c.length > _,
            se = et((function() {
              var e = c;
              return ie ? e = null === P && O ? c : c.slice(0, Math.min(c.length, D / f)) : "number" == typeof _ && (e = c.slice(0, _)), e
            }), [c, f, P, _, ie]),
            le = et((function() {
              return ie ? c.slice($ + 1) : c.slice(se.length)
            }), [c, se, ie, $]),
            ce = tt((function(e, t) {
              var n;
              return "function" == typeof p ? p(e) : null !== (n = p && (null == e ? void 0 : e[p])) && void 0 !== n ? n : t
            }), [p]),
            he = tt(u || function(e) {
              return e
            }, [u]);

          function pe(e, t, n) {
            (K !== e || void 0 !== t && t !== G) && (Z(e), n || (ee(e < c.length - 1), null == S || S(e)), void 0 !== t && Y(t))
          }

          function de(e, t) {
            j((function(n) {
              var r = new Map(n);
              return null === t ? r.delete(e) : r.set(e, t), r
            }))
          }

          function fe(e) {
            return R.get(ce(se[e], e))
          }
          Tv((function() {
            if (D && ne && se) {
              var e = W,
                t = se.length,
                n = t - 1;
              if (!t) return void pe(0, null);
              for (var r = 0; r < t; r += 1) {
                var i = fe(r);
                if (O && (i = i || 0), void 0 === i) {
                  pe(r - 1, void 0, !0);
                  break
                }
                if (e += i, 0 === n && e <= D || r === n - 1 && e + fe(n) <= D) {
                  pe(n, null);
                  break
                }
                if (e + ne > D) {
                  pe(r - 1, e - i - W + z);
                  break
                }
              }
              w && fe(0) + W > D && Y(null)
            }
          }), [D, R, z, W, ce, se]);
          var ge = Q && !!le.length,
            me = {};
          null !== G && ie && (me = {
            position: "absolute",
            left: G,
            top: 0
          });
          var ve, _e = {
              prefixCls: te,
              responsive: ie,
              component: C,
              invalidate: oe
            },
            be = h ? function(e, t) {
              var n = ce(e, t);
              return ue(_b.Provider, {
                key: n,
                value: mh(mh({}, _e), {}, {
                  order: t,
                  item: e,
                  itemKey: n,
                  registerSize: de,
                  display: t <= $
                })
              }, h(e, t))
            } : function(e, t) {
              var n = ce(e, t);
              return ue(hb, Ku({}, _e, {
                order: t,
                key: n,
                item: e,
                renderItem: he,
                itemKey: n,
                registerSize: de,
                display: t <= $
              }))
            },
            ye = {
              order: ge ? $ : Number.MAX_SAFE_INTEGER,
              className: "".concat(te, "-rest"),
              registerSize: function(e, t) {
                H(t), F(z)
              },
              display: ge
            };
          if (y) y && (ve = ue(_b.Provider, {
            value: mh(mh({}, _e), ye)
          }, y(le)));
          else {
            var we = b || wb;
            ve = ue(hb, Ku({}, _e, ye), "function" == typeof we ? we(le) : we)
          }
          var xe = ue(k, Ku({
            className: ul(!oe && s, v),
            style: m,
            ref: t
          }, E), se.map(be), ae ? ve : null, w && ue(hb, Ku({}, _e, {
            responsive: re,
            responsiveDisabled: !ie,
            order: $,
            className: "".concat(te, "-suffix"),
            registerSize: function(e, t) {
              V(t)
            },
            display: !0,
            style: me
          }), w));
          return re && (xe = ue(eb, {
            onResize: function(e, t) {
              M(t.clientWidth)
            },
            disabled: !ie
          }, xe)), xe
        }
        var kb = mt(xb);
        kb.displayName = "Overflow", kb.Item = mb, kb.RESPONSIVE = bb, kb.INVALIDATE = yb;
        var Cb = kb;

        function Sb(e, t) {
          var n = mh({}, e);
          return Array.isArray(t) && t.forEach((function(e) {
            delete n[e]
          })), n
        }
        var Eb = ["children", "locked"],
          Tb = je(null);

        function Ob(e) {
          var t = e.children,
            n = e.locked,
            r = lh(e, Eb),
            i = nt(Tb),
            o = lp((function() {
              return e = r, t = mh({}, i), Object.keys(e).forEach((function(n) {
                var r = e[n];
                void 0 !== r && (t[n] = r)
              })), t;
              var e, t
            }), [i, r], (function(e, t) {
              return !(n || e[0] === t[0] && ab(e[1], t[1]))
            }));
          return ue(Tb.Provider, {
            value: o
          }, t)
        }

        function Ab(e, t, n, r) {
          var i = nt(Tb),
            o = i.activeKey,
            a = i.onActive,
            s = i.onInactive,
            l = {
              active: o === e
            };
          return t || (l.onMouseEnter = function(t) {
            null == n || n({
              key: e,
              domEvent: t
            }), a(e)
          }, l.onMouseLeave = function(t) {
            null == r || r({
              key: e,
              domEvent: t
            }), s(e)
          }), l
        }
        var Pb = ["item"];

        function Mb(e) {
          var t = e.item,
            n = lh(e, Pb);
          return Object.defineProperty(n, "item", {
            get: function() {
              return Ah(!1, "`info.item` is deprecated since we will move to function component that not provides React Node instance in future."), t
            }
          }), n
        }

        function Db(e) {
          var t = e.icon,
            n = e.props,
            r = e.children;
          return ("function" == typeof t ? ue(t, mh({}, n)) : t) || r || null
        }

        function Ib(e) {
          var t = nt(Tb),
            n = t.mode,
            r = t.rtl,
            i = t.inlineIndent;
          if ("inline" !== n) return null;
          return r ? {
            paddingRight: e * i
          } : {
            paddingLeft: e * i
          }
        }
        var Rb = [],
          jb = je(null);

        function Nb() {
          return nt(jb)
        }
        var Lb = je(Rb);

        function Fb(e) {
          var t = nt(Lb);
          return et((function() {
            return void 0 !== e ? [].concat(fh(t), [e]) : t
          }), [t, e])
        }
        var Bb = je(null),
          zb = je(null);

        function Hb(e, t) {
          return void 0 === e ? null : "".concat(e, "-").concat(t)
        }

        function Ub(e) {
          return Hb(nt(zb), e)
        }
        var Wb = je({}),
          Vb = ["title", "attribute", "elementRef"],
          Xb = ["style", "className", "eventKey", "warnKey", "disabled", "itemIcon", "children", "role", "onMouseEnter", "onMouseLeave", "onClick", "onKeyDown", "onFocus"],
          Gb = ["active"],
          Yb = function(e) {
            nh(n, e);
            var t = ah(n);

            function n() {
              return Zu(this, n), t.apply(this, arguments)
            }
            return eh(n, [{
              key: "render",
              value: function() {
                var e = this.props,
                  t = e.title,
                  n = e.attribute,
                  r = e.elementRef,
                  i = Sb(lh(e, Vb), ["eventKey"]);
                return Ah(!n, "`attribute` of Menu.Item is deprecated. Please pass attribute directly."), ue(Cb.Item, Ku({}, n, {
                  title: "string" == typeof t ? t : void 0
                }, i, {
                  ref: r
                }))
              }
            }]), n
          }(fe),
          qb = function(e) {
            var t, n = e.style,
              r = e.className,
              i = e.eventKey,
              o = e.disabled,
              a = e.itemIcon,
              s = e.children,
              l = e.role,
              c = e.onMouseEnter,
              u = e.onMouseLeave,
              h = e.onClick,
              p = e.onKeyDown,
              d = e.onFocus,
              f = lh(e, Xb),
              g = Ub(i),
              m = nt(Tb),
              v = m.prefixCls,
              _ = m.onItemClick,
              b = m.disabled,
              y = m.overflowDisabled,
              w = m.itemIcon,
              x = m.selectedKeys,
              k = m.onActive,
              C = nt(Wb)._internalRenderMenuItem,
              S = "".concat(v, "-item"),
              E = Je(),
              T = Je(),
              O = b || o,
              A = Fb(i),
              P = function(e) {
                return {
                  key: i,
                  keyPath: fh(A).reverse(),
                  item: E.current,
                  domEvent: e
                }
              },
              M = a || w,
              D = Ab(i, O, c, u),
              I = D.active,
              R = lh(D, Gb),
              j = x.includes(i),
              N = Ib(A.length),
              L = {};
            "option" === e.role && (L["aria-selected"] = j);
            var F = ue(Yb, Ku({
              ref: E,
              elementRef: T,
              role: null === l ? "none" : l || "menuitem",
              tabIndex: o ? null : -1,
              "data-menu-id": y && g ? null : g
            }, f, R, L, {
              component: "li",
              "aria-disabled": o,
              style: mh(mh({}, N), n),
              className: ul(S, (t = {}, sh(t, "".concat(S, "-active"), I), sh(t, "".concat(S, "-selected"), j), sh(t, "".concat(S, "-disabled"), O), t), r),
              onClick: function(e) {
                if (!O) {
                  var t = P(e);
                  null == h || h(Mb(t)), _(t)
                }
              },
              onKeyDown: function(e) {
                if (null == p || p(e), e.which === $v.ENTER) {
                  var t = P(e);
                  null == h || h(Mb(t)), _(t)
                }
              },
              onFocus: function(e) {
                k(i), null == d || d(e)
              }
            }), s, ue(Db, {
              props: mh(mh({}, e), {}, {
                isSelected: j
              }),
              icon: M
            }));
            return C && (F = C(F, e, {
              selected: j
            })), F
          };

        function Kb(e) {
          var t = e.eventKey,
            n = Nb(),
            r = Fb(t);
          return Ze((function() {
            if (n) return n.registerPath(t, r),
              function() {
                n.unregisterPath(t, r)
              }
          }), [r]), n ? null : ue(qb, e)
        }
        var Zb = ["label", "children", "key", "type"];

        function $b(e, t) {
          return H_(e).map((function(e, n) {
            if (Xt(e)) {
              var r, i, o = e.key,
                a = null !== (r = null === (i = e.props) || void 0 === i ? void 0 : i.eventKey) && void 0 !== r ? r : o;
              return null == a && (a = "tmp_key-".concat([].concat(fh(t), [n]).join("-"))), Gt(e, {
                key: a,
                eventKey: a
              })
            }
            return e
          }))
        }

        function Jb(e) {
          return (e || []).map((function(e, t) {
            if (e && "object" === $u(e)) {
              var n = e.label,
                r = e.children,
                i = e.key,
                o = e.type,
                a = lh(e, Zb),
                s = null != i ? i : "tmp-".concat(t);
              return r || "group" === o ? ue("group" === o ? fx : Uw, Ku({
                key: s
              }, a, {
                title: n
              }), Jb(r)) : "divider" === o ? ue(gx, Ku({
                key: s
              }, a)) : ue(Kb, Ku({
                key: s
              }, a), n)
            }
            return null
          })).filter((function(e) {
            return e
          }))
        }

        function Qb(e, t, n) {
          var r = e;
          return t && (r = Jb(t)), $b(r, n)
        }

        function ey(e) {
          var t = Je(e);
          t.current = e;
          var n = tt((function() {
            for (var e, n = arguments.length, r = new Array(n), i = 0; i < n; i++) r[i] = arguments[i];
            return null === (e = t.current) || void 0 === e ? void 0 : e.call.apply(e, [t].concat(r))
          }), []);
          return e ? n : void 0
        }
        var ty = ["className", "children"],
          ny = mt((function(e, t) {
            var n = e.className,
              r = e.children,
              i = lh(e, ty),
              o = nt(Tb),
              a = o.prefixCls,
              s = o.mode,
              l = o.rtl;
            return ue("ul", Ku({
              className: ul(a, l && "".concat(a, "-rtl"), "".concat(a, "-sub"), "".concat(a, "-").concat("inline" === s ? "inline" : "vertical"), n)
            }, i, {
              "data-menu-list": !0,
              ref: t
            }), r)
          }));
        ny.displayName = "SubMenuList";
        var ry = ny;

        function iy(e, t, n, r) {
          var i = Jt.unstable_batchedUpdates ? function(e) {
            Jt.unstable_batchedUpdates(n, e)
          } : n;
          return e.addEventListener && e.addEventListener(t, i, r), {
            remove: function() {
              e.removeEventListener && e.removeEventListener(t, i, r)
            }
          }
        }
        var oy, ay = mt((function(e, t) {
            var n = e.didUpdate,
              r = e.getContainer,
              i = e.children,
              o = Je(),
              a = Je();
            Qe(t, (function() {
              return {}
            }));
            var s = Je(!1);
            return !s.current && pp() && (a.current = r(), o.current = a.current.parentNode, s.current = !0), Ze((function() {
              null == n || n(e)
            })), Ze((function() {
              return null === a.current.parentNode && null !== o.current && o.current.appendChild(a.current),
                function() {
                  var e, t;
                  null === (e = a.current) || void 0 === e || null === (t = e.parentNode) || void 0 === t || t.removeChild(a.current)
                }
            }), []), a.current ? Jt.createPortal(i, a.current) : null
          })),
          sy = ay;

        function ly(e, t, n) {
          return n ? e[0] === t[0] : e[0] === t[0] && e[1] === t[1]
        }

        function cy(e) {
          var t = e.prefixCls,
            n = e.motion,
            r = e.animation,
            i = e.transitionName;
          return n || (r ? {
            motionName: "".concat(t, "-").concat(r)
          } : i ? {
            motionName: i
          } : null)
        }

        function uy(e) {
          var t = e.prefixCls,
            n = e.visible,
            r = e.zIndex,
            i = e.mask,
            o = e.maskMotion,
            a = e.maskAnimation,
            s = e.maskTransitionName;
          if (!i) return null;
          var l = {};
          return (o || s || a) && (l = mh({
            motionAppear: !0
          }, cy({
            motion: o,
            prefixCls: t,
            transitionName: s,
            animation: a
          }))), ue(Jp, Ku({}, l, {
            visible: n,
            removeOnLeave: !0
          }), (function(e) {
            var n = e.className;
            return ue("div", {
              style: {
                zIndex: r
              },
              className: ul("".concat(t, "-mask"), n)
            })
          }))
        }

        function hy(e, t) {
          var n = Object.keys(e);
          if (Object.getOwnPropertySymbols) {
            var r = Object.getOwnPropertySymbols(e);
            t && (r = r.filter((function(t) {
              return Object.getOwnPropertyDescriptor(e, t).enumerable
            }))), n.push.apply(n, r)
          }
          return n
        }

        function py(e) {
          for (var t = 1; t < arguments.length; t++) {
            var n = null != arguments[t] ? arguments[t] : {};
            t % 2 ? hy(Object(n), !0).forEach((function(t) {
              fy(e, t, n[t])
            })) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(n)) : hy(Object(n)).forEach((function(t) {
              Object.defineProperty(e, t, Object.getOwnPropertyDescriptor(n, t))
            }))
          }
          return e
        }

        function dy(e) {
          return dy = "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
          }, dy(e)
        }

        function fy(e, t, n) {
          return t in e ? Object.defineProperty(e, t, {
            value: n,
            enumerable: !0,
            configurable: !0,
            writable: !0
          }) : e[t] = n, e
        }
        var gy = {
          Webkit: "-webkit-",
          Moz: "-moz-",
          ms: "-ms-",
          O: "-o-"
        };

        function my() {
          if (void 0 !== oy) return oy;
          oy = "";
          var e = document.createElement("p").style;
          for (var t in gy) t + "Transform" in e && (oy = t);
          return oy
        }

        function vy() {
          return my() ? "".concat(my(), "TransitionProperty") : "transitionProperty"
        }

        function _y() {
          return my() ? "".concat(my(), "Transform") : "transform"
        }

        function by(e, t) {
          var n = vy();
          n && (e.style[n] = t, "transitionProperty" !== n && (e.style.transitionProperty = t))
        }

        function yy(e, t) {
          var n = _y();
          n && (e.style[n] = t, "transform" !== n && (e.style.transform = t))
        }
        var wy, xy = /matrix\((.*)\)/,
          ky = /matrix3d\((.*)\)/;

        function Cy(e) {
          var t = e.style.display;
          e.style.display = "none", e.style.display = t
        }

        function Sy(e, t, n) {
          var r = n;
          if ("object" !== dy(t)) return void 0 !== r ? ("number" == typeof r && (r = "".concat(r, "px")), void(e.style[t] = r)) : wy(e, t);
          for (var i in t) t.hasOwnProperty(i) && Sy(e, i, t[i])
        }

        function Ey(e, t) {
          var n = e["page".concat(t ? "Y" : "X", "Offset")],
            r = "scroll".concat(t ? "Top" : "Left");
          if ("number" != typeof n) {
            var i = e.document;
            "number" != typeof(n = i.documentElement[r]) && (n = i.body[r])
          }
          return n
        }

        function Ty(e) {
          return Ey(e)
        }

        function Oy(e) {
          return Ey(e, !0)
        }

        function Ay(e) {
          var t = function(e) {
              var t, n, r, i = e.ownerDocument,
                o = i.body,
                a = i && i.documentElement;
              return t = e.getBoundingClientRect(), n = Math.floor(t.left), r = Math.floor(t.top), {
                left: n -= a.clientLeft || o.clientLeft || 0,
                top: r -= a.clientTop || o.clientTop || 0
              }
            }(e),
            n = e.ownerDocument,
            r = n.defaultView || n.parentWindow;
          return t.left += Ty(r), t.top += Oy(r), t
        }

        function Py(e) {
          return null != e && e == e.window
        }

        function My(e) {
          return Py(e) ? e.document : 9 === e.nodeType ? e : e.ownerDocument
        }
        var Dy = new RegExp("^(".concat(/[\-+]?(?:\d*\.|)\d+(?:[eE][\-+]?\d+|)/.source, ")(?!px)[a-z%]+$"), "i"),
          Iy = /^(top|right|bottom|left)$/;

        function Ry(e, t) {
          return "left" === e ? t.useCssRight ? "right" : e : t.useCssBottom ? "bottom" : e
        }

        function jy(e) {
          return "left" === e ? "right" : "right" === e ? "left" : "top" === e ? "bottom" : "bottom" === e ? "top" : void 0
        }

        function Ny(e, t, n) {
          "static" === Sy(e, "position") && (e.style.position = "relative");
          var r = -999,
            i = -999,
            o = Ry("left", n),
            a = Ry("top", n),
            s = jy(o),
            l = jy(a);
          "left" !== o && (r = 999), "top" !== a && (i = 999);
          var c, u = "",
            h = Ay(e);
          ("left" in t || "top" in t) && (u = (c = e).style.transitionProperty || c.style[vy()] || "", by(e, "none")), "left" in t && (e.style[s] = "", e.style[o] = "".concat(r, "px")), "top" in t && (e.style[l] = "", e.style[a] = "".concat(i,
            "px")), Cy(e);
          var p = Ay(e),
            d = {};
          for (var f in t)
            if (t.hasOwnProperty(f)) {
              var g = Ry(f, n),
                m = "left" === f ? r : i,
                v = h[f] - p[f];
              d[g] = g === f ? m + v : m - v
            } Sy(e, d), Cy(e), ("left" in t || "top" in t) && by(e, u);
          var _ = {};
          for (var b in t)
            if (t.hasOwnProperty(b)) {
              var y = Ry(b, n),
                w = t[b] - h[b];
              _[y] = b === y ? d[y] + w : d[y] - w
            } Sy(e, _)
        }

        function Ly(e, t) {
          var n = Ay(e),
            r = function(e) {
              var t = window.getComputedStyle(e, null),
                n = t.getPropertyValue("transform") || t.getPropertyValue(_y());
              if (n && "none" !== n) {
                var r = n.replace(/[^0-9\-.,]/g, "").split(",");
                return {
                  x: parseFloat(r[12] || r[4], 0),
                  y: parseFloat(r[13] || r[5], 0)
                }
              }
              return {
                x: 0,
                y: 0
              }
            }(e),
            i = {
              x: r.x,
              y: r.y
            };
          "left" in t && (i.x = r.x + t.left - n.left), "top" in t && (i.y = r.y + t.top - n.top),
            function(e, t) {
              var n = window.getComputedStyle(e, null),
                r = n.getPropertyValue("transform") || n.getPropertyValue(_y());
              if (r && "none" !== r) {
                var i, o = r.match(xy);
                o ? ((i = (o = o[1]).split(",").map((function(e) {
                  return parseFloat(e, 10)
                })))[4] = t.x, i[5] = t.y, yy(e, "matrix(".concat(i.join(","), ")"))) : ((i = r.match(ky)[1].split(",").map((function(e) {
                  return parseFloat(e, 10)
                })))[12] = t.x, i[13] = t.y, yy(e, "matrix3d(".concat(i.join(","), ")")))
              } else yy(e, "translateX(".concat(t.x, "px) translateY(").concat(t.y, "px) translateZ(0)"))
            }(e, i)
        }

        function Fy(e, t) {
          for (var n = 0; n < e.length; n++) t(e[n])
        }

        function By(e) {
          return "border-box" === wy(e, "boxSizing")
        }
        "undefined" != typeof window && (wy = window.getComputedStyle ? function(e, t, n) {
          var r = n,
            i = "",
            o = My(e);
          return (r = r || o.defaultView.getComputedStyle(e, null)) && (i = r.getPropertyValue(t) || r[t]), i
        } : function(e, t) {
          var n = e.currentStyle && e.currentStyle[t];
          if (Dy.test(n) && !Iy.test(t)) {
            var r = e.style,
              i = r.left,
              o = e.runtimeStyle.left;
            e.runtimeStyle.left = e.currentStyle.left, r.left = "fontSize" === t ? "1em" : n || 0, n = r.pixelLeft + "px", r.left = i, e.runtimeStyle.left = o
          }
          return "" === n ? "auto" : n
        });
        var zy = ["margin", "border", "padding"];

        function Hy(e, t, n) {
          var r, i = {},
            o = e.style;
          for (r in t) t.hasOwnProperty(r) && (i[r] = o[r], o[r] = t[r]);
          for (r in n.call(e), t) t.hasOwnProperty(r) && (o[r] = i[r])
        }

        function Uy(e, t, n) {
          var r, i, o, a = 0;
          for (i = 0; i < t.length; i++)
            if (r = t[i])
              for (o = 0; o < n.length; o++) {
                var s = void 0;
                s = "border" === r ? "".concat(r).concat(n[o], "Width") : r + n[o], a += parseFloat(wy(e, s)) || 0
              }
          return a
        }
        var Wy = {
          getParent: function(e) {
            var t = e;
            do {
              t = 11 === t.nodeType && t.host ? t.host : t.parentNode
            } while (t && 1 !== t.nodeType && 9 !== t.nodeType);
            return t
          }
        };

        function Vy(e, t, n) {
          var r = n;
          if (Py(e)) return "width" === t ? Wy.viewportWidth(e) : Wy.viewportHeight(e);
          if (9 === e.nodeType) return "width" === t ? Wy.docWidth(e) : Wy.docHeight(e);
          var i = "width" === t ? ["Left", "Right"] : ["Top", "Bottom"],
            o = "width" === t ? Math.floor(e.getBoundingClientRect().width) : Math.floor(e.getBoundingClientRect().height),
            a = By(e),
            s = 0;
          (null == o || o <= 0) && (o = void 0, (null == (s = wy(e, t)) || Number(s) < 0) && (s = e.style[t] || 0), s = Math.floor(parseFloat(s)) || 0), void 0 === r && (r = a ? 1 : -1);
          var l = void 0 !== o || a,
            c = o || s;
          return -1 === r ? l ? c - Uy(e, ["border", "padding"], i) : s : l ? 1 === r ? c : c + (2 === r ? -Uy(e, ["border"], i) : Uy(e, ["margin"], i)) : s + Uy(e, zy.slice(r), i)
        }
        Fy(["Width", "Height"], (function(e) {
          Wy["doc".concat(e)] = function(t) {
            var n = t.document;
            return Math.max(n.documentElement["scroll".concat(e)], n.body["scroll".concat(e)], Wy["viewport".concat(e)](n))
          }, Wy["viewport".concat(e)] = function(t) {
            var n = "client".concat(e),
              r = t.document,
              i = r.body,
              o = r.documentElement[n];
            return "CSS1Compat" === r.compatMode && o || i && i[n] || o
          }
        }));
        var Xy = {
          position: "absolute",
          visibility: "hidden",
          display: "block"
        };

        function Gy() {
          for (var e = arguments.length, t = new Array(e), n = 0; n < e; n++) t[n] = arguments[n];
          var r, i = t[0];
          return 0 !== i.offsetWidth ? r = Vy.apply(void 0, t) : Hy(i, Xy, (function() {
            r = Vy.apply(void 0, t)
          })), r
        }

        function Yy(e, t) {
          for (var n in t) t.hasOwnProperty(n) && (e[n] = t[n]);
          return e
        }
        Fy(["width", "height"], (function(e) {
          var t = e.charAt(0).toUpperCase() + e.slice(1);
          Wy["outer".concat(t)] = function(t, n) {
            return t && Gy(t, e, n ? 0 : 1)
          };
          var n = "width" === e ? ["Left", "Right"] : ["Top", "Bottom"];
          Wy[e] = function(t, r) {
            var i = r;
            return void 0 !== i ? t ? (By(t) && (i += Uy(t, ["padding", "border"], n)), Sy(t, e, i)) : void 0 : t && Gy(t, e, -1)
          }
        }));
        var qy = {
          getWindow: function(e) {
            if (e && e.document && e.setTimeout) return e;
            var t = e.ownerDocument || e;
            return t.defaultView || t.parentWindow
          },
          getDocument: My,
          offset: function(e, t, n) {
            if (void 0 === t) return Ay(e);
            ! function(e, t, n) {
              if (n.ignoreShake) {
                var r = Ay(e),
                  i = r.left.toFixed(0),
                  o = r.top.toFixed(0),
                  a = t.left.toFixed(0),
                  s = t.top.toFixed(0);
                if (i === a && o === s) return
              }
              n.useCssRight || n.useCssBottom ? Ny(e, t, n) : n.useCssTransform && _y() in document.body.style ? Ly(e, t) : Ny(e, t, n)
            }(e, t, n || {})
          },
          isWindow: Py,
          each: Fy,
          css: Sy,
          clone: function(e) {
            var t, n = {};
            for (t in e) e.hasOwnProperty(t) && (n[t] = e[t]);
            if (e.overflow)
              for (t in e) e.hasOwnProperty(t) && (n.overflow[t] = e.overflow[t]);
            return n
          },
          mix: Yy,
          getWindowScrollLeft: function(e) {
            return Ty(e)
          },
          getWindowScrollTop: function(e) {
            return Oy(e)
          },
          merge: function() {
            for (var e = {}, t = 0; t < arguments.length; t++) qy.mix(e, t < 0 || arguments.length <= t ? void 0 : arguments[t]);
            return e
          },
          viewportWidth: 0,
          viewportHeight: 0
        };
        Yy(qy, Wy);
        var Ky = qy.getParent;

        function Zy(e) {
          if (qy.isWindow(e) || 9 === e.nodeType) return null;
          var t, n = qy.getDocument(e).body,
            r = qy.css(e, "position");
          if (!("fixed" === r || "absolute" === r)) return "html" === e.nodeName.toLowerCase() ? null : Ky(e);
          for (t = Ky(e); t && t !== n && 9 !== t.nodeType; t = Ky(t))
            if ("static" !== (r = qy.css(t, "position"))) return t;
          return null
        }
        var $y = qy.getParent;

        function Jy(e, t) {
          for (var n = {
              left: 0,
              right: 1 / 0,
              top: 0,
              bottom: 1 / 0
            }, r = Zy(e), i = qy.getDocument(e), o = i.defaultView || i.parentWindow, a = i.body, s = i.documentElement; r;) {
            if (-1 !== navigator.userAgent.indexOf("MSIE") && 0 === r.clientWidth || r === a || r === s || "visible" === qy.css(r, "overflow")) {
              if (r === a || r === s) break
            } else {
              var l = qy.offset(r);
              l.left += r.clientLeft, l.top += r.clientTop, n.top = Math.max(n.top, l.top), n.right = Math.min(n.right, l.left + r.clientWidth), n.bottom = Math.min(n.bottom, l.top + r.clientHeight), n.left = Math.max(n.left, l.left)
            }
            r = Zy(r)
          }
          var c = null;
          qy.isWindow(e) || 9 === e.nodeType || (c = e.style.position, "absolute" === qy.css(e, "position") && (e.style.position = "fixed"));
          var u = qy.getWindowScrollLeft(o),
            h = qy.getWindowScrollTop(o),
            p = qy.viewportWidth(o),
            d = qy.viewportHeight(o),
            f = s.scrollWidth,
            g = s.scrollHeight,
            m = window.getComputedStyle(a);
          if ("hidden" === m.overflowX && (f = o.innerWidth), "hidden" === m.overflowY && (g = o.innerHeight), e.style && (e.style.position = c), t || function(e) {
              if (qy.isWindow(e) || 9 === e.nodeType) return !1;
              var t = qy.getDocument(e),
                n = t.body,
                r = null;
              for (r = $y(e); r && r !== n && r !== t; r = $y(r))
                if ("fixed" === qy.css(r, "position")) return !0;
              return !1
            }(e)) n.left = Math.max(n.left, u), n.top = Math.max(n.top, h), n.right = Math.min(n.right, u + p), n.bottom = Math.min(n.bottom, h + d);
          else {
            var v = Math.max(f, u + p);
            n.right = Math.min(n.right, v);
            var _ = Math.max(g, h + d);
            n.bottom = Math.min(n.bottom, _)
          }
          return n.top >= 0 && n.left >= 0 && n.bottom > n.top && n.right > n.left ? n : null
        }

        function Qy(e) {
          var t, n, r;
          if (qy.isWindow(e) || 9 === e.nodeType) {
            var i = qy.getWindow(e);
            t = {
              left: qy.getWindowScrollLeft(i),
              top: qy.getWindowScrollTop(i)
            }, n = qy.viewportWidth(i), r = qy.viewportHeight(i)
          } else t = qy.offset(e), n = qy.outerWidth(e), r = qy.outerHeight(e);
          return t.width = n, t.height = r, t
        }

        function ew(e, t) {
          var n = t.charAt(0),
            r = t.charAt(1),
            i = e.width,
            o = e.height,
            a = e.left,
            s = e.top;
          return "c" === n ? s += o / 2 : "b" === n && (s += o), "c" === r ? a += i / 2 : "r" === r && (a += i), {
            left: a,
            top: s
          }
        }

        function tw(e, t, n, r, i) {
          var o = ew(t, n[1]),
            a = ew(e, n[0]),
            s = [a.left - o.left, a.top - o.top];
          return {
            left: Math.round(e.left - s[0] + r[0] - i[0]),
            top: Math.round(e.top - s[1] + r[1] - i[1])
          }
        }

        function nw(e, t, n) {
          return e.left < n.left || e.left + t.width > n.right
        }

        function rw(e, t, n) {
          return e.top < n.top || e.top + t.height > n.bottom
        }

        function iw(e, t, n) {
          var r = [];
          return qy.each(e, (function(e) {
            r.push(e.replace(t, (function(e) {
              return n[e]
            })))
          })), r
        }

        function ow(e, t) {
          return e[t] = -e[t], e
        }

        function aw(e, t) {
          return (/%$/.test(e) ? parseInt(e.substring(0, e.length - 1), 10) / 100 * t : parseInt(e, 10)) || 0
        }

        function sw(e, t) {
          e[0] = aw(e[0], t.width), e[1] = aw(e[1], t.height)
        }

        function lw(e, t, n, r) {
          var i = n.points,
            o = n.offset || [0, 0],
            a = n.targetOffset || [0, 0],
            s = n.overflow,
            l = n.source || e;
          o = [].concat(o), a = [].concat(a);
          var c = {},
            u = 0,
            h = Jy(l, !(!(s = s || {}) || !s.alwaysByViewport)),
            p = Qy(l);
          sw(o, p), sw(a, t);
          var d = tw(p, t, i, o, a),
            f = qy.merge(p, d);
          if (h && (s.adjustX || s.adjustY) && r) {
            if (s.adjustX && nw(d, p, h)) {
              var g = iw(i, /[lr]/gi, {
                  l: "r",
                  r: "l"
                }),
                m = ow(o, 0),
                v = ow(a, 0);
              (function(e, t, n) {
                return e.left > n.right || e.left + t.width < n.left
              })(tw(p, t, g, m, v), p, h) || (u = 1, i = g, o = m, a = v)
            }
            if (s.adjustY && rw(d, p, h)) {
              var _ = iw(i, /[tb]/gi, {
                  t: "b",
                  b: "t"
                }),
                b = ow(o, 1),
                y = ow(a, 1);
              (function(e, t, n) {
                return e.top > n.bottom || e.top + t.height < n.top
              })(tw(p, t, _, b, y), p, h) || (u = 1, i = _, o = b, a = y)
            }
            u && (d = tw(p, t, i, o, a), qy.mix(f, d));
            var w = nw(d, p, h),
              x = rw(d, p, h);
            if (w || x) {
              var k = i;
              w && (k = iw(i, /[lr]/gi, {
                l: "r",
                r: "l"
              })), x && (k = iw(i, /[tb]/gi, {
                t: "b",
                b: "t"
              })), i = k, o = n.offset || [0, 0], a = n.targetOffset || [0, 0]
            }
            c.adjustX = s.adjustX && w, c.adjustY = s.adjustY && x, (c.adjustX || c.adjustY) && (f = function(e, t, n, r) {
              var i = qy.clone(e),
                o = {
                  width: t.width,
                  height: t.height
                };
              return r.adjustX && i.left < n.left && (i.left = n.left), r.resizeWidth && i.left >= n.left && i.left + o.width > n.right && (o.width -= i.left + o.width - n.right), r.adjustX && i.left + o.width > n.right && (i.left = Math.max(
                  n.right - o.width, n.left)), r.adjustY && i.top < n.top && (i.top = n.top), r.resizeHeight && i.top >= n.top && i.top + o.height > n.bottom && (o.height -= i.top + o.height - n.bottom), r.adjustY && i.top + o.height > n
                .bottom && (i.top = Math.max(n.bottom - o.height, n.top)), qy.mix(i, o)
            }(d, p, h, c))
          }
          return f.width !== p.width && qy.css(l, "width", qy.width(l) + f.width - p.width), f.height !== p.height && qy.css(l, "height", qy.height(l) + f.height - p.height), qy.offset(l, {
            left: f.left,
            top: f.top
          }, {
            useCssRight: n.useCssRight,
            useCssBottom: n.useCssBottom,
            useCssTransform: n.useCssTransform,
            ignoreShake: n.ignoreShake
          }), {
            points: i,
            offset: o,
            targetOffset: a,
            overflow: c
          }
        }

        function cw(e, t, n) {
          var r = n.target || t,
            i = Qy(r),
            o = ! function(e, t) {
              var n = Jy(e, t),
                r = Qy(e);
              return !n || r.left + r.width <= n.left || r.top + r.height <= n.top || r.left >= n.right || r.top >= n.bottom
            }(r, n.overflow && n.overflow.alwaysByViewport);
          return lw(e, i, n, o)
        }

        function uw(e, t) {
          var n = arguments.length > 2 && void 0 !== arguments[2] && arguments[2],
            r = new Set;

          function i(e, t) {
            var o = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 1,
              a = r.has(e);
            if (Ah(!a, "Warning: There may be circular references"), a) return !1;
            if (e === t) return !0;
            if (n && o > 1) return !1;
            r.add(e);
            var s = o + 1;
            if (Array.isArray(e)) {
              if (!Array.isArray(t) || e.length !== t.length) return !1;
              for (var l = 0; l < e.length; l++)
                if (!i(e[l], t[l], s)) return !1;
              return !0
            }
            if (e && t && "object" === $u(e) && "object" === $u(t)) {
              var c = Object.keys(e);
              return c.length === Object.keys(t).length && c.every((function(n) {
                return i(e[n], t[n], s)
              }))
            }
            return !1
          }
          return i(e, t)
        }
        cw.__getOffsetParent = Zy, cw.__getVisibleRectForElement = Jy;
        var hw = function(e) {
          if (!e) return !1;
          if (e instanceof HTMLElement && e.offsetParent) return !0;
          if (e instanceof SVGGraphicsElement && e.getBBox) {
            var t = e.getBBox(),
              n = t.width,
              r = t.height;
            if (n || r) return !0
          }
          if (e instanceof HTMLElement && e.getBoundingClientRect) {
            var i = e.getBoundingClientRect(),
              o = i.width,
              a = i.height;
            if (o || a) return !0
          }
          return !1
        };

        function pw(e, t) {
          var n = null,
            r = null;
          var i = new ol((function(e) {
            var i = ap(e, 1)[0].target;
            if (document.documentElement.contains(i)) {
              var o = i.getBoundingClientRect(),
                a = o.width,
                s = o.height,
                l = Math.floor(a),
                c = Math.floor(s);
              n === l && r === c || Promise.resolve().then((function() {
                t({
                  width: l,
                  height: c
                })
              })), n = l, r = c
            }
          }));
          return e && i.observe(e),
            function() {
              i.disconnect()
            }
        }

        function dw(e) {
          return "function" != typeof e ? null : e()
        }

        function fw(e) {
          return "object" === $u(e) && e ? e : null
        }
        var gw = function(e, t) {
            var n = e.children,
              r = e.disabled,
              i = e.target,
              o = e.align,
              a = e.onAlign,
              s = e.monitorWindowResize,
              l = e.monitorBufferTime,
              c = void 0 === l ? 0 : l,
              u = Jt.useRef({}),
              h = Jt.useRef(),
              p = Jt.Children.only(n),
              d = Jt.useRef({});
            d.current.disabled = r, d.current.target = i, d.current.align = o, d.current.onAlign = a;
            var f = function(e, t) {
                var n = Jt.useRef(!1),
                  r = Jt.useRef(null);

                function i() {
                  window.clearTimeout(r.current)
                }
                return [function o(a) {
                  if (i(), n.current && !0 !== a) r.current = window.setTimeout((function() {
                    n.current = !1, o()
                  }), t);
                  else {
                    if (!1 === e(a)) return;
                    n.current = !0, r.current = window.setTimeout((function() {
                      n.current = !1
                    }), t)
                  }
                }, function() {
                  n.current = !1, i()
                }]
              }((function() {
                var e = d.current,
                  t = e.disabled,
                  n = e.target,
                  r = e.align,
                  i = e.onAlign,
                  o = h.current;
                if (!t && n && o) {
                  var a, s = dw(n),
                    l = fw(n);
                  u.current.element = s, u.current.point = l, u.current.align = r;
                  var c = document.activeElement;
                  return s && hw(s) ? a = cw(o, s, r) : l && (a = function(e, t, n) {
                      var r, i, o = qy.getDocument(e),
                        a = o.defaultView || o.parentWindow,
                        s = qy.getWindowScrollLeft(a),
                        l = qy.getWindowScrollTop(a),
                        c = qy.viewportWidth(a),
                        u = qy.viewportHeight(a),
                        h = {
                          left: r = "pageX" in t ? t.pageX : s + t.clientX,
                          top: i = "pageY" in t ? t.pageY : l + t.clientY,
                          width: 0,
                          height: 0
                        },
                        p = r >= 0 && r <= s + c && i >= 0 && i <= l + u,
                        d = [n.points[0], "cc"];
                      return lw(e, h, py(py({}, n), {}, {
                        points: d
                      }), p)
                    }(o, l, r)),
                    function(e, t) {
                      e !== document.activeElement && Pv(t, e) && "function" == typeof e.focus && e.focus()
                    }(c, o), i && a && i(o, a), !0
                }
                return !1
              }), c),
              g = ap(f, 2),
              m = g[0],
              v = g[1],
              _ = ap(Jt.useState(), 2),
              b = _[0],
              y = _[1],
              w = ap(Jt.useState(), 2),
              x = w[0],
              k = w[1];
            return Tv((function() {
              y(dw(i)), k(fw(i))
            })), Jt.useEffect((function() {
              var e, t;
              u.current.element === b && ((e = u.current.point) === (t = x) || e && t && ("pageX" in t && "pageY" in t ? e.pageX === t.pageX && e.pageY === t.pageY : "clientX" in t && "clientY" in t && e.clientX === t.clientX && e
                .clientY === t.clientY)) && uw(u.current.align, o) || m()
            })), Jt.useEffect((function() {
              return pw(h.current, m)
            }), [h.current]), Jt.useEffect((function() {
              return pw(b, m)
            }), [b]), Jt.useEffect((function() {
              r ? v() : m()
            }), [r]), Jt.useEffect((function() {
              if (s) return iy(window, "resize", m).remove
            }), [s]), Jt.useEffect((function() {
              return function() {
                v()
              }
            }), []), Jt.useImperativeHandle(t, (function() {
              return {
                forceAlign: function() {
                  return m(!0)
                }
              }
            })), Jt.isValidElement(p) && (p = Jt.cloneElement(p, {
              ref: up(p.ref, h)
            })), p
          },
          mw = Jt.forwardRef(gw);
        mw.displayName = "Align";
        var vw = mw,
          _w = ["measure", "alignPre", "align", null, "motion"],
          bw = mt((function(e, t) {
            var n = e.visible,
              r = e.prefixCls,
              i = e.className,
              o = e.style,
              a = e.children,
              s = e.zIndex,
              l = e.stretch,
              c = e.destroyPopupOnHide,
              u = e.forceRender,
              h = e.align,
              p = e.point,
              d = e.getRootDomNode,
              f = e.getClassNameFromAlign,
              g = e.onAlign,
              m = e.onMouseEnter,
              v = e.onMouseLeave,
              _ = e.onMouseDown,
              b = e.onTouchStart,
              y = e.onClick,
              w = Je(),
              x = Je(),
              k = ap(qe(), 2),
              C = k[0],
              S = k[1],
              E = function(e) {
                var t = ap(qe({
                    width: 0,
                    height: 0
                  }), 2),
                  n = t[0],
                  r = t[1],
                  i = et((function() {
                    var t = {};
                    if (e) {
                      var r = n.width,
                        i = n.height; - 1 !== e.indexOf("height") && i ? t.height = i : -1 !== e.indexOf("minHeight") && i && (t.minHeight = i), -1 !== e.indexOf("width") && r ? t.width = r : -1 !== e.indexOf("minWidth") && r && (t
                        .minWidth = r)
                    }
                    return t
                  }), [e, n]);
                return [i, function(e) {
                  var t = e.offsetWidth,
                    n = e.offsetHeight,
                    i = e.getBoundingClientRect(),
                    o = i.width,
                    a = i.height;
                  Math.abs(t - o) < 1 && Math.abs(n - a) < 1 && (t = o, n = a), r({
                    width: t,
                    height: n
                  })
                }]
              }(l),
              T = ap(E, 2),
              O = T[0],
              A = T[1];
            var P = function(e, t) {
                var n = ap(Lp(null), 2),
                  r = n[0],
                  i = n[1],
                  o = Je();

                function a(e) {
                  i(e, !0)
                }

                function s() {
                  Vp.cancel(o.current)
                }
                return Ze((function() {
                  a("measure")
                }), [e]), Ze((function() {
                  "measure" === r && t(), r && (o.current = Vp(hh(ch().mark((function e() {
                    var t, n;
                    return ch().wrap((function(e) {
                      for (;;) switch (e.prev = e.next) {
                        case 0:
                          t = _w.indexOf(r), (n = _w[t + 1]) && -1 !== t && a(n);
                        case 3:
                        case "end":
                          return e.stop()
                      }
                    }), e)
                  })))))
                }), [r]), Ze((function() {
                  return function() {
                    s()
                  }
                }), []), [r, function(e) {
                  s(), o.current = Vp((function() {
                    a((function(e) {
                      switch (r) {
                        case "align":
                          return "motion";
                        case "motion":
                          return "stable"
                      }
                      return e
                    })), null == e || e()
                  }))
                }]
              }(n, (function() {
                l && A(d())
              })),
              M = ap(P, 2),
              D = M[0],
              I = M[1],
              R = ap(qe(0), 2),
              j = R[0],
              N = R[1],
              L = Je();

            function F() {
              var e;
              null === (e = w.current) || void 0 === e || e.forceAlign()
            }

            function B(e, t) {
              var n = f(t);
              C !== n && S(n), N((function(e) {
                return e + 1
              })), "align" === D && (null == g || g(e, t))
            }
            Tv((function() {
              "alignPre" === D && N(0)
            }), [D]), Tv((function() {
              "align" === D && (j < 3 ? F() : I((function() {
                var e;
                null === (e = L.current) || void 0 === e || e.call(L)
              })))
            }), [j]);
            var z = mh({}, cy(e));

            function H() {
              return new Promise((function(e) {
                L.current = e
              }))
            } ["onAppearEnd", "onEnterEnd", "onLeaveEnd"].forEach((function(e) {
              var t = z[e];
              z[e] = function(e, n) {
                return I(), null == t ? void 0 : t(e, n)
              }
            })), Ze((function() {
              z.motionName || "motion" !== D || I()
            }), [z.motionName, D]), Qe(t, (function() {
              return {
                forceAlign: F,
                getElement: function() {
                  return x.current
                }
              }
            }));
            var U = mh(mh({}, O), {}, {
                zIndex: s,
                opacity: "motion" !== D && "stable" !== D && n ? 0 : void 0,
                pointerEvents: n || "stable" === D ? void 0 : "none"
              }, o),
              W = !0;
            null == h || !h.points || "align" !== D && "stable" !== D || (W = !1);
            var V = a;
            return _t.count(a) > 1 && (V = ue("div", {
              className: "".concat(r, "-content")
            }, a)), ue(Jp, Ku({
              visible: n,
              ref: x,
              leavedClassName: "".concat(r, "-hidden")
            }, z, {
              onAppearPrepare: H,
              onEnterPrepare: H,
              removeOnLeave: c,
              forceRender: u
            }), (function(e, t) {
              var n = e.className,
                o = e.style,
                a = ul(r, i, C, n);
              return ue(vw, {
                target: p || d,
                key: "popup",
                ref: w,
                monitorWindowResize: !0,
                disabled: W,
                align: h,
                onAlign: B
              }, ue("div", {
                ref: t,
                className: a,
                onMouseEnter: m,
                onMouseLeave: v,
                onMouseDownCapture: _,
                onTouchStartCapture: b,
                onClick: y,
                style: mh(mh({}, o), U)
              }, V))
            }))
          }));
        bw.displayName = "PopupInner";
        var yw = bw,
          ww = mt((function(e, t) {
            var n = e.prefixCls,
              r = e.visible,
              i = e.zIndex,
              o = e.children,
              a = e.mobile,
              s = (a = void 0 === a ? {} : a).popupClassName,
              l = a.popupStyle,
              c = a.popupMotion,
              u = void 0 === c ? {} : c,
              h = a.popupRender,
              p = e.onClick,
              d = Je();
            Qe(t, (function() {
              return {
                forceAlign: function() {},
                getElement: function() {
                  return d.current
                }
              }
            }));
            var f = mh({
                zIndex: i
              }, l),
              g = o;
            return _t.count(o) > 1 && (g = ue("div", {
              className: "".concat(n, "-content")
            }, o)), h && (g = h(g)), ue(Jp, Ku({
              visible: r,
              ref: d,
              removeOnLeave: !0
            }, u), (function(e, t) {
              var r = e.className,
                i = e.style;
              return ue("div", {
                ref: t,
                className: ul(n, s, r),
                onClick: p,
                style: mh(mh({}, i), f)
              }, g)
            }))
          }));
        ww.displayName = "MobilePopupInner";
        var xw = ww,
          kw = ["visible", "mobile"],
          Cw = mt((function(e, t) {
            var n = e.visible,
              r = e.mobile,
              i = lh(e, kw),
              o = ap(qe(n), 2),
              a = o[0],
              s = o[1],
              l = ap(qe(!1), 2),
              c = l[0],
              u = l[1],
              h = mh(mh({}, i), {}, {
                visible: a
              });
            Ze((function() {
              s(n), n && r && u(U_())
            }), [n, r]);
            var p = c ? ue(xw, Ku({}, h, {
              mobile: r,
              ref: t
            })) : ue(yw, Ku({}, h, {
              ref: t
            }));
            return ue("div", null, ue(uy, h), p)
          }));
        Cw.displayName = "Popup";
        var Sw = Cw,
          Ew = je(null);

        function Tw() {}

        function Ow() {
          return ""
        }

        function Aw(e) {
          return e ? e.ownerDocument : window.document
        }
        var Pw = ["onClick", "onMouseDown", "onTouchStart", "onMouseEnter", "onMouseLeave", "onFocus", "onBlur", "onContextMenu"];
        var Mw = function(e) {
            var t = function(t) {
              nh(r, t);
              var n = ah(r);

              function r(e) {
                var t, i;
                return Zu(this, r), sh(ih(t = n.call(this, e)), "popupRef", pe()), sh(ih(t), "triggerRef", pe()), sh(ih(t), "portalContainer", void 0), sh(ih(t), "attachId", void 0), sh(ih(t), "clickOutsideHandler", void 0), sh(ih(t),
                  "touchOutsideHandler", void 0), sh(ih(t), "contextMenuOutsideHandler1", void 0), sh(ih(t), "contextMenuOutsideHandler2", void 0), sh(ih(t), "mouseDownTimeout", void 0), sh(ih(t), "focusTime", void 0), sh(ih(t),
                  "preClickTime", void 0), sh(ih(t), "preTouchTime", void 0), sh(ih(t), "delayTimer", void 0), sh(ih(t), "hasPopupMouseDown", void 0), sh(ih(t), "onMouseEnter", (function(e) {
                  var n = t.props.mouseEnterDelay;
                  t.fireEvents("onMouseEnter", e), t.delaySetPopupVisible(!0, n, n ? null : e)
                })), sh(ih(t), "onMouseMove", (function(e) {
                  t.fireEvents("onMouseMove", e), t.setPoint(e)
                })), sh(ih(t), "onMouseLeave", (function(e) {
                  t.fireEvents("onMouseLeave", e), t.delaySetPopupVisible(!1, t.props.mouseLeaveDelay)
                })), sh(ih(t), "onPopupMouseEnter", (function() {
                  t.clearDelayTimer()
                })), sh(ih(t), "onPopupMouseLeave", (function(e) {
                  var n;
                  e.relatedTarget && !e.relatedTarget.setTimeout && Pv(null === (n = t.popupRef.current) || void 0 === n ? void 0 : n.getElement(), e.relatedTarget) || t.delaySetPopupVisible(!1, t.props.mouseLeaveDelay)
                })), sh(ih(t), "onFocus", (function(e) {
                  t.fireEvents("onFocus", e), t.clearDelayTimer(), t.isFocusToShow() && (t.focusTime = Date.now(), t.delaySetPopupVisible(!0, t.props.focusDelay))
                })), sh(ih(t), "onMouseDown", (function(e) {
                  t.fireEvents("onMouseDown", e), t.preClickTime = Date.now()
                })), sh(ih(t), "onTouchStart", (function(e) {
                  t.fireEvents("onTouchStart", e), t.preTouchTime = Date.now()
                })), sh(ih(t), "onBlur", (function(e) {
                  t.fireEvents("onBlur", e), t.clearDelayTimer(), t.isBlurToHide() && t.delaySetPopupVisible(!1, t.props.blurDelay)
                })), sh(ih(t), "onContextMenu", (function(e) {
                  e.preventDefault(), t.fireEvents("onContextMenu", e), t.setPopupVisible(!0, e)
                })), sh(ih(t), "onContextMenuClose", (function() {
                  t.isContextMenuToShow() && t.close()
                })), sh(ih(t), "onClick", (function(e) {
                  if (t.fireEvents("onClick", e), t.focusTime) {
                    var n;
                    if (t.preClickTime && t.preTouchTime ? n = Math.min(t.preClickTime, t.preTouchTime) : t.preClickTime ? n = t.preClickTime : t.preTouchTime && (n = t.preTouchTime), Math.abs(n - t.focusTime) < 20) return;
                    t.focusTime = 0
                  }
                  t.preClickTime = 0, t.preTouchTime = 0, t.isClickToShow() && (t.isClickToHide() || t.isBlurToHide()) && e && e.preventDefault && e.preventDefault();
                  var r = !t.state.popupVisible;
                  (t.isClickToHide() && !r || r && t.isClickToShow()) && t.setPopupVisible(!t.state.popupVisible, e)
                })), sh(ih(t), "onPopupMouseDown", (function() {
                  var e;
                  (t.hasPopupMouseDown = !0, clearTimeout(t.mouseDownTimeout), t.mouseDownTimeout = window.setTimeout((function() {
                    t.hasPopupMouseDown = !1
                  }), 0), t.context) && (e = t.context).onPopupMouseDown.apply(e, arguments)
                })), sh(ih(t), "onDocumentClick", (function(e) {
                  if (!t.props.mask || t.props.maskClosable) {
                    var n = e.target,
                      r = t.getRootDomNode(),
                      i = t.getPopupDomNode();
                    Pv(r, n) && !t.isContextMenuOnly() || Pv(i, n) || t.hasPopupMouseDown || t.close()
                  }
                })), sh(ih(t), "getRootDomNode", (function() {
                  var e = t.props.getTriggerDOMNode;
                  if (e) return e(t.triggerRef.current);
                  try {
                    var n = sp(t.triggerRef.current);
                    if (n) return n
                  } catch (e) {}
                  return Jt.findDOMNode(ih(t))
                })), sh(ih(t), "getPopupClassNameFromAlign", (function(e) {
                  var n = [],
                    r = t.props,
                    i = r.popupPlacement,
                    o = r.builtinPlacements,
                    a = r.prefixCls,
                    s = r.alignPoint,
                    l = r.getPopupClassNameFromAlign;
                  return i && o && n.push(function(e, t, n, r) {
                    for (var i = n.points, o = Object.keys(e), a = 0; a < o.length; a += 1) {
                      var s = o[a];
                      if (ly(e[s].points, i, r)) return "".concat(t, "-placement-").concat(s)
                    }
                    return ""
                  }(o, a, e, s)), l && n.push(l(e)), n.join(" ")
                })), sh(ih(t), "getComponent", (function() {
                  var e = t.props,
                    n = e.prefixCls,
                    r = e.destroyPopupOnHide,
                    i = e.popupClassName,
                    o = e.onPopupAlign,
                    a = e.popupMotion,
                    s = e.popupAnimation,
                    l = e.popupTransitionName,
                    c = e.popupStyle,
                    u = e.mask,
                    h = e.maskAnimation,
                    p = e.maskTransitionName,
                    d = e.maskMotion,
                    f = e.zIndex,
                    g = e.popup,
                    m = e.stretch,
                    v = e.alignPoint,
                    _ = e.mobile,
                    b = e.forceRender,
                    y = e.onPopupClick,
                    w = t.state,
                    x = w.popupVisible,
                    k = w.point,
                    C = t.getPopupAlign(),
                    S = {};
                  return t.isMouseEnterToShow() && (S.onMouseEnter = t.onPopupMouseEnter), t.isMouseLeaveToHide() && (S.onMouseLeave = t.onPopupMouseLeave), S.onMouseDown = t.onPopupMouseDown, S.onTouchStart = t.onPopupMouseDown, ue(Sw,
                    Ku({
                      prefixCls: n,
                      destroyPopupOnHide: r,
                      visible: x,
                      point: v && k,
                      className: i,
                      align: C,
                      onAlign: o,
                      animation: s,
                      getClassNameFromAlign: t.getPopupClassNameFromAlign
                    }, S, {
                      stretch: m,
                      getRootDomNode: t.getRootDomNode,
                      style: c,
                      mask: u,
                      zIndex: f,
                      transitionName: l,
                      maskAnimation: h,
                      maskTransitionName: p,
                      maskMotion: d,
                      ref: t.popupRef,
                      motion: a,
                      mobile: _,
                      forceRender: b,
                      onClick: y
                    }), "function" == typeof g ? g() : g)
                })), sh(ih(t), "attachParent", (function(e) {
                  Vp.cancel(t.attachId);
                  var n, r = t.props,
                    i = r.getPopupContainer,
                    o = r.getDocument,
                    a = t.getRootDomNode();
                  i ? (a || 0 === i.length) && (n = i(a)) : n = o(t.getRootDomNode()).body, n ? n.appendChild(e) : t.attachId = Vp((function() {
                    t.attachParent(e)
                  }))
                })), sh(ih(t), "getContainer", (function() {
                  if (!t.portalContainer) {
                    var e = (0, t.props.getDocument)(t.getRootDomNode()).createElement("div");
                    e.style.position = "absolute", e.style.top = "0", e.style.left = "0", e.style.width = "100%", t.portalContainer = e
                  }
                  return t.attachParent(t.portalContainer), t.portalContainer
                })), sh(ih(t), "setPoint", (function(e) {
                  t.props.alignPoint && e && t.setState({
                    point: {
                      pageX: e.pageX,
                      pageY: e.pageY
                    }
                  })
                })), sh(ih(t), "handlePortalUpdate", (function() {
                  t.state.prevPopupVisible !== t.state.popupVisible && t.props.afterPopupVisibleChange(t.state.popupVisible)
                })), sh(ih(t), "triggerContextValue", {
                  onPopupMouseDown: t.onPopupMouseDown
                }), i = "popupVisible" in e ? !!e.popupVisible : !!e.defaultPopupVisible, t.state = {
                  prevPopupVisible: i,
                  popupVisible: i
                }, Pw.forEach((function(e) {
                  t["fire".concat(e)] = function(n) {
                    t.fireEvents(e, n)
                  }
                })), t
              }
              return eh(r, [{
                key: "componentDidMount",
                value: function() {
                  this.componentDidUpdate()
                }
              }, {
                key: "componentDidUpdate",
                value: function() {
                  var e, t = this.props;
                  if (this.state.popupVisible) return this.clickOutsideHandler || !this.isClickToHide() && !this.isContextMenuToShow() || (e = t.getDocument(this.getRootDomNode()), this.clickOutsideHandler = iy(e, "mousedown", this
                      .onDocumentClick)), this.touchOutsideHandler || (e = e || t.getDocument(this.getRootDomNode()), this.touchOutsideHandler = iy(e, "touchstart", this.onDocumentClick)), !this.contextMenuOutsideHandler1 && this
                    .isContextMenuToShow() && (e = e || t.getDocument(this.getRootDomNode()), this.contextMenuOutsideHandler1 = iy(e, "scroll", this.onContextMenuClose)), void(!this.contextMenuOutsideHandler2 && this
                      .isContextMenuToShow() && (this.contextMenuOutsideHandler2 = iy(window, "blur", this.onContextMenuClose)));
                  this.clearOutsideHandler()
                }
              }, {
                key: "componentWillUnmount",
                value: function() {
                  this.clearDelayTimer(), this.clearOutsideHandler(), clearTimeout(this.mouseDownTimeout), Vp.cancel(this.attachId)
                }
              }, {
                key: "getPopupDomNode",
                value: function() {
                  var e;
                  return (null === (e = this.popupRef.current) || void 0 === e ? void 0 : e.getElement()) || null
                }
              }, {
                key: "getPopupAlign",
                value: function() {
                  var e = this.props,
                    t = e.popupPlacement,
                    n = e.popupAlign,
                    r = e.builtinPlacements;
                  return t && r ? function(e, t, n) {
                    return mh(mh({}, e[t] || {}), n)
                  }(r, t, n) : n
                }
              }, {
                key: "setPopupVisible",
                value: function(e, t) {
                  var n = this.props.alignPoint,
                    r = this.state.popupVisible;
                  this.clearDelayTimer(), r !== e && ("popupVisible" in this.props || this.setState({
                    popupVisible: e,
                    prevPopupVisible: r
                  }), this.props.onPopupVisibleChange(e)), n && t && e && this.setPoint(t)
                }
              }, {
                key: "delaySetPopupVisible",
                value: function(e, t, n) {
                  var r = this,
                    i = 1e3 * t;
                  if (this.clearDelayTimer(), i) {
                    var o = n ? {
                      pageX: n.pageX,
                      pageY: n.pageY
                    } : null;
                    this.delayTimer = window.setTimeout((function() {
                      r.setPopupVisible(e, o), r.clearDelayTimer()
                    }), i)
                  } else this.setPopupVisible(e, n)
                }
              }, {
                key: "clearDelayTimer",
                value: function() {
                  this.delayTimer && (clearTimeout(this.delayTimer), this.delayTimer = null)
                }
              }, {
                key: "clearOutsideHandler",
                value: function() {
                  this.clickOutsideHandler && (this.clickOutsideHandler.remove(), this.clickOutsideHandler = null), this.contextMenuOutsideHandler1 && (this.contextMenuOutsideHandler1.remove(), this.contextMenuOutsideHandler1 = null),
                    this.contextMenuOutsideHandler2 && (this.contextMenuOutsideHandler2.remove(), this.contextMenuOutsideHandler2 = null), this.touchOutsideHandler && (this.touchOutsideHandler.remove(), this.touchOutsideHandler = null)
                }
              }, {
                key: "createTwoChains",
                value: function(e) {
                  var t = this.props.children.props,
                    n = this.props;
                  return t[e] && n[e] ? this["fire".concat(e)] : t[e] || n[e]
                }
              }, {
                key: "isClickToShow",
                value: function() {
                  var e = this.props,
                    t = e.action,
                    n = e.showAction;
                  return -1 !== t.indexOf("click") || -1 !== n.indexOf("click")
                }
              }, {
                key: "isContextMenuOnly",
                value: function() {
                  var e = this.props.action;
                  return "contextMenu" === e || 1 === e.length && "contextMenu" === e[0]
                }
              }, {
                key: "isContextMenuToShow",
                value: function() {
                  var e = this.props,
                    t = e.action,
                    n = e.showAction;
                  return -1 !== t.indexOf("contextMenu") || -1 !== n.indexOf("contextMenu")
                }
              }, {
                key: "isClickToHide",
                value: function() {
                  var e = this.props,
                    t = e.action,
                    n = e.hideAction;
                  return -1 !== t.indexOf("click") || -1 !== n.indexOf("click")
                }
              }, {
                key: "isMouseEnterToShow",
                value: function() {
                  var e = this.props,
                    t = e.action,
                    n = e.showAction;
                  return -1 !== t.indexOf("hover") || -1 !== n.indexOf("mouseEnter")
                }
              }, {
                key: "isMouseLeaveToHide",
                value: function() {
                  var e = this.props,
                    t = e.action,
                    n = e.hideAction;
                  return -1 !== t.indexOf("hover") || -1 !== n.indexOf("mouseLeave")
                }
              }, {
                key: "isFocusToShow",
                value: function() {
                  var e = this.props,
                    t = e.action,
                    n = e.showAction;
                  return -1 !== t.indexOf("focus") || -1 !== n.indexOf("focus")
                }
              }, {
                key: "isBlurToHide",
                value: function() {
                  var e = this.props,
                    t = e.action,
                    n = e.hideAction;
                  return -1 !== t.indexOf("focus") || -1 !== n.indexOf("blur")
                }
              }, {
                key: "forcePopupAlign",
                value: function() {
                  var e;
                  this.state.popupVisible && (null === (e = this.popupRef.current) || void 0 === e || e.forceAlign())
                }
              }, {
                key: "fireEvents",
                value: function(e, t) {
                  var n = this.props.children.props[e];
                  n && n(t);
                  var r = this.props[e];
                  r && r(t)
                }
              }, {
                key: "close",
                value: function() {
                  this.setPopupVisible(!1)
                }
              }, {
                key: "render",
                value: function() {
                  var t = this.state.popupVisible,
                    n = this.props,
                    r = n.children,
                    i = n.forceRender,
                    o = n.alignPoint,
                    a = n.className,
                    s = n.autoDestroy,
                    l = _t.only(r),
                    c = {
                      key: "trigger"
                    };
                  this.isContextMenuToShow() ? c.onContextMenu = this.onContextMenu : c.onContextMenu = this.createTwoChains("onContextMenu"), this.isClickToHide() || this.isClickToShow() ? (c.onClick = this.onClick, c.onMouseDown =
                      this.onMouseDown, c.onTouchStart = this.onTouchStart) : (c.onClick = this.createTwoChains("onClick"), c.onMouseDown = this.createTwoChains("onMouseDown"), c.onTouchStart = this.createTwoChains("onTouchStart")),
                    this.isMouseEnterToShow() ? (c.onMouseEnter = this.onMouseEnter, o && (c.onMouseMove = this.onMouseMove)) : c.onMouseEnter = this.createTwoChains("onMouseEnter"), this.isMouseLeaveToHide() ? c.onMouseLeave = this
                    .onMouseLeave : c.onMouseLeave = this.createTwoChains("onMouseLeave"), this.isFocusToShow() || this.isBlurToHide() ? (c.onFocus = this.onFocus, c.onBlur = this.onBlur) : (c.onFocus = this.createTwoChains("onFocus"),
                      c.onBlur = this.createTwoChains("onBlur"));
                  var u = ul(l && l.props && l.props.className, a);
                  u && (c.className = u);
                  var h = mh({}, c);
                  hp(l) && (h.ref = up(this.triggerRef, l.ref));
                  var p, d = Gt(l, h);
                  return (t || this.popupRef.current || i) && (p = ue(e, {
                    key: "portal",
                    getContainer: this.getContainer,
                    didUpdate: this.handlePortalUpdate
                  }, this.getComponent())), !t && s && (p = null), ue(Ew.Provider, {
                    value: this.triggerContextValue
                  }, d, p)
                }
              }], [{
                key: "getDerivedStateFromProps",
                value: function(e, t) {
                  var n = e.popupVisible,
                    r = {};
                  return void 0 !== n && t.popupVisible !== n && (r.popupVisible = n, r.prevPopupVisible = t.popupVisible), r
                }
              }]), r
            }(fe);
            return sh(t, "contextType", Ew), sh(t, "defaultProps", {
              prefixCls: "rc-trigger-popup",
              getPopupClassNameFromAlign: Ow,
              getDocument: Aw,
              onPopupVisibleChange: Tw,
              afterPopupVisibleChange: Tw,
              onPopupAlign: Tw,
              popupClassName: "",
              mouseEnterDelay: 0,
              mouseLeaveDelay: .1,
              focusDelay: 0,
              blurDelay: .15,
              popupStyle: {},
              destroyPopupOnHide: !1,
              popupAlign: {},
              defaultPopupVisible: !1,
              mask: !1,
              maskClosable: !0,
              action: [],
              showAction: [],
              hideAction: [],
              autoDestroy: !1
            }), t
          }(sy),
          Dw = {
            adjustX: 1,
            adjustY: 1
          },
          Iw = {
            topLeft: {
              points: ["bl", "tl"],
              overflow: Dw,
              offset: [0, -7]
            },
            bottomLeft: {
              points: ["tl", "bl"],
              overflow: Dw,
              offset: [0, 7]
            },
            leftTop: {
              points: ["tr", "tl"],
              overflow: Dw,
              offset: [-4, 0]
            },
            rightTop: {
              points: ["tl", "tr"],
              overflow: Dw,
              offset: [4, 0]
            }
          },
          Rw = {
            topLeft: {
              points: ["bl", "tl"],
              overflow: Dw,
              offset: [0, -7]
            },
            bottomLeft: {
              points: ["tl", "bl"],
              overflow: Dw,
              offset: [0, 7]
            },
            rightTop: {
              points: ["tr", "tl"],
              overflow: Dw,
              offset: [-4, 0]
            },
            leftTop: {
              points: ["tl", "tr"],
              overflow: Dw,
              offset: [4, 0]
            }
          };

        function jw(e, t, n) {
          return t || (n ? n[e] || n.other : void 0)
        }
        var Nw = {
          horizontal: "bottomLeft",
          vertical: "rightTop",
          "vertical-left": "rightTop",
          "vertical-right": "leftTop"
        };

        function Lw(e) {
          var t = e.prefixCls,
            n = e.visible,
            r = e.children,
            i = e.popup,
            o = e.popupClassName,
            a = e.popupOffset,
            s = e.disabled,
            l = e.mode,
            c = e.onVisibleChange,
            u = nt(Tb),
            h = u.getPopupContainer,
            p = u.rtl,
            d = u.subMenuOpenDelay,
            f = u.subMenuCloseDelay,
            g = u.builtinPlacements,
            m = u.triggerSubMenuAction,
            v = u.forceSubMenuRender,
            _ = u.rootClassName,
            b = u.motion,
            y = u.defaultMotions,
            w = ap(qe(!1), 2),
            x = w[0],
            k = w[1],
            C = mh(mh({}, p ? Rw : Iw), g),
            S = Nw[l],
            E = mh(mh({}, jw(l, b, y)), {}, {
              leavedClassName: "".concat(t, "-hidden"),
              removeOnLeave: !1,
              motionAppear: !0
            }),
            T = Je();
          return Ze((function() {
            return T.current = Vp((function() {
                k(n)
              })),
              function() {
                Vp.cancel(T.current)
              }
          }), [n]), ue(Mw, {
            prefixCls: t,
            popupClassName: ul("".concat(t, "-popup"), sh({}, "".concat(t, "-rtl"), p), o, _),
            stretch: "horizontal" === l ? "minWidth" : null,
            getPopupContainer: h,
            builtinPlacements: C,
            popupPlacement: S,
            popupVisible: x,
            popup: i,
            popupAlign: a && {
              offset: a
            },
            action: s ? [] : [m],
            mouseEnterDelay: d,
            mouseLeaveDelay: f,
            onPopupVisibleChange: c,
            forceRender: v,
            popupMotion: E
          }, r)
        }

        function Fw(e) {
          var t = e.id,
            n = e.open,
            r = e.keyPath,
            i = e.children,
            o = "inline",
            a = nt(Tb),
            s = a.prefixCls,
            l = a.forceSubMenuRender,
            c = a.motion,
            u = a.defaultMotions,
            h = a.mode,
            p = Je(!1);
          p.current = h === o;
          var d = ap(qe(!p.current), 2),
            f = d[0],
            g = d[1],
            m = !!p.current && n;
          Ze((function() {
            p.current && g(!1)
          }), [h]);
          var v = mh({}, jw(o, c, u));
          r.length > 1 && (v.motionAppear = !1);
          var _ = v.onVisibleChanged;
          return v.onVisibleChanged = function(e) {
            return p.current || e || g(!0), null == _ ? void 0 : _(e)
          }, f ? null : ue(Ob, {
            mode: o,
            locked: !p.current
          }, ue(Jp, Ku({
            visible: m
          }, v, {
            forceRender: l,
            removeOnLeave: !1,
            leavedClassName: "".concat(s, "-hidden")
          }), (function(e) {
            var n = e.className,
              r = e.style;
            return ue(ry, {
              id: t,
              className: n,
              style: r
            }, i)
          })))
        }
        var Bw = ["style", "className", "title", "eventKey", "warnKey", "disabled", "internalPopupClose", "children", "itemIcon", "expandIcon", "popupClassName", "popupOffset", "onClick", "onMouseEnter", "onMouseLeave", "onTitleClick",
            "onTitleMouseEnter", "onTitleMouseLeave"
          ],
          zw = ["active"],
          Hw = function(e) {
            var t, n = e.style,
              r = e.className,
              i = e.title,
              o = e.eventKey,
              a = e.disabled,
              s = e.internalPopupClose,
              l = e.children,
              c = e.itemIcon,
              u = e.expandIcon,
              h = e.popupClassName,
              p = e.popupOffset,
              d = e.onClick,
              f = e.onMouseEnter,
              g = e.onMouseLeave,
              m = e.onTitleClick,
              v = e.onTitleMouseEnter,
              _ = e.onTitleMouseLeave,
              b = lh(e, Bw),
              y = Ub(o),
              w = nt(Tb),
              x = w.prefixCls,
              k = w.mode,
              C = w.openKeys,
              S = w.disabled,
              E = w.overflowDisabled,
              T = w.activeKey,
              O = w.selectedKeys,
              A = w.itemIcon,
              P = w.expandIcon,
              M = w.onItemClick,
              D = w.onOpenChange,
              I = w.onActive,
              R = nt(Wb)._internalRenderSubMenuItem,
              j = nt(Bb).isSubPathKey,
              N = Fb(),
              L = "".concat(x, "-submenu"),
              F = S || a,
              B = Je(),
              z = Je(),
              H = c || A,
              U = u || P,
              W = C.includes(o),
              V = !E && W,
              X = j(O, o),
              G = Ab(o, F, v, _),
              Y = G.active,
              q = lh(G, zw),
              K = ap(qe(!1), 2),
              Z = K[0],
              $ = K[1],
              J = function(e) {
                F || $(e)
              },
              Q = et((function() {
                return Y || "inline" !== k && (Z || j([T], o))
              }), [k, Y, T, Z, o, j]),
              ee = Ib(N.length),
              te = ey((function(e) {
                null == d || d(Mb(e)), M(e)
              })),
              ne = y && "".concat(y, "-popup"),
              re = ue("div", Ku({
                role: "menuitem",
                style: ee,
                className: "".concat(L, "-title"),
                tabIndex: F ? null : -1,
                ref: B,
                title: "string" == typeof i ? i : null,
                "data-menu-id": E && y ? null : y,
                "aria-expanded": V,
                "aria-haspopup": !0,
                "aria-controls": ne,
                "aria-disabled": F,
                onClick: function(e) {
                  F || (null == m || m({
                    key: o,
                    domEvent: e
                  }), "inline" === k && D(o, !W))
                },
                onFocus: function() {
                  I(o)
                }
              }, q), i, ue(Db, {
                icon: "horizontal" !== k ? U : null,
                props: mh(mh({}, e), {}, {
                  isOpen: V,
                  isSubMenu: !0
                })
              }, ue("i", {
                className: "".concat(L, "-arrow")
              }))),
              ie = Je(k);
            if ("inline" !== k && (ie.current = N.length > 1 ? "vertical" : k), !E) {
              var oe = ie.current;
              re = ue(Lw, {
                mode: oe,
                prefixCls: L,
                visible: !s && V && "inline" !== k,
                popupClassName: h,
                popupOffset: p,
                popup: ue(Ob, {
                  mode: "horizontal" === oe ? "vertical" : oe
                }, ue(ry, {
                  id: ne,
                  ref: z
                }, l)),
                disabled: F,
                onVisibleChange: function(e) {
                  "inline" !== k && D(o, e)
                }
              }, re)
            }
            var ae = ue(Cb.Item, Ku({
              role: "none"
            }, b, {
              component: "li",
              style: n,
              className: ul(L, "".concat(L, "-").concat(k), r, (t = {}, sh(t, "".concat(L, "-open"), V), sh(t, "".concat(L, "-active"), Q), sh(t, "".concat(L, "-selected"), X), sh(t, "".concat(L, "-disabled"), F), t)),
              onMouseEnter: function(e) {
                J(!0), null == f || f({
                  key: o,
                  domEvent: e
                })
              },
              onMouseLeave: function(e) {
                J(!1), null == g || g({
                  key: o,
                  domEvent: e
                })
              }
            }), re, !E && ue(Fw, {
              id: ne,
              open: V,
              keyPath: N
            }, l));
            return R && (ae = R(ae, e, {
              selected: X,
              active: Q,
              open: V,
              disabled: F
            })), ue(Ob, {
              onItemClick: te,
              mode: "horizontal" === k ? "vertical" : k,
              itemIcon: H,
              expandIcon: U
            }, ae)
          };

        function Uw(e) {
          var t, n = e.eventKey,
            r = e.children,
            i = Fb(n),
            o = $b(r, i),
            a = Nb();
          return Ze((function() {
            if (a) return a.registerPath(n, i),
              function() {
                a.unregisterPath(n, i)
              }
          }), [i]), t = a ? o : ue(Hw, e, o), ue(Lb.Provider, {
            value: i
          }, t)
        }

        function Ww(e) {
          var t = arguments.length > 1 && void 0 !== arguments[1] && arguments[1];
          if (hw(e)) {
            var n = e.nodeName.toLowerCase(),
              r = ["input", "select", "textarea", "button"].includes(n) || e.isContentEditable || "a" === n && !!e.getAttribute("href"),
              i = e.getAttribute("tabindex"),
              o = Number(i),
              a = null;
            return i && !Number.isNaN(o) ? a = o : r && null === a && (a = 0), r && e.disabled && (a = null), null !== a && (a >= 0 || t && a < 0)
          }
          return !1
        }
        var Vw = $v.LEFT,
          Xw = $v.RIGHT,
          Gw = $v.UP,
          Yw = $v.DOWN,
          qw = $v.ENTER,
          Kw = $v.ESC,
          Zw = $v.HOME,
          $w = $v.END,
          Jw = [Gw, Yw, Vw, Xw];

        function Qw(e, t) {
          var n = function(e) {
            var t = arguments.length > 1 && void 0 !== arguments[1] && arguments[1],
              n = fh(e.querySelectorAll("*")).filter((function(e) {
                return Ww(e, t)
              }));
            return Ww(e, t) && n.unshift(e), n
          }(e, !0);
          return n.filter((function(e) {
            return t.has(e)
          }))
        }

        function ex(e, t, n) {
          var r = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : 1;
          if (!e) return null;
          var i = Qw(e, t),
            o = i.length,
            a = i.findIndex((function(e) {
              return n === e
            }));
          return r < 0 ? -1 === a ? a = o - 1 : a -= 1 : r > 0 && (a += 1), i[a = (a + o) % o]
        }

        function tx(e, t, n, r, i, o, a, s, l, c) {
          var u = Je(),
            h = Je();
          h.current = t;
          var p = function() {
            Vp.cancel(u.current)
          };
          return Ze((function() {
              return function() {
                p()
              }
            }), []),
            function(d) {
              var f = d.which;
              if ([].concat(Jw, [qw, Kw, Zw, $w]).includes(f)) {
                var g, m, v, _ = function() {
                  return g = new Set, m = new Map, v = new Map, o().forEach((function(e) {
                    var t = document.querySelector("[data-menu-id='".concat(Hb(r, e), "']"));
                    t && (g.add(t), v.set(t, e), m.set(e, t))
                  })), g
                };
                _();
                var b = function(e, t) {
                    for (var n = e || document.activeElement; n;) {
                      if (t.has(n)) return n;
                      n = n.parentElement
                    }
                    return null
                  }(m.get(t), g),
                  y = v.get(b),
                  w = function(e, t, n, r) {
                    var i, o, a, s, l = "prev",
                      c = "next",
                      u = "children",
                      h = "parent";
                    if ("inline" === e && r === qw) return {
                      inlineTrigger: !0
                    };
                    var p = (sh(i = {}, Gw, l), sh(i, Yw, c), i),
                      d = (sh(o = {}, Vw, n ? c : l), sh(o, Xw, n ? l : c), sh(o, Yw, u), sh(o, qw, u), o),
                      f = (sh(a = {}, Gw, l), sh(a, Yw, c), sh(a, qw, u), sh(a, Kw, h), sh(a, Vw, n ? u : h), sh(a, Xw, n ? h : u), a);
                    switch (null === (s = {
                        inline: p,
                        horizontal: d,
                        vertical: f,
                        inlineSub: p,
                        horizontalSub: f,
                        verticalSub: f
                      } ["".concat(e).concat(t ? "" : "Sub")]) || void 0 === s ? void 0 : s[r]) {
                      case l:
                        return {
                          offset: -1, sibling: !0
                        };
                      case c:
                        return {
                          offset: 1, sibling: !0
                        };
                      case h:
                        return {
                          offset: -1, sibling: !1
                        };
                      case u:
                        return {
                          offset: 1, sibling: !1
                        };
                      default:
                        return null
                    }
                  }(e, 1 === a(y, !0).length, n, f);
                if (!w && f !== Zw && f !== $w) return;
                (Jw.includes(f) || [Zw, $w].includes(f)) && d.preventDefault();
                var x = function(e) {
                  if (e) {
                    var t = e,
                      n = e.querySelector("a");
                    (null == n ? void 0 : n.getAttribute("href")) && (t = n);
                    var r = v.get(e);
                    s(r), p(), u.current = Vp((function() {
                      h.current === r && t.focus()
                    }))
                  }
                };
                if ([Zw, $w].includes(f) || w.sibling || !b) {
                  var k, C, S = Qw(k = b && "inline" !== e ? function(e) {
                    for (var t = e; t;) {
                      if (t.getAttribute("data-menu-list")) return t;
                      t = t.parentElement
                    }
                    return null
                  }(b) : i.current, g);
                  C = f === Zw ? S[0] : f === $w ? S[S.length - 1] : ex(k, g, b, w.offset), x(C)
                } else if (w.inlineTrigger) l(y);
                else if (w.offset > 0) l(y, !0), p(), u.current = Vp((function() {
                  _();
                  var e = b.getAttribute("aria-controls"),
                    t = ex(document.getElementById(e), g);
                  x(t)
                }), 5);
                else if (w.offset < 0) {
                  var E = a(y, !0),
                    T = E[E.length - 2],
                    O = m.get(T);
                  l(T, !1), x(O)
                }
              }
              null == c || c(d)
            }
        }
        var nx = Math.random().toFixed(5).toString().slice(2),
          rx = 0;
        var ix = "__RC_UTIL_PATH_SPLIT__",
          ox = function(e) {
            return e.join(ix)
          },
          ax = "rc-menu-more";

        function sx() {
          var e = ap(qe({}), 2)[1],
            t = Je(new Map),
            n = Je(new Map),
            r = ap(qe([]), 2),
            i = r[0],
            o = r[1],
            a = Je(0),
            s = Je(!1),
            l = tt((function(r, i) {
              var o = ox(i);
              n.current.set(o, r), t.current.set(r, o), a.current += 1;
              var l, c = a.current;
              l = function() {
                c === a.current && (s.current || e({}))
              }, Promise.resolve().then(l)
            }), []),
            c = tt((function(e, r) {
              var i = ox(r);
              n.current.delete(i), t.current.delete(e)
            }), []),
            u = tt((function(e) {
              o(e)
            }), []),
            h = tt((function(e, n) {
              var r = t.current.get(e) || "",
                o = r.split(ix);
              return n && i.includes(o[0]) && o.unshift(ax), o
            }), [i]),
            p = tt((function(e, t) {
              return e.some((function(e) {
                return h(e, !0).includes(t)
              }))
            }), [h]),
            d = tt((function(e) {
              var r = "".concat(t.current.get(e)).concat(ix),
                i = new Set;
              return fh(n.current.keys()).forEach((function(e) {
                e.startsWith(r) && i.add(n.current.get(e))
              })), i
            }), []);
          return Ze((function() {
            return function() {
              s.current = !0
            }
          }), []), {
            registerPath: l,
            unregisterPath: c,
            refreshOverflowKeys: u,
            isSubPathKey: p,
            getKeyPath: h,
            getKeys: function() {
              var e = fh(t.current.keys());
              return i.length && e.push(ax), e
            },
            getSubPathKeys: d
          }
        }
        var lx = ["prefixCls", "rootClassName", "style", "className", "tabIndex", "items", "children", "direction", "id", "mode", "inlineCollapsed", "disabled", "disabledOverflow", "subMenuOpenDelay", "subMenuCloseDelay", "forceSubMenuRender",
            "defaultOpenKeys", "openKeys", "activeKey", "defaultActiveFirst", "selectable", "multiple", "defaultSelectedKeys", "selectedKeys", "onSelect", "onDeselect", "inlineIndent", "motion", "defaultMotions", "triggerSubMenuAction",
            "builtinPlacements", "itemIcon", "expandIcon", "overflowedIndicator", "overflowedIndicatorPopupClassName", "getPopupContainer", "onClick", "onOpenChange", "onKeyDown", "openAnimation", "openTransitionName", "_internalRenderMenuItem",
            "_internalRenderSubMenuItem"
          ],
          cx = [],
          ux = mt((function(e, t) {
            var n, r, i = e.prefixCls,
              o = void 0 === i ? "rc-menu" : i,
              a = e.rootClassName,
              s = e.style,
              l = e.className,
              c = e.tabIndex,
              u = void 0 === c ? 0 : c,
              h = e.items,
              p = e.children,
              d = e.direction,
              f = e.id,
              g = e.mode,
              m = void 0 === g ? "vertical" : g,
              v = e.inlineCollapsed,
              _ = e.disabled,
              b = e.disabledOverflow,
              y = e.subMenuOpenDelay,
              w = void 0 === y ? .1 : y,
              x = e.subMenuCloseDelay,
              k = void 0 === x ? .1 : x,
              C = e.forceSubMenuRender,
              S = e.defaultOpenKeys,
              E = e.openKeys,
              T = e.activeKey,
              O = e.defaultActiveFirst,
              A = e.selectable,
              P = void 0 === A || A,
              M = e.multiple,
              D = void 0 !== M && M,
              I = e.defaultSelectedKeys,
              R = e.selectedKeys,
              j = e.onSelect,
              N = e.onDeselect,
              L = e.inlineIndent,
              F = void 0 === L ? 24 : L,
              B = e.motion,
              z = e.defaultMotions,
              H = e.triggerSubMenuAction,
              U = void 0 === H ? "hover" : H,
              W = e.builtinPlacements,
              V = e.itemIcon,
              X = e.expandIcon,
              G = e.overflowedIndicator,
              Y = void 0 === G ? "..." : G,
              q = e.overflowedIndicatorPopupClassName,
              K = e.getPopupContainer,
              Z = e.onClick,
              $ = e.onOpenChange,
              J = e.onKeyDown,
              Q = e._internalRenderMenuItem,
              ee = e._internalRenderSubMenuItem,
              te = lh(e, lx),
              ne = et((function() {
                return Qb(p, h, cx)
              }), [p, h]),
              re = ap(qe(!1), 2),
              ie = re[0],
              oe = re[1],
              ae = Je();
            Qe(t, (function() {
              return {
                list: ae.current,
                focus: function(e) {
                  var t;
                  null === (t = ae.current) || void 0 === t || t.focus(e)
                }
              }
            }));
            var se = function(e) {
                var t = ap(X_(e, {
                    value: e
                  }), 2),
                  n = t[0],
                  r = t[1];
                return Ze((function() {
                  rx += 1;
                  var e = "".concat(nx, "-").concat(rx);
                  r("rc-menu-uuid-".concat(e))
                }), []), n
              }(f),
              le = "rtl" === d,
              ce = ap(et((function() {
                return "inline" !== m && "vertical" !== m || !v ? [m, !1] : ["vertical", v]
              }), [m, v]), 2),
              he = ce[0],
              pe = ce[1],
              de = ap(qe(0), 2),
              fe = de[0],
              ge = de[1],
              me = fe >= ne.length - 1 || "horizontal" !== he || b,
              ve = ap(X_(S, {
                value: E,
                postState: function(e) {
                  return e || cx
                }
              }), 2),
              _e = ve[0],
              be = ve[1],
              ye = function(e) {
                be(e), null == $ || $(e)
              },
              we = ap(qe(_e), 2),
              xe = we[0],
              ke = we[1],
              Ce = "inline" === he,
              Se = Je(!1);
            Ze((function() {
              Ce && ke(_e)
            }), [_e]), Ze((function() {
              Se.current ? Ce ? be(xe) : ye(cx) : Se.current = !0
            }), [Ce]);
            var Ee = sx(),
              Te = Ee.registerPath,
              Oe = Ee.unregisterPath,
              Ae = Ee.refreshOverflowKeys,
              Pe = Ee.isSubPathKey,
              Me = Ee.getKeyPath,
              De = Ee.getKeys,
              Ie = Ee.getSubPathKeys,
              Re = et((function() {
                return {
                  registerPath: Te,
                  unregisterPath: Oe
                }
              }), [Te, Oe]),
              je = et((function() {
                return {
                  isSubPathKey: Pe
                }
              }), [Pe]);
            Ze((function() {
              Ae(me ? cx : ne.slice(fe + 1).map((function(e) {
                return e.key
              })))
            }), [fe, me]);
            var Ne = ap(X_(T || O && (null === (n = ne[0]) || void 0 === n ? void 0 : n.key), {
                value: T
              }), 2),
              Le = Ne[0],
              Fe = Ne[1],
              Be = ey((function(e) {
                Fe(e)
              })),
              ze = ey((function() {
                Fe(void 0)
              })),
              He = ap(X_(I || [], {
                value: R,
                postState: function(e) {
                  return Array.isArray(e) ? e : null == e ? cx : [e]
                }
              }), 2),
              Ue = He[0],
              We = He[1],
              Ve = ey((function(e) {
                null == Z || Z(Mb(e)),
                  function(e) {
                    if (P) {
                      var t, n = e.key,
                        r = Ue.includes(n);
                      t = D ? r ? Ue.filter((function(e) {
                        return e !== n
                      })) : [].concat(fh(Ue), [n]) : [n], We(t);
                      var i = mh(mh({}, e), {}, {
                        selectedKeys: t
                      });
                      r ? null == N || N(i) : null == j || j(i)
                    }!D && _e.length && "inline" !== he && ye(cx)
                  }(e)
              })),
              Xe = ey((function(e, t) {
                var n = _e.filter((function(t) {
                  return t !== e
                }));
                if (t) n.push(e);
                else if ("inline" !== he) {
                  var r = Ie(e);
                  n = n.filter((function(e) {
                    return !r.has(e)
                  }))
                }
                ab(_e, n) || ye(n)
              })),
              Ge = ey(K),
              Ye = tx(he, Le, le, se, ae, De, Me, Fe, (function(e, t) {
                var n = null != t ? t : !_e.includes(e);
                Xe(e, n)
              }), J);
            Ze((function() {
              oe(!0)
            }), []);
            var Ke = et((function() {
                return {
                  _internalRenderMenuItem: Q,
                  _internalRenderSubMenuItem: ee
                }
              }), [Q, ee]),
              $e = "horizontal" !== he || b ? ne : ne.map((function(e, t) {
                return ue(Ob, {
                  key: e.key,
                  overflowDisabled: t > fe
                }, e)
              })),
              tt = ue(Cb, Ku({
                id: f,
                ref: ae,
                prefixCls: "".concat(o, "-overflow"),
                component: "ul",
                itemComponent: Kb,
                className: ul(o, "".concat(o, "-root"), "".concat(o, "-").concat(he), l, (r = {}, sh(r, "".concat(o, "-inline-collapsed"), pe), sh(r, "".concat(o, "-rtl"), le), r), a),
                dir: d,
                style: s,
                role: "menu",
                tabIndex: u,
                data: $e,
                renderRawItem: function(e) {
                  return e
                },
                renderRawRest: function(e) {
                  var t = e.length,
                    n = t ? ne.slice(-t) : null;
                  return ue(Uw, {
                    eventKey: ax,
                    title: Y,
                    disabled: me,
                    internalPopupClose: 0 === t,
                    popupClassName: q
                  }, n)
                },
                maxCount: "horizontal" !== he || b ? Cb.INVALIDATE : Cb.RESPONSIVE,
                ssr: "full",
                "data-menu-list": !0,
                onVisibleChange: function(e) {
                  ge(e)
                },
                onKeyDown: Ye
              }, te));
            return ue(Wb.Provider, {
              value: Ke
            }, ue(zb.Provider, {
              value: se
            }, ue(Ob, {
              prefixCls: o,
              rootClassName: a,
              mode: he,
              openKeys: _e,
              rtl: le,
              disabled: _,
              motion: ie ? B : null,
              defaultMotions: ie ? z : null,
              activeKey: Le,
              onActive: Be,
              onInactive: ze,
              selectedKeys: Ue,
              inlineIndent: F,
              subMenuOpenDelay: w,
              subMenuCloseDelay: k,
              forceSubMenuRender: C,
              builtinPlacements: W,
              triggerSubMenuAction: U,
              getPopupContainer: Ge,
              itemIcon: V,
              expandIcon: X,
              onItemClick: Ve,
              onOpenChange: Xe
            }, ue(Bb.Provider, {
              value: je
            }, tt), ue("div", {
              style: {
                display: "none"
              },
              "aria-hidden": !0
            }, ue(jb.Provider, {
              value: Re
            }, ne)))))
          })),
          hx = ["className", "title", "eventKey", "children"],
          px = ["children"],
          dx = function(e) {
            var t = e.className,
              n = e.title,
              r = e.children,
              i = lh(e, hx),
              o = nt(Tb).prefixCls,
              a = "".concat(o, "-item-group");
            return ue("li", Ku({}, i, {
              onClick: function(e) {
                return e.stopPropagation()
              },
              className: ul(a, t)
            }), ue("div", {
              className: "".concat(a, "-title"),
              title: "string" == typeof n ? n : void 0
            }, n), ue("ul", {
              className: "".concat(a, "-list")
            }, r))
          };

        function fx(e) {
          var t = e.children,
            n = lh(e, px),
            r = $b(t, Fb(n.eventKey));
          return Nb() ? r : ue(dx, Sb(n, ["warnKey"]), r)
        }

        function gx(e) {
          var t = e.className,
            n = e.style,
            r = nt(Tb).prefixCls;
          return Nb() ? null : ue("li", {
            className: ul("".concat(r, "-item-divider"), t),
            style: n
          })
        }
        var mx = ux;
        mx.Item = Kb, mx.SubMenu = Uw, mx.ItemGroup = fx, mx.Divider = gx;
        var vx = mx,
          _x = {
            adjustX: 1,
            adjustY: 1
          },
          bx = [0, 0],
          yx = {
            topLeft: {
              points: ["bl", "tl"],
              overflow: _x,
              offset: [0, -4],
              targetOffset: bx
            },
            topCenter: {
              points: ["bc", "tc"],
              overflow: _x,
              offset: [0, -4],
              targetOffset: bx
            },
            topRight: {
              points: ["br", "tr"],
              overflow: _x,
              offset: [0, -4],
              targetOffset: bx
            },
            bottomLeft: {
              points: ["tl", "bl"],
              overflow: _x,
              offset: [0, 4],
              targetOffset: bx
            },
            bottomCenter: {
              points: ["tc", "bc"],
              overflow: _x,
              offset: [0, 4],
              targetOffset: bx
            },
            bottomRight: {
              points: ["tr", "br"],
              overflow: _x,
              offset: [0, 4],
              targetOffset: bx
            }
          },
          wx = $v.ESC,
          xx = $v.TAB;
        var kx = ["arrow", "prefixCls", "transitionName", "animation", "align", "placement", "placements", "getPopupContainer", "showAction", "hideAction", "overlayClassName", "overlayStyle", "visible", "trigger"];

        function Cx(e, t) {
          var n = e.arrow,
            r = void 0 !== n && n,
            i = e.prefixCls,
            o = void 0 === i ? "rc-dropdown" : i,
            a = e.transitionName,
            s = e.animation,
            l = e.align,
            c = e.placement,
            u = void 0 === c ? "bottomLeft" : c,
            h = e.placements,
            p = void 0 === h ? yx : h,
            d = e.getPopupContainer,
            f = e.showAction,
            g = e.hideAction,
            m = e.overlayClassName,
            v = e.overlayStyle,
            _ = e.visible,
            b = e.trigger,
            y = void 0 === b ? ["hover"] : b,
            w = lh(e, kx),
            x = ap(qe(), 2),
            k = x[0],
            C = x[1],
            S = "visible" in e ? _ : k,
            E = Je(null);
          Qe(t, (function() {
            return E.current
          }));
          var T = Je(null),
            O = "".concat(o, "-menu");
          ! function(e) {
            var t = e.visible,
              n = e.setTriggerVisible,
              r = e.triggerRef,
              i = e.menuRef,
              o = e.onVisibleChange,
              a = Je(!1),
              s = function() {
                var e, i, a, s;
                t && r.current && (null === (e = r.current) || void 0 === e || null === (i = e.triggerRef) || void 0 === i || null === (a = i.current) || void 0 === a || null === (s = a.focus) || void 0 === s || s.call(a), n(!1), "function" ==
                  typeof o && o(!1))
              },
              l = function(e) {
                var t;
                switch (e.keyCode) {
                  case wx:
                    s();
                    break;
                  case xx:
                    !a.current && (null === (t = i.current) || void 0 === t ? void 0 : t.focus) ? (e.preventDefault(), i.current.focus(), a.current = !0) : s()
                }
              };
            Ze((function() {
              return t ? (window.addEventListener("keydown", l), function() {
                window.removeEventListener("keydown", l), a.current = !1
              }) : function() {
                return null
              }
            }), [t])
          }({
            visible: S,
            setTriggerVisible: C,
            triggerRef: E,
            menuRef: T,
            onVisibleChange: e.onVisibleChange
          });
          var A, P, M, D, I = function() {
              var t = e.overlay;
              return "function" == typeof t ? t() : t
            },
            R = function(t) {
              var n = e.onOverlayClick,
                r = I().props;
              C(!1), n && n(t), r.onClick && r.onClick(t)
            },
            j = function() {
              var e, t = I(),
                n = up(T, t.ref),
                i = (sh(e = {
                  prefixCls: O
                }, "data-dropdown-inject", !0), sh(e, "onClick", R), sh(e, "ref", hp(t) ? n : void 0), e);
              return "string" == typeof t.type && (delete i.prefixCls, delete i["data-dropdown-inject"]), ue(de, null, r && ue("div", {
                className: "".concat(o, "-arrow")
              }), Gt(t, i))
            },
            N = g;
          return N || -1 === y.indexOf("contextMenu") || (N = ["click"]), ue(Mw, mh(mh({
            builtinPlacements: p
          }, w), {}, {
            prefixCls: o,
            ref: E,
            popupClassName: ul(m, sh({}, "".concat(o, "-show-arrow"), r)),
            popupStyle: v,
            action: y,
            showAction: f,
            hideAction: N || [],
            popupPlacement: u,
            popupAlign: l,
            popupTransitionName: a,
            popupAnimation: s,
            popupVisible: S,
            stretch: function() {
              var t = e.minOverlayWidthMatchTrigger,
                n = e.alignPoint;
              return "minOverlayWidthMatchTrigger" in e ? t : !n
            }() ? "minWidth" : "",
            popup: "function" == typeof e.overlay ? j : j(),
            onPopupVisibleChange: function(t) {
              var n = e.onVisibleChange;
              C(t), "function" == typeof n && n(t)
            },
            getPopupContainer: d
          }), (P = e.children, M = P.props ? P.props : {}, D = ul(M.className, void 0 !== (A = e.openClassName) ? A : "".concat(o, "-open")), S && P ? Gt(P, {
            className: D
          }) : P))
        }
        var Sx = mt(Cx);

        function Ex(e, t) {
          var n = e.prefixCls,
            r = e.editable,
            i = e.locale,
            o = e.style;
          return r && !1 !== r.showAdd ? ue("button", {
            ref: t,
            type: "button",
            className: "".concat(n, "-nav-add"),
            style: o,
            "aria-label": (null == i ? void 0 : i.addAriaLabel) || "Add tab",
            onClick: function(e) {
              r.onEdit("add", {
                event: e
              })
            }
          }, r.addIcon || "+") : null
        }
        var Tx = mt(Ex);

        function Ox(e, t) {
          var n = e.prefixCls,
            r = e.id,
            i = e.tabs,
            o = e.locale,
            a = e.mobile,
            s = e.moreIcon,
            l = void 0 === s ? "More" : s,
            c = e.moreTransitionName,
            u = e.style,
            h = e.className,
            p = e.editable,
            d = e.tabBarGutter,
            f = e.rtl,
            g = e.removeAriaLabel,
            m = e.onTabClick,
            v = ap(qe(!1), 2),
            _ = v[0],
            b = v[1],
            y = ap(qe(null), 2),
            w = y[0],
            x = y[1],
            k = "".concat(r, "-more-popup"),
            C = "".concat(n, "-dropdown"),
            S = null !== w ? "".concat(k, "-").concat(w) : null,
            E = null == o ? void 0 : o.dropdownAriaLabel;
          var T = ue(vx, {
            onClick: function(e) {
              var t = e.key,
                n = e.domEvent;
              m(t, n), b(!1)
            },
            id: k,
            tabIndex: -1,
            role: "listbox",
            "aria-activedescendant": S,
            selectedKeys: [w],
            "aria-label": void 0 !== E ? E : "expanded dropdown"
          }, i.map((function(e) {
            var t = p && !1 !== e.closable && !e.disabled;
            return ue(Kb, {
              key: e.key,
              id: "".concat(k, "-").concat(e.key),
              role: "option",
              "aria-controls": r && "".concat(r, "-panel-").concat(e.key),
              disabled: e.disabled
            }, ue("span", null, e.tab), t && ue("button", {
              type: "button",
              "aria-label": g || "remove",
              tabIndex: 0,
              className: "".concat(C, "-menu-item-remove"),
              onClick: function(t) {
                var n, r;
                t.stopPropagation(), n = t, r = e.key, n.preventDefault(), n.stopPropagation(), p.onEdit("remove", {
                  key: r,
                  event: n
                })
              }
            }, e.closeIcon || p.removeIcon || "×"))
          })));

          function O(e) {
            for (var t = i.filter((function(e) {
                return !e.disabled
              })), n = t.findIndex((function(e) {
                return e.key === w
              })) || 0, r = t.length, o = 0; o < r; o += 1) {
              var a = t[n = (n + e + r) % r];
              if (!a.disabled) return void x(a.key)
            }
          }
          Ze((function() {
            var e = document.getElementById(S);
            e && e.scrollIntoView && e.scrollIntoView(!1)
          }), [w]), Ze((function() {
            _ || x(null)
          }), [_]);
          var A = sh({}, f ? "marginRight" : "marginLeft", d);
          i.length || (A.visibility = "hidden", A.order = 1);
          var P = ul(sh({}, "".concat(C, "-rtl"), f)),
            M = a ? null : ue(Sx, {
              prefixCls: C,
              overlay: T,
              trigger: ["hover"],
              visible: _,
              transitionName: c,
              onVisibleChange: b,
              overlayClassName: P,
              mouseEnterDelay: .1,
              mouseLeaveDelay: .1
            }, ue("button", {
              type: "button",
              className: "".concat(n, "-nav-more"),
              style: A,
              tabIndex: -1,
              "aria-hidden": "true",
              "aria-haspopup": "listbox",
              "aria-controls": k,
              id: "".concat(r, "-more"),
              "aria-expanded": _,
              onKeyDown: function(e) {
                var t = e.which;
                if (_) switch (t) {
                  case $v.UP:
                    O(-1), e.preventDefault();
                    break;
                  case $v.DOWN:
                    O(1), e.preventDefault();
                    break;
                  case $v.ESC:
                    b(!1);
                    break;
                  case $v.SPACE:
                  case $v.ENTER:
                    null !== w && m(w, e)
                } else [$v.DOWN, $v.SPACE, $v.ENTER].includes(t) && (b(!0), e.preventDefault())
              }
            }, l));
          return ue("div", {
            className: ul("".concat(n, "-nav-operations"), h),
            style: u,
            ref: t
          }, M, ue(Tx, {
            prefixCls: n,
            locale: o,
            editable: p
          }))
        }
        var Ax = dt(mt(Ox), (function(e, t) {
            return t.tabMoving
          })),
          Px = je(null),
          Mx = Math.pow(.995, 20);

        function Dx(e, t) {
          var n = Je(e),
            r = ap(qe({}), 2)[1];
          return [n.current, function(e) {
            var i = "function" == typeof e ? e(n.current) : e;
            i !== n.current && t(i, n.current), n.current = i, r({})
          }]
        }
        var Ix = function(e) {
          var t, n = e.position,
            r = e.prefixCls,
            i = e.extra;
          if (!i) return null;
          var o = {};
          return i && "object" === $u(i) && !Xt(i) ? o = i : o.right = i, "right" === n && (t = o.right), "left" === n && (t = o.left), t ? ue("div", {
            className: "".concat(r, "-extra-content")
          }, t) : null
        };

        function Rx(e, t) {
          var n, r, i, o, a, s, l, c = nt(Px),
            u = c.prefixCls,
            h = c.tabs,
            p = e.className,
            d = e.style,
            f = e.id,
            g = e.animated,
            m = e.activeKey,
            v = e.rtl,
            _ = e.extra,
            b = e.editable,
            y = e.locale,
            w = e.tabPosition,
            x = e.tabBarGutter,
            k = e.children,
            C = e.onTabClick,
            S = e.onTabScroll,
            E = Je(),
            T = Je(),
            O = Je(),
            A = Je(),
            P = ap((r = Je(new Map), [function(e) {
              return r.current.has(e) || r.current.set(e, pe()), r.current.get(e)
            }, function(e) {
              r.current.delete(e)
            }]), 2),
            M = P[0],
            D = P[1],
            I = "top" === w || "bottom" === w,
            R = ap(Dx(0, (function(e, t) {
              I && S && S({
                direction: e > t ? "left" : "right"
              })
            })), 2),
            j = R[0],
            N = R[1],
            L = ap(Dx(0, (function(e, t) {
              !I && S && S({
                direction: e > t ? "top" : "bottom"
              })
            })), 2),
            F = L[0],
            B = L[1],
            z = ap(qe(0), 2),
            H = z[0],
            U = z[1],
            W = ap(qe(0), 2),
            V = W[0],
            X = W[1],
            G = ap(qe(null), 2),
            Y = G[0],
            q = G[1],
            K = ap(qe(null), 2),
            Z = K[0],
            $ = K[1],
            J = ap(qe(0), 2),
            Q = J[0],
            ee = J[1],
            te = ap(qe(0), 2),
            ne = te[0],
            re = te[1],
            ie = (i = new Map, o = Je([]), a = ap(qe({}), 2)[1], s = Je("function" == typeof i ? i() : i), l = tb((function() {
              var e = s.current;
              o.current.forEach((function(t) {
                e = t(e)
              })), o.current = [], s.current = e, a({})
            })), [s.current, function(e) {
              o.current.push(e), l()
            }]),
            oe = ap(ie, 2),
            ae = oe[0],
            se = oe[1],
            le = function(e, t, n) {
              return et((function() {
                for (var n, r = new Map, i = t.get(null === (n = e[0]) || void 0 === n ? void 0 : n.key) || ib, o = i.left + i.width, a = 0; a < e.length; a += 1) {
                  var s, l = e[a].key,
                    c = t.get(l);
                  c || (c = t.get(null === (s = e[a - 1]) || void 0 === s ? void 0 : s.key) || ib);
                  var u = r.get(l) || mh({}, c);
                  u.right = o - u.left - u.width, r.set(l, u)
                }
                return r
              }), [e.map((function(e) {
                return e.key
              })).join("_"), t, n])
            }(h, ae, H),
            ce = "".concat(u, "-nav-operations-hidden"),
            he = 0,
            de = 0;

          function fe(e) {
            return e < he ? he : e > de ? de : e
          }
          I ? v ? (he = 0, de = Math.max(0, H - Y)) : (he = Math.min(0, Y - H), de = 0) : (he = Math.min(0, Z - V), de = 0);
          var ge = Je(),
            me = ap(qe(), 2),
            ve = me[0],
            _e = me[1];

          function be() {
            _e(Date.now())
          }

          function ye() {
            window.clearTimeout(ge.current)
          }

          function we() {
            var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : m,
              t = le.get(e) || {
                width: 0,
                height: 0,
                left: 0,
                right: 0,
                top: 0
              };
            if (I) {
              var n = j;
              v ? t.right < j ? n = t.right : t.right + t.width > j + Y && (n = t.right + t.width - Y) : t.left < -j ? n = -t.left : t.left + t.width > -j + Y && (n = -(t.left + t.width - Y)), B(0), N(fe(n))
            } else {
              var r = F;
              t.top < -F ? r = -t.top : t.top + t.height > -F + Z && (r = -(t.top + t.height - Z)), N(0), B(fe(r))
            }
          }! function(e, t) {
            var n = ap(qe(), 2),
              r = n[0],
              i = n[1],
              o = ap(qe(0), 2),
              a = o[0],
              s = o[1],
              l = ap(qe(0), 2),
              c = l[0],
              u = l[1],
              h = ap(qe(), 2),
              p = h[0],
              d = h[1],
              f = Je(),
              g = Je(),
              m = Je(null);
            m.current = {
              onTouchStart: function(e) {
                var t = e.touches[0],
                  n = t.screenX,
                  r = t.screenY;
                i({
                  x: n,
                  y: r
                }), window.clearInterval(f.current)
              },
              onTouchMove: function(e) {
                if (r) {
                  e.preventDefault();
                  var n = e.touches[0],
                    o = n.screenX,
                    l = n.screenY;
                  i({
                    x: o,
                    y: l
                  });
                  var c = o - r.x,
                    h = l - r.y;
                  t(c, h);
                  var p = Date.now();
                  s(p), u(p - a), d({
                    x: c,
                    y: h
                  })
                }
              },
              onTouchEnd: function() {
                if (r && (i(null), d(null), p)) {
                  var e = p.x / c,
                    n = p.y / c,
                    o = Math.abs(e),
                    a = Math.abs(n);
                  if (Math.max(o, a) < .1) return;
                  var s = e,
                    l = n;
                  f.current = window.setInterval((function() {
                    Math.abs(s) < .01 && Math.abs(l) < .01 ? window.clearInterval(f.current) : t(20 * (s *= Mx), 20 * (l *= Mx))
                  }), 20)
                }
              },
              onWheel: function(e) {
                var n = e.deltaX,
                  r = e.deltaY,
                  i = 0,
                  o = Math.abs(n),
                  a = Math.abs(r);
                o === a ? i = "x" === g.current ? n : r : o > a ? (i = n, g.current = "x") : (i = r, g.current = "y"), t(-i, -i) && e.preventDefault()
              }
            }, Ze((function() {
              function t(e) {
                m.current.onTouchMove(e)
              }

              function n(e) {
                m.current.onTouchEnd(e)
              }
              return document.addEventListener("touchmove", t, {
                  passive: !1
                }), document.addEventListener("touchend", n, {
                  passive: !1
                }), e.current.addEventListener("touchstart", (function(e) {
                  m.current.onTouchStart(e)
                }), {
                  passive: !1
                }), e.current.addEventListener("wheel", (function(e) {
                  m.current.onWheel(e)
                })),
                function() {
                  document.removeEventListener("touchmove", t), document.removeEventListener("touchend", n)
                }
            }), [])
          }(E, (function(e, t) {
            function n(e, t) {
              e((function(e) {
                return fe(e + t)
              }))
            }
            if (I) {
              if (Y >= H) return !1;
              n(N, e)
            } else {
              if (Z >= V) return !1;
              n(B, t)
            }
            return ye(), be(), !0
          })), Ze((function() {
            return ye(), ve && (ge.current = window.setTimeout((function() {
              _e(0)
            }), 100)), ye
          }), [ve]);
          var xe = function(e, t, n, r, i) {
              var o, a, s, l = i.tabs,
                c = i.tabPosition,
                u = i.rtl;
              ["top", "bottom"].includes(c) ? (o = "width", a = u ? "right" : "left", s = Math.abs(t.left)) : (o = "height", a = "top", s = -t.top);
              var h = t[o],
                p = n[o],
                d = r[o],
                f = h;
              return p + d > h && p < h && (f = h - d), et((function() {
                if (!l.length) return [0, 0];
                for (var t = l.length, n = t, r = 0; r < t; r += 1) {
                  var i = e.get(l[r].key) || ob;
                  if (i[a] + i[o] > s + f) {
                    n = r - 1;
                    break
                  }
                }
                for (var c = 0, u = t - 1; u >= 0; u -= 1)
                  if ((e.get(l[u].key) || ob)[a] < s) {
                    c = u + 1;
                    break
                  } return [c, n]
              }), [e, s, f, c, l.map((function(e) {
                return e.key
              })).join("_"), u])
            }(le, {
              width: Y,
              height: Z,
              left: j,
              top: F
            }, {
              width: H,
              height: V
            }, {
              width: Q,
              height: ne
            }, mh(mh({}, e), {}, {
              tabs: h
            })),
            ke = ap(xe, 2),
            Ce = ke[0],
            Se = ke[1],
            Ee = {};
          "top" === w || "bottom" === w ? Ee[v ? "marginRight" : "marginLeft"] = x : Ee.marginTop = x;
          var Te = h.map((function(e, t) {
              var n = e.key;
              return ue(rb, {
                id: f,
                prefixCls: u,
                key: n,
                tab: e,
                style: 0 === t ? void 0 : Ee,
                closable: e.closable,
                editable: b,
                active: n === m,
                renderWrapper: k,
                removeAriaLabel: null == y ? void 0 : y.removeAriaLabel,
                ref: M(n),
                onClick: function(e) {
                  C(n, e)
                },
                onRemove: function() {
                  D(n)
                },
                onFocus: function() {
                  we(n), be(), E.current && (v || (E.current.scrollLeft = 0), E.current.scrollTop = 0)
                }
              })
            })),
            Oe = tb((function() {
              var e, t, n, r, i, o, a = (null === (e = E.current) || void 0 === e ? void 0 : e.offsetWidth) || 0,
                s = (null === (t = E.current) || void 0 === t ? void 0 : t.offsetHeight) || 0,
                l = (null === (n = A.current) || void 0 === n ? void 0 : n.offsetWidth) || 0,
                c = (null === (r = A.current) || void 0 === r ? void 0 : r.offsetHeight) || 0;
              q(a), $(s), ee(l), re(c);
              var u = ((null === (i = T.current) || void 0 === i ? void 0 : i.offsetWidth) || 0) - l,
                p = ((null === (o = T.current) || void 0 === o ? void 0 : o.offsetHeight) || 0) - c;
              U(u), X(p), se((function() {
                var e = new Map;
                return h.forEach((function(t) {
                  var n = t.key,
                    r = M(n).current;
                  r && e.set(n, {
                    width: r.offsetWidth,
                    height: r.offsetHeight,
                    left: r.offsetLeft,
                    top: r.offsetTop
                  })
                })), e
              }))
            })),
            Ae = h.slice(0, Ce),
            Pe = h.slice(Se + 1),
            Me = [].concat(fh(Ae), fh(Pe)),
            De = ap(qe(), 2),
            Ie = De[0],
            Re = De[1],
            je = le.get(m),
            Ne = Je();

          function Le() {
            Vp.cancel(Ne.current)
          }
          Ze((function() {
            var e = {};
            return je && (I ? (v ? e.right = je.right : e.left = je.left, e.width = je.width) : (e.top = je.top, e.height = je.height)), Le(), Ne.current = Vp((function() {
              Re(e)
            })), Le
          }), [je, I, v]), Ze((function() {
            we()
          }), [m, je, le, I]), Ze((function() {
            Oe()
          }), [v, x, m, h.map((function(e) {
            return e.key
          })).join("_")]);
          var Fe, Be, ze, He, Ue = !!Me.length,
            We = "".concat(u, "-nav-wrap");
          return I ? v ? (Be = j > 0, Fe = j + Y < H) : (Fe = j < 0, Be = -j + Y < H) : (ze = F < 0, He = -F + Z < V), ue("div", {
            ref: t,
            role: "tablist",
            className: ul("".concat(u, "-nav"), p),
            style: d,
            onKeyDown: function() {
              be()
            }
          }, ue(Ix, {
            position: "left",
            extra: _,
            prefixCls: u
          }), ue(eb, {
            onResize: Oe
          }, ue("div", {
            className: ul(We, (n = {}, sh(n, "".concat(We, "-ping-left"), Fe), sh(n, "".concat(We, "-ping-right"), Be), sh(n, "".concat(We, "-ping-top"), ze), sh(n, "".concat(We, "-ping-bottom"), He), n)),
            ref: E
          }, ue(eb, {
            onResize: Oe
          }, ue("div", {
            ref: T,
            className: "".concat(u, "-nav-list"),
            style: {
              transform: "translate(".concat(j, "px, ").concat(F, "px)"),
              transition: ve ? "none" : void 0
            }
          }, Te, ue(Tx, {
            ref: A,
            prefixCls: u,
            locale: y,
            editable: b,
            style: mh(mh({}, 0 === Te.length ? void 0 : Ee), {}, {
              visibility: Ue ? "hidden" : null
            })
          }), ue("div", {
            className: ul("".concat(u, "-ink-bar"), sh({}, "".concat(u, "-ink-bar-animated"), g.inkBar)),
            style: Ie
          }))))), ue(Ax, Ku({}, e, {
            removeAriaLabel: null == y ? void 0 : y.removeAriaLabel,
            ref: O,
            prefixCls: u,
            tabs: Me,
            className: !Ue && ce,
            tabMoving: !!ve
          })), ue(Ix, {
            position: "right",
            extra: _,
            prefixCls: u
          }))
        }
        var jx = mt(Rx);

        function Nx(e) {
          var t = e.id,
            n = e.activeKey,
            r = e.animated,
            i = e.tabPosition,
            o = e.rtl,
            a = e.destroyInactiveTabPane,
            s = nt(Px),
            l = s.prefixCls,
            c = s.tabs,
            u = r.tabPane,
            h = c.findIndex((function(e) {
              return e.key === n
            }));
          return ue("div", {
            className: ul("".concat(l, "-content-holder"))
          }, ue("div", {
            className: ul("".concat(l, "-content"), "".concat(l, "-content-").concat(i), sh({}, "".concat(l, "-content-animated"), u)),
            style: h && u ? sh({}, o ? "marginRight" : "marginLeft", "-".concat(h, "00%")) : null
          }, c.map((function(e) {
            return Gt(e.node, {
              key: e.key,
              prefixCls: l,
              tabKey: e.key,
              id: t,
              animated: u,
              active: e.key === n,
              destroyInactiveTabPane: a
            })
          }))))
        }

        function Lx(e) {
          var t = e.prefixCls,
            n = e.forceRender,
            r = e.className,
            i = e.style,
            o = e.id,
            a = e.active,
            s = e.animated,
            l = e.destroyInactiveTabPane,
            c = e.tabKey,
            u = e.children,
            h = ap(qe(n), 2),
            p = h[0],
            d = h[1];
          Ze((function() {
            a ? d(!0) : l && d(!1)
          }), [a, l]);
          var f = {};
          return a || (s ? (f.visibility = "hidden", f.height = 0, f.overflowY = "hidden") : f.display = "none"), ue("div", {
            id: o && "".concat(o, "-panel-").concat(c),
            role: "tabpanel",
            tabIndex: a ? 0 : -1,
            "aria-labelledby": o && "".concat(o, "-tab-").concat(c),
            "aria-hidden": !a,
            style: mh(mh({}, f), i),
            className: ul("".concat(t, "-tabpane"), a && "".concat(t, "-tabpane-active"), r)
          }, (a || p || n) && u)
        }
        var Fx = ["id", "prefixCls", "className", "children", "direction", "activeKey", "defaultActiveKey", "editable", "animated", "tabPosition", "tabBarGutter", "tabBarStyle", "tabBarExtraContent", "locale", "moreIcon", "moreTransitionName",
            "destroyInactiveTabPane", "renderTabBar", "onChange", "onTabClick", "onTabScroll"
          ],
          Bx = 0;

        function zx(e, t) {
          var n, r, i = e.id,
            o = e.prefixCls,
            a = void 0 === o ? "rc-tabs" : o,
            s = e.className,
            l = e.children,
            c = e.direction,
            u = e.activeKey,
            h = e.defaultActiveKey,
            p = e.editable,
            d = e.animated,
            f = void 0 === d ? {
              inkBar: !0,
              tabPane: !1
            } : d,
            g = e.tabPosition,
            m = void 0 === g ? "top" : g,
            v = e.tabBarGutter,
            _ = e.tabBarStyle,
            b = e.tabBarExtraContent,
            y = e.locale,
            w = e.moreIcon,
            x = e.moreTransitionName,
            k = e.destroyInactiveTabPane,
            C = e.renderTabBar,
            S = e.onChange,
            E = e.onTabClick,
            T = e.onTabScroll,
            O = lh(e, Fx),
            A = function(e) {
              return H_(e).map((function(e) {
                return Xt(e) ? mh(mh({
                  key: void 0 !== e.key ? String(e.key) : void 0
                }, e.props), {}, {
                  node: e
                }) : null
              })).filter((function(e) {
                return e
              }))
            }(l),
            P = "rtl" === c;
          r = !1 === f ? {
            inkBar: !1,
            tabPane: !1
          } : !0 === f ? {
            inkBar: !0,
            tabPane: !0
          } : mh({
            inkBar: !0,
            tabPane: !1
          }, "object" === $u(f) ? f : {});
          var M = ap(qe(!1), 2),
            D = M[0],
            I = M[1];
          Ze((function() {
            I(U_())
          }), []);
          var R = ap(X_((function() {
              var e;
              return null === (e = A[0]) || void 0 === e ? void 0 : e.key
            }), {
              value: u,
              defaultValue: h
            }), 2),
            j = R[0],
            N = R[1],
            L = ap(qe((function() {
              return A.findIndex((function(e) {
                return e.key === j
              }))
            })), 2),
            F = L[0],
            B = L[1];
          Ze((function() {
            var e, t = A.findIndex((function(e) {
              return e.key === j
            })); - 1 === t && (t = Math.max(0, Math.min(F, A.length - 1)), N(null === (e = A[t]) || void 0 === e ? void 0 : e.key));
            B(t)
          }), [A.map((function(e) {
            return e.key
          })).join("_"), j, F]);
          var z = ap(X_(null, {
              value: i
            }), 2),
            H = z[0],
            U = z[1],
            W = m;
          D && !["left", "right"].includes(m) && (W = "top"), Ze((function() {
            i || (U("rc-tabs-".concat(Bx)), Bx += 1)
          }), []);
          var V, X = {
              id: H,
              activeKey: j,
              animated: r,
              tabPosition: W,
              rtl: P,
              mobile: D
            },
            G = mh(mh({}, X), {}, {
              editable: p,
              locale: y,
              moreIcon: w,
              moreTransitionName: x,
              tabBarGutter: v,
              onTabClick: function(e, t) {
                null == E || E(e, t);
                var n = e !== j;
                N(e), n && (null == S || S(e))
              },
              onTabScroll: T,
              extra: b,
              style: _,
              panes: l
            });
          return V = C ? C(G, jx) : ue(jx, G), ue(Px.Provider, {
            value: {
              tabs: A,
              prefixCls: a
            }
          }, ue("div", Ku({
            ref: t,
            id: i,
            className: ul(a, "".concat(a, "-").concat(W), (n = {}, sh(n, "".concat(a, "-mobile"), D), sh(n, "".concat(a, "-editable"), p), sh(n, "".concat(a, "-rtl"), P), n), s)
          }, O), V, ue(Nx, Ku({
            destroyInactiveTabPane: k
          }, X, {
            animated: r
          }))))
        }
        var Hx = mt(zx);
        Hx.TabPane = Lx;
        var Ux = Hx,
          Wx = "DesignOperator-module_tabs__kDJ51",
          Vx = "DesignOperator-module_app_parakeet_operator__lL4U1",
          Xx = "DesignOperator-module_tab_panel__cumuu";

        function Gx(e) {
          return !(!e.addonBefore && !e.addonAfter)
        }

        function Yx(e) {
          return !!(e.prefix || e.suffix || e.allowClear)
        }

        function qx(e, t, n, r) {
          if (n) {
            var i = t;
            if ("click" === t.type) {
              var o = e.cloneNode(!0);
              return i = Object.create(t, {
                target: {
                  value: o
                },
                currentTarget: {
                  value: o
                }
              }), o.value = "", void n(i)
            }
            if (void 0 !== r) return i = Object.create(t, {
              target: {
                value: e
              },
              currentTarget: {
                value: e
              }
            }), e.value = r, void n(i);
            n(i)
          }
        }

        function Kx(e) {
          return null == e ? "" : String(e)
        }
        c(
        ".DesignOperator-module_parakeet_comp_tab__Ekj1e{display:flex;font-weight:600;margin-bottom:16px}.DesignOperator-module_tabs__kDJ51{border:none!important;border-radius:0 0 8px 8px}.DesignOperator-module_app_parakeet_operator__lL4U1{box-sizing:border-box}.DesignOperator-module_app_parakeet_operator__lL4U1 .rc-tabs-nav-list{background-color:hsla(0,0%,90%,.4);display:flex;padding:5px;width:100%}.DesignOperator-module_app_parakeet_operator__lL4U1 .rc-tabs-tab{background:none;border-radius:4px;display:flex;flex:1;height:30px;justify-content:center}.DesignOperator-module_app_parakeet_operator__lL4U1 .rc-tabs-tab-active{background-color:#fff;color:#333}.DesignOperator-module_app_parakeet_operator__lL4U1 .rc-tabs-tab-active .rc-tabs-tab-btn{color:#333}.DesignOperator-module_app_parakeet_operator__lL4U1 .rc-tabs-tab-btn{align-items:center;color:rgba(51,51,51,.6);display:flex;font-size:16px;font-weight:500!important}.DesignOperator-module_app_parakeet_operator__lL4U1 .rc-tabs-ink-bar{display:none}.DesignOperator-module_tab_item_active__8Mzpg{border:none;color:#333;height:34px;position:relative}.DesignOperator-module_tab_panel__cumuu{background-color:#fdfdfd}.DesignOperator-module_app_parakeet_operator__lL4U1 .rc-tabs-tab-disabled{flex:unset;margin:0 18px}.DesignOperator-module_app_parakeet_operator__lL4U1 .rc-tabs-tab:first-child{margin-right:22px}.DesignOperator-module_app_parakeet_operator__lL4U1 .rc-tabs-tab:nth-child(5){margin-left:22px}.DesignOperator-module_app_parakeet_operator__lL4U1 .rc-tabs-tab-disabled:hover{background-color:#fff}@media screen and (max-width:959px){.DesignOperator-module_tab_panel__cumuu{align-items:center;display:flex;height:auto;min-height:108px}.DesignOperator-module_tab_panel__cumuu>div{width:100%}.DesignOperator-module_app_parakeet_operator__lL4U1 .icon-custom{scale:.8}.DesignOperator-module_app_parakeet_operator__lL4U1 .rc-tabs-tab:first-of-type{flex:unset;margin:0 8px 0 3px}.DesignOperator-module_app_parakeet_operator__lL4U1 .rc-tabs-nav-list div:nth-last-child(2){flex:unset;margin:0 3px 0 8px}}");
        var Zx = function(e) {
            var t, n = e.inputElement,
              r = e.prefixCls,
              i = e.prefix,
              o = e.suffix,
              a = e.addonBefore,
              s = e.addonAfter,
              l = e.className,
              c = e.style,
              u = e.affixWrapperClassName,
              h = e.groupClassName,
              p = e.wrapperClassName,
              d = e.disabled,
              f = e.readOnly,
              g = e.focused,
              m = e.triggerFocus,
              v = e.allowClear,
              _ = e.value,
              b = e.handleReset,
              y = e.hidden,
              w = e.inputStyle,
              x = e.classes,
              k = Je(null),
              C = Gt(n, {
                value: _,
                hidden: y,
                style: mh(mh({}, null === (t = n.props) || void 0 === t ? void 0 : t.style), w)
              });
            if (Yx(e)) {
              var S, E = "".concat(r, "-affix-wrapper"),
                T = ul(E, (sh(S = {}, "".concat(E, "-disabled"), d), sh(S, "".concat(E, "-focused"), g), sh(S, "".concat(E, "-readonly"), f), sh(S, "".concat(E, "-input-with-clear-btn"), o && v && _), S), !Gx(e) && l, u, null == x ? void 0 : x
                  .affixWrapper),
                O = (o || v) && Jt.createElement("span", {
                  className: "".concat(r, "-suffix")
                }, function() {
                  var e;
                  if (!v) return null;
                  var t = !d && !f && _,
                    n = "".concat(r, "-clear-icon"),
                    i = "object" === $u(v) && null != v && v.clearIcon ? v.clearIcon : "✖";
                  return Jt.createElement("span", {
                    onClick: b,
                    onMouseDown: function(e) {
                      return e.preventDefault()
                    },
                    className: ul(n, (e = {}, sh(e, "".concat(n, "-hidden"), !t), sh(e, "".concat(n, "-has-suffix"), !!o), e)),
                    role: "button",
                    tabIndex: -1
                  }, i)
                }(), o);
              C = Jt.createElement("span", {
                className: T,
                style: c,
                hidden: !Gx(e) && y,
                onClick: function(e) {
                  var t;
                  null !== (t = k.current) && void 0 !== t && t.contains(e.target) && (null == m || m())
                },
                ref: k
              }, i && Jt.createElement("span", {
                className: "".concat(r, "-prefix")
              }, i), Gt(n, {
                style: null != w ? w : null,
                value: _,
                hidden: null
              }), O)
            }
            if (Gx(e)) {
              var A = "".concat(r, "-group"),
                P = "".concat(A, "-addon"),
                M = ul("".concat(r, "-wrapper"), A, p, null == x ? void 0 : x.wrapper),
                D = ul("".concat(r, "-group-wrapper"), l, h, null == x ? void 0 : x.group);
              return Jt.createElement("span", {
                className: D,
                style: c,
                hidden: y
              }, Jt.createElement("span", {
                className: M
              }, a && Jt.createElement("span", {
                className: P
              }, a), Gt(C, {
                style: null != w ? w : null,
                hidden: null
              }), s && Jt.createElement("span", {
                className: P
              }, s)))
            }
            return C
          },
          $x = ["autoComplete", "onChange", "onFocus", "onBlur", "onPressEnter", "onKeyDown", "prefixCls", "disabled", "htmlSize", "className", "maxLength", "suffix", "showCount", "type", "inputClassName", "classes"],
          Jx = mt((function(e, t) {
            var n = e.autoComplete,
              r = e.onChange,
              i = e.onFocus,
              o = e.onBlur,
              a = e.onPressEnter,
              s = e.onKeyDown,
              l = e.prefixCls,
              c = void 0 === l ? "rc-input" : l,
              u = e.disabled,
              h = e.htmlSize,
              p = e.className,
              d = e.maxLength,
              f = e.suffix,
              g = e.showCount,
              m = e.type,
              v = void 0 === m ? "text" : m,
              _ = e.inputClassName,
              b = e.classes,
              y = lh(e, $x),
              w = ap(X_(e.defaultValue, {
                value: e.value
              }), 2),
              x = w[0],
              k = w[1],
              C = ap(qe(!1), 2),
              S = C[0],
              E = C[1],
              T = Je(null),
              O = function(e) {
                T.current && function(e, t) {
                  if (e) {
                    e.focus(t);
                    var n = (t || {}).cursor;
                    if (n) {
                      var r = e.value.length;
                      switch (n) {
                        case "start":
                          e.setSelectionRange(0, 0);
                          break;
                        case "end":
                          e.setSelectionRange(r, r);
                          break;
                        default:
                          e.setSelectionRange(0, r)
                      }
                    }
                  }
                }(T.current, e)
              };
            Qe(t, (function() {
              return {
                focus: O,
                blur: function() {
                  var e;
                  null === (e = T.current) || void 0 === e || e.blur()
                },
                setSelectionRange: function(e, t, n) {
                  var r;
                  null === (r = T.current) || void 0 === r || r.setSelectionRange(e, t, n)
                },
                select: function() {
                  var e;
                  null === (e = T.current) || void 0 === e || e.select()
                },
                input: T.current
              }
            })), Ze((function() {
              E((function(e) {
                return (!e || !u) && e
              }))
            }), [u]);
            var A, P = function(t) {
                void 0 === e.value && k(t.target.value), T.current && qx(T.current, t, r)
              },
              M = function(e) {
                a && "Enter" === e.key && a(e), null == s || s(e)
              },
              D = function(e) {
                E(!0), null == i || i(e)
              },
              I = function(e) {
                E(!1), null == o || o(e)
              };
            return Jt.createElement(Zx, Ku({}, y, {
              prefixCls: c,
              className: p,
              inputElement: (A = Sb(e, ["prefixCls", "onPressEnter", "addonBefore", "addonAfter", "prefix", "suffix", "allowClear", "defaultValue", "showCount", "affixWrapperClassName", "groupClassName", "inputClassName", "classes",
                "wrapperClassName", "htmlSize"
              ]), Jt.createElement("input", Ku({
                autoComplete: n
              }, A, {
                onChange: P,
                onFocus: D,
                onBlur: I,
                onKeyDown: M,
                className: ul(c, sh({}, "".concat(c, "-disabled"), u), _, null == b ? void 0 : b.input, !Gx(e) && !Yx(e) && p),
                ref: T,
                size: h,
                type: v
              }))),
              handleReset: function(e) {
                k(""), O(), T.current && qx(T.current, e, r)
              },
              value: Kx(x),
              focused: S,
              triggerFocus: O,
              suffix: function() {
                var e = Number(d) > 0;
                if (f || g) {
                  var t = Kx(x),
                    n = fh(t).length,
                    r = "object" === $u(g) ? g.formatter({
                      value: t,
                      count: n,
                      maxLength: d
                    }) : "".concat(n).concat(e ? " / ".concat(d) : "");
                  return Jt.createElement(Jt.Fragment, null, !!g && Jt.createElement("span", {
                    className: ul("".concat(c, "-show-count-suffix"), sh({}, "".concat(c, "-show-count-has-suffix"), !!f))
                  }, r), f)
                }
                return null
              }(),
              disabled: u,
              classes: b
            }))
          })),
          Qx = Jx,
          ek = "SizeOperator-module_input__lSSD5",
          tk = "SizeOperator-module_suffix__kFdZc",
          nk = "SizeOperator-module_input_controller__pl-h0",
          rk = "SizeOperator-module_label__4U5QN",
          ik = "SizeOperator-module_tab_content__SYACz",
          ok = "SizeOperator-module_tip__-z7-F",
          ak = "SizeOperator-module_tab_content_item__yRWHu";
        c(
        '.SizeOperator-module_input__lSSD5{background:#fff;border:1px solid rgba(51,51,51,.12);border-radius:4px;display:flex;font-size:14px;height:33px;margin-left:12px;outline:none!important;padding:6px 24px 6px 12px}.SizeOperator-module_suffix__kFdZc{position:relative}.SizeOperator-module_suffix__kFdZc:after{color:rgba(51,51,51,.4);content:"px";display:block;font-size:16px;font-weight:400;line-height:16px;position:absolute;right:6px;top:6px}.SizeOperator-module_input_controller__pl-h0{width:88px}.SizeOperator-module_label__4U5QN{color:#333;font-size:15px;font-weight:400;line-height:130%;width:50px}.SizeOperator-module_tab_content__SYACz{padding:20px 24px}.SizeOperator-module_tip__-z7-F{color:rgba(51,51,51,.5);font-size:15px;font-weight:400;line-height:130%;margin-left:16px;text-align:center}.SizeOperator-module_tab_content_item__yRWHu{margin-top:12px}@media screen and (max-width:959px){.SizeOperator-module_tip__-z7-F{font-size:14px}.SizeOperator-module_tab_content__SYACz{padding:0 16px}.SizeOperator-module_input__lSSD5{margin-left:8px}.SizeOperator-module_tip__-z7-F{margin-left:12px}.SizeOperator-module_label__4U5QN{font-size:14px}.SizeOperator-module_suffix__kFdZc:after{top:7px}}');
        var sk = e => {
            var {
              onChange: t,
              defaultData: n
            } = e, [r, i] = qe({
              width: "",
              height: ""
            }), {
              formatMessage: o
            } = zi();
            Ze((() => {
              i(n)
            }), [n]);
            var a = (e, t) => {
                i(h(h({}, r), {}, {
                  [e]: t.target.value
                }))
              },
              s = e => {
                var n = Math.max(Math.min(r[e], O), T),
                  o = h(h({}, r), {}, {
                    [e]: n
                  });
                i(o), t(o)
              };
            return gl("div", {
              className: ik,
              children: [gl("div", {
                className: _d,
                children: [gl("span", {
                  className: rk,
                  children: o({
                    id: "width"
                  })
                }), gl("div", {
                  className: tk,
                  children: gl(Qx, {
                    value: null == r ? void 0 : r.width,
                    className: ul([
                      [ek],
                      [nk]
                    ]),
                    maxLength: 4,
                    onChange: e => a("width", e),
                    onBlur: () => s("width")
                  })
                }), gl("span", {
                  className: ok,
                  children: [o({
                    id: "size_range"
                  }), ": ", T, "-", O, "px"]
                })]
              }), gl("div", {
                className: ul([
                  [_d],
                  [ak]
                ]),
                children: [gl("span", {
                  className: rk,
                  children: o({
                    id: "height"
                  })
                }), gl("div", {
                  className: tk,
                  children: gl(Qx, {
                    value: null == r ? void 0 : r.height,
                    className: ul([
                      [ek],
                      [nk]
                    ]),
                    maxLength: 4,
                    onChange: e => a("height", e),
                    onBlur: () => s("height")
                  })
                }), gl("span", {
                  className: ok,
                  children: [o({
                    id: "size_range"
                  }), ": ", T, "-", O, "px"]
                })]
              })]
            })
          },
          lk = je({
            min: 0,
            max: 0,
            direction: "ltr",
            step: 1,
            includedStart: 0,
            includedEnd: 0,
            tabIndex: 0,
            keyboard: !0
          });

        function ck(e, t, n) {
          return (e - t) / (n - t)
        }

        function uk(e, t, n, r) {
          var i = ck(t, n, r),
            o = {};
          switch (e) {
            case "rtl":
              o.right = "".concat(100 * i, "%"), o.transform = "translateX(50%)";
              break;
            case "btt":
              o.bottom = "".concat(100 * i, "%"), o.transform = "translateY(50%)";
              break;
            case "ttb":
              o.top = "".concat(100 * i, "%"), o.transform = "translateY(-50%)";
              break;
            default:
              o.left = "".concat(100 * i, "%"), o.transform = "translateX(-50%)"
          }
          return o
        }

        function hk(e, t) {
          return Array.isArray(e) ? e[t] : e
        }
        var pk = ["prefixCls", "value", "valueIndex", "onStartMove", "style", "render", "dragging", "onOffsetChange"],
          dk = mt((function(e, t) {
            var n, r, i = e.prefixCls,
              o = e.value,
              a = e.valueIndex,
              s = e.onStartMove,
              l = e.style,
              c = e.render,
              u = e.dragging,
              h = e.onOffsetChange,
              p = lh(e, pk),
              d = nt(lk),
              f = d.min,
              g = d.max,
              m = d.direction,
              v = d.disabled,
              _ = d.keyboard,
              b = d.range,
              y = d.tabIndex,
              w = d.ariaLabelForHandle,
              x = d.ariaLabelledByForHandle,
              k = d.ariaValueTextFormatterForHandle,
              C = "".concat(i, "-handle"),
              S = function(e) {
                v || s(e, a)
              },
              E = uk(m, o, f, g),
              T = ue("div", Ku({
                ref: t,
                className: ul(C, (n = {}, sh(n, "".concat(C, "-").concat(a + 1), b), sh(n, "".concat(C, "-dragging"), u), n)),
                style: mh(mh({}, E), l),
                onMouseDown: S,
                onTouchStart: S,
                onKeyDown: function(e) {
                  if (!v && _) {
                    var t = null;
                    switch (e.which || e.keyCode) {
                      case $v.LEFT:
                        t = "ltr" === m || "btt" === m ? -1 : 1;
                        break;
                      case $v.RIGHT:
                        t = "ltr" === m || "btt" === m ? 1 : -1;
                        break;
                      case $v.UP:
                        t = "ttb" !== m ? 1 : -1;
                        break;
                      case $v.DOWN:
                        t = "ttb" !== m ? -1 : 1;
                        break;
                      case $v.HOME:
                        t = "min";
                        break;
                      case $v.END:
                        t = "max";
                        break;
                      case $v.PAGE_UP:
                        t = 2;
                        break;
                      case $v.PAGE_DOWN:
                        t = -2
                    }
                    null !== t && (e.preventDefault(), h(t, a))
                  }
                },
                tabIndex: v ? null : hk(y, a),
                role: "slider",
                "aria-valuemin": f,
                "aria-valuemax": g,
                "aria-valuenow": o,
                "aria-disabled": v,
                "aria-label": hk(w, a),
                "aria-labelledby": hk(x, a),
                "aria-valuetext": null === (r = hk(k, a)) || void 0 === r ? void 0 : r(o)
              }, p));
            return c && (T = c(T, {
              index: a,
              prefixCls: i,
              value: o,
              dragging: u
            })), T
          })),
          fk = dk,
          gk = ["prefixCls", "style", "onStartMove", "onOffsetChange", "values", "handleRender", "draggingIndex"],
          mk = mt((function(e, t) {
            var n = e.prefixCls,
              r = e.style,
              i = e.onStartMove,
              o = e.onOffsetChange,
              a = e.values,
              s = e.handleRender,
              l = e.draggingIndex,
              c = lh(e, gk),
              u = Je({});
            return Qe(t, (function() {
              return {
                focus: function(e) {
                  var t;
                  null === (t = u.current[e]) || void 0 === t || t.focus()
                }
              }
            })), ue(de, null, a.map((function(e, t) {
              return ue(fk, Ku({
                ref: function(e) {
                  e ? u.current[t] = e : delete u.current[t]
                },
                dragging: l === t,
                prefixCls: n,
                style: hk(r, t),
                key: t,
                value: e,
                valueIndex: t,
                onStartMove: i,
                onOffsetChange: o,
                render: s
              }, c))
            })))
          })),
          vk = mk;

        function _k(e) {
          var t = "touches" in e ? e.touches[0] : e;
          return {
            pageX: t.pageX,
            pageY: t.pageY
          }
        }

        function bk(e) {
          var t = e.prefixCls,
            n = e.style,
            r = e.start,
            i = e.end,
            o = e.index,
            a = e.onStartMove,
            s = nt(lk),
            l = s.direction,
            c = s.min,
            u = s.max,
            h = s.disabled,
            p = s.range,
            d = "".concat(t, "-track"),
            f = ck(r, c, u),
            g = ck(i, c, u),
            m = function(e) {
              !h && a && a(e, -1)
            },
            v = {};
          switch (l) {
            case "rtl":
              v.right = "".concat(100 * f, "%"), v.width = "".concat(100 * g - 100 * f, "%");
              break;
            case "btt":
              v.bottom = "".concat(100 * f, "%"), v.height = "".concat(100 * g - 100 * f, "%");
              break;
            case "ttb":
              v.top = "".concat(100 * f, "%"), v.height = "".concat(100 * g - 100 * f, "%");
              break;
            default:
              v.left = "".concat(100 * f, "%"), v.width = "".concat(100 * g - 100 * f, "%")
          }
          return ue("div", {
            className: ul(d, p && "".concat(d, "-").concat(o + 1)),
            style: mh(mh({}, v), n),
            onMouseDown: m,
            onTouchStart: m
          })
        }

        function yk(e) {
          var t = e.prefixCls,
            n = e.style,
            r = e.values,
            i = e.startPoint,
            o = e.onStartMove,
            a = nt(lk),
            s = a.included,
            l = a.range,
            c = a.min,
            u = et((function() {
              if (!l) {
                if (0 === r.length) return [];
                var e = null != i ? i : c,
                  t = r[0];
                return [{
                  start: Math.min(e, t),
                  end: Math.max(e, t)
                }]
              }
              for (var n = [], o = 0; o < r.length - 1; o += 1) n.push({
                start: r[o],
                end: r[o + 1]
              });
              return n
            }), [r, l, i, c]);
          return s ? u.map((function(e, r) {
            var i = e.start,
              a = e.end;
            return ue(bk, {
              index: r,
              prefixCls: t,
              style: hk(n, r),
              start: i,
              end: a,
              key: r,
              onStartMove: o
            })
          })) : null
        }

        function wk(e) {
          var t = e.prefixCls,
            n = e.style,
            r = e.children,
            i = e.value,
            o = e.onClick,
            a = nt(lk),
            s = a.min,
            l = a.max,
            c = a.direction,
            u = a.includedStart,
            h = a.includedEnd,
            p = a.included,
            d = "".concat(t, "-text"),
            f = uk(c, i, s, l);
          return ue("span", {
            className: ul(d, sh({}, "".concat(d, "-active"), p && u <= i && i <= h)),
            style: mh(mh({}, f), n),
            onMouseDown: function(e) {
              e.stopPropagation()
            },
            onClick: function() {
              o(i)
            }
          }, r)
        }

        function xk(e) {
          var t = e.prefixCls,
            n = e.marks,
            r = e.onClick,
            i = "".concat(t, "-mark");
          return n.length ? ue("div", {
            className: i
          }, n.map((function(e) {
            var t = e.value,
              n = e.style,
              o = e.label;
            return ue(wk, {
              key: t,
              prefixCls: i,
              style: n,
              value: t,
              onClick: r
            }, o)
          }))) : null
        }

        function kk(e) {
          var t = e.prefixCls,
            n = e.value,
            r = e.style,
            i = e.activeStyle,
            o = nt(lk),
            a = o.min,
            s = o.max,
            l = o.direction,
            c = o.included,
            u = o.includedStart,
            h = o.includedEnd,
            p = "".concat(t, "-dot"),
            d = c && u <= n && n <= h,
            f = mh(mh({}, uk(l, n, a, s)), "function" == typeof r ? r(n) : r);
          return d && (f = mh(mh({}, f), "function" == typeof i ? i(n) : i)), ue("span", {
            className: ul(p, sh({}, "".concat(p, "-active"), d)),
            style: f
          })
        }

        function Ck(e) {
          var t = e.prefixCls,
            n = e.marks,
            r = e.dots,
            i = e.style,
            o = e.activeStyle,
            a = nt(lk),
            s = a.min,
            l = a.max,
            c = a.step,
            u = et((function() {
              var e = new Set;
              if (n.forEach((function(t) {
                  e.add(t.value)
                })), r && null !== c)
                for (var t = s; t <= l;) e.add(t), t += c;
              return Array.from(e)
            }), [s, l, c, r, n]);
          return ue("div", {
            className: "".concat(t, "-step")
          }, u.map((function(e) {
            return ue(kk, {
              prefixCls: t,
              key: e,
              value: e,
              style: i,
              activeStyle: o
            })
          })))
        }
        var Sk = mt((function(e, t) {
            var n, r = e.prefixCls,
              i = void 0 === r ? "rc-slider" : r,
              o = e.className,
              a = e.style,
              s = e.disabled,
              l = void 0 !== s && s,
              c = e.keyboard,
              u = void 0 === c || c,
              h = e.autoFocus,
              p = e.onFocus,
              d = e.onBlur,
              f = e.min,
              g = void 0 === f ? 0 : f,
              m = e.max,
              v = void 0 === m ? 100 : m,
              _ = e.step,
              b = void 0 === _ ? 1 : _,
              y = e.value,
              w = e.defaultValue,
              x = e.range,
              k = e.count,
              C = e.onChange,
              S = e.onBeforeChange,
              E = e.onAfterChange,
              T = e.allowCross,
              O = void 0 === T || T,
              A = e.pushable,
              P = void 0 !== A && A,
              M = e.draggableTrack,
              D = e.reverse,
              I = e.vertical,
              R = e.included,
              j = void 0 === R || R,
              N = e.startPoint,
              L = e.trackStyle,
              F = e.handleStyle,
              B = e.railStyle,
              z = e.dotStyle,
              H = e.activeDotStyle,
              U = e.marks,
              W = e.dots,
              V = e.handleRender,
              X = e.tabIndex,
              G = void 0 === X ? 0 : X,
              Y = e.ariaLabelForHandle,
              q = e.ariaLabelledByForHandle,
              K = e.ariaValueTextFormatterForHandle,
              Z = Je(),
              $ = Je(),
              J = et((function() {
                return I ? D ? "ttb" : "btt" : D ? "rtl" : "ltr"
              }), [D, I]),
              Q = et((function() {
                return isFinite(g) ? g : 0
              }), [g]),
              ee = et((function() {
                return isFinite(v) ? v : 100
              }), [v]),
              te = et((function() {
                return null !== b && b <= 0 ? 1 : b
              }), [b]),
              ne = et((function() {
                return !0 === P ? te : P >= 0 && P
              }), [P, te]),
              re = et((function() {
                return Object.keys(U || {}).map((function(e) {
                  var t = U[e],
                    n = {
                      value: Number(e)
                    };
                  return t && "object" === $u(t) && !Xt(t) && ("label" in t || "style" in t) ? (n.style = t.style, n.label = t.label) : n.label = t, n
                })).filter((function(e) {
                  var t = e.label;
                  return t || "number" == typeof t
                })).sort((function(e, t) {
                  return e.value - t.value
                }))
              }), [U]),
              ie = function(e, t, n, r, i, o) {
                var a = tt((function(n) {
                    var r = isFinite(n) ? n : e;
                    return r = Math.min(t, n), Math.max(e, r)
                  }), [e, t]),
                  s = tt((function(r) {
                    if (null !== n) {
                      var i = e + Math.round((a(r) - e) / n) * n,
                        o = function(e) {
                          return (String(e).split(".")[1] || "").length
                        },
                        s = Math.max(o(n), o(t), o(e)),
                        l = Number(i.toFixed(s));
                      return e <= l && l <= t ? l : null
                    }
                    return null
                  }), [n, e, t, a]),
                  l = tt((function(i) {
                    var o = a(i),
                      l = r.map((function(e) {
                        return e.value
                      }));
                    null !== n && l.push(s(i)), l.push(e, t);
                    var c = l[0],
                      u = t - e;
                    return l.forEach((function(e) {
                      var t = Math.abs(o - e);
                      t <= u && (c = e, u = t)
                    })), c
                  }), [e, t, r, n, a, s]),
                  c = function i(o, a, l) {
                    var c = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : "unit";
                    if ("number" == typeof a) {
                      var u, h = o[l],
                        p = h + a,
                        d = [];
                      r.forEach((function(e) {
                        d.push(e.value)
                      })), d.push(e, t), d.push(s(h));
                      var f = a > 0 ? 1 : -1;
                      "unit" === c ? d.push(s(h + f * n)) : d.push(s(p)), d = d.filter((function(e) {
                        return null !== e
                      })).filter((function(e) {
                        return a < 0 ? e <= h : e >= h
                      })), "unit" === c && (d = d.filter((function(e) {
                        return e !== h
                      })));
                      var g = "unit" === c ? h : p;
                      u = d[0];
                      var m = Math.abs(u - g);
                      if (d.forEach((function(e) {
                          var t = Math.abs(e - g);
                          t < m && (u = e, m = t)
                        })), void 0 === u) return a < 0 ? e : t;
                      if ("dist" === c) return u;
                      if (Math.abs(a) > 1) {
                        var v = fh(o);
                        return v[l] = u, i(v, a - f, l, c)
                      }
                      return u
                    }
                    return "min" === a ? e : "max" === a ? t : void 0
                  },
                  u = function(e, t, n) {
                    var r = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : "unit",
                      i = e[n],
                      o = c(e, t, n, r);
                    return {
                      value: o,
                      changed: o !== i
                    }
                  },
                  h = function(e) {
                    return null === o && 0 === e || "number" == typeof o && e < o
                  };
                return [l, function(e, t, n) {
                  var r = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : "unit",
                    a = e.map(l),
                    s = a[n],
                    p = c(a, t, n, r);
                  if (a[n] = p, !1 === i) {
                    var d = o || 0;
                    n > 0 && a[n - 1] !== s && (a[n] = Math.max(a[n], a[n - 1] + d)), n < a.length - 1 && a[n + 1] !== s && (a[n] = Math.min(a[n], a[n + 1] - d))
                  } else if ("number" == typeof o || null === o) {
                    for (var f = n + 1; f < a.length; f += 1)
                      for (var g = !0; h(a[f] - a[f - 1]) && g;) {
                        var m = u(a, 1, f);
                        a[f] = m.value, g = m.changed
                      }
                    for (var v = n; v > 0; v -= 1)
                      for (var _ = !0; h(a[v] - a[v - 1]) && _;) {
                        var b = u(a, -1, v - 1);
                        a[v - 1] = b.value, _ = b.changed
                      }
                    for (var y = a.length - 1; y > 0; y -= 1)
                      for (var w = !0; h(a[y] - a[y - 1]) && w;) {
                        var x = u(a, -1, y - 1);
                        a[y - 1] = x.value, w = x.changed
                      }
                    for (var k = 0; k < a.length - 1; k += 1)
                      for (var C = !0; h(a[k + 1] - a[k]) && C;) {
                        var S = u(a, 1, k + 1);
                        a[k + 1] = S.value, C = S.changed
                      }
                  }
                  return {
                    value: a[n],
                    values: a
                  }
                }]
              }(Q, ee, te, re, O, ne),
              oe = ap(ie, 2),
              ae = oe[0],
              se = oe[1],
              le = ap(X_(w, {
                value: y
              }), 2),
              ce = le[0],
              he = le[1],
              pe = et((function() {
                var e = null == ce ? [] : Array.isArray(ce) ? ce : [ce],
                  t = ap(e, 1)[0],
                  n = null === ce ? [] : [void 0 === t ? Q : t];
                if (x) {
                  if (n = fh(e), k || void 0 === ce) {
                    var r = k >= 0 ? k + 1 : 2;
                    for (n = n.slice(0, r); n.length < r;) {
                      var i;
                      n.push(null !== (i = n[n.length - 1]) && void 0 !== i ? i : Q)
                    }
                  }
                  n.sort((function(e, t) {
                    return e - t
                  }))
                }
                return n.forEach((function(e, t) {
                  n[t] = ae(e)
                })), n
              }), [ce, x, Q, k, ae]),
              de = Je(pe);
            de.current = pe;
            var fe = function(e) {
                return x ? e : e[0]
              },
              ge = function(e) {
                var t = fh(e).sort((function(e, t) {
                  return e - t
                }));
                C && !uw(t, de.current, !0) && C(fe(t)), he(t)
              },
              me = function(e) {
                if (!l) {
                  var t = 0,
                    n = ee - Q;
                  pe.forEach((function(r, i) {
                    var o = Math.abs(e - r);
                    o <= n && (n = o, t = i)
                  }));
                  var r = fh(pe);
                  r[t] = e, x && !pe.length && void 0 === k && r.push(e), null == S || S(fe(r)), ge(r), null == E || E(fe(r))
                }
              },
              ve = ap(qe(null), 2),
              _e = ve[0],
              be = ve[1];
            Ze((function() {
              if (null !== _e) {
                var e = pe.indexOf(_e);
                e >= 0 && Z.current.focus(e)
              }
              be(null)
            }), [_e]);
            var ye = et((function() {
                return (!M || null !== te) && M
              }), [M, te]),
              we = function(e, t, n, r, i, o, a, s, l) {
                var c = ap(qe(null), 2),
                  u = c[0],
                  h = c[1],
                  p = ap(qe(-1), 2),
                  d = p[0],
                  f = p[1],
                  g = ap(qe(n), 2),
                  m = g[0],
                  v = g[1],
                  _ = ap(qe(n), 2),
                  b = _[0],
                  y = _[1],
                  w = Je(null),
                  x = Je(null);
                Ze((function() {
                  -1 === d && v(n)
                }), [n, d]), Ze((function() {
                  return function() {
                    document.removeEventListener("mousemove", w.current), document.removeEventListener("mouseup", x.current), document.removeEventListener("touchmove", w.current), document.removeEventListener("touchend", x.current)
                  }
                }), []);
                var k = function(e, t) {
                    m.some((function(t, n) {
                      return t !== e[n]
                    })) && (void 0 !== t && h(t), v(e), a(e))
                  },
                  C = function(e, t) {
                    if (-1 === e) {
                      var n = b[0],
                        a = b[b.length - 1],
                        s = r - n,
                        c = i - a,
                        u = t * (i - r);
                      u = Math.max(u, s), u = Math.min(u, c);
                      var h = o(n + u);
                      u = h - n;
                      var p = b.map((function(e) {
                        return e + u
                      }));
                      k(p)
                    } else {
                      var d = (i - r) * t,
                        f = fh(m);
                      f[e] = b[e];
                      var g = l(f, d, e, "dist");
                      k(g.values, g.value)
                    }
                  },
                  S = Je(C);
                S.current = C;
                var E = et((function() {
                  var e = fh(n).sort((function(e, t) {
                      return e - t
                    })),
                    t = fh(m).sort((function(e, t) {
                      return e - t
                    }));
                  return e.every((function(e, n) {
                    return e === t[n]
                  })) ? m : n
                }), [n, m]);
                return [d, u, E, function(r, i) {
                  r.stopPropagation();
                  var o = n[i];
                  f(i), h(o), y(n);
                  var a = _k(r),
                    l = a.pageX,
                    c = a.pageY,
                    u = function(n) {
                      n.preventDefault();
                      var r, o = _k(n),
                        a = o.pageX,
                        s = o.pageY,
                        u = a - l,
                        h = s - c,
                        p = e.current.getBoundingClientRect(),
                        d = p.width,
                        f = p.height;
                      switch (t) {
                        case "btt":
                          r = -h / f;
                          break;
                        case "ttb":
                          r = h / f;
                          break;
                        case "rtl":
                          r = -u / d;
                          break;
                        default:
                          r = u / d
                      }
                      S.current(i, r)
                    },
                    p = function e(t) {
                      t.preventDefault(), document.removeEventListener("mouseup", e), document.removeEventListener("mousemove", u), document.removeEventListener("touchend", e), document.removeEventListener("touchmove", u), w.current =
                        null, x.current = null, f(-1), s()
                    };
                  document.addEventListener("mouseup", p), document.addEventListener("mousemove", u), document.addEventListener("touchend", p), document.addEventListener("touchmove", u), w.current = u, x.current = p
                }]
              }($, J, pe, Q, ee, ae, ge, (function() {
                null == E || E(fe(de.current))
              }), se),
              xe = ap(we, 4),
              ke = xe[0],
              Ce = xe[1],
              Se = xe[2],
              Ee = xe[3],
              Te = function(e, t) {
                Ee(e, t), null == S || S(fe(de.current))
              },
              Oe = -1 !== ke;
            Ze((function() {
              if (!Oe) {
                var e = pe.lastIndexOf(Ce);
                Z.current.focus(e)
              }
            }), [Oe]);
            var Ae = et((function() {
                return fh(Se).sort((function(e, t) {
                  return e - t
                }))
              }), [Se]),
              Pe = ap(et((function() {
                return x ? [Ae[0], Ae[Ae.length - 1]] : [Q, Ae[0]]
              }), [Ae, x, Q]), 2),
              Me = Pe[0],
              De = Pe[1];
            Qe(t, (function() {
              return {
                focus: function() {
                  Z.current.focus(0)
                },
                blur: function() {
                  var e = document.activeElement;
                  $.current.contains(e) && (null == e || e.blur())
                }
              }
            })), Ze((function() {
              h && Z.current.focus(0)
            }), []);
            var Ie = et((function() {
              return {
                min: Q,
                max: ee,
                direction: J,
                disabled: l,
                keyboard: u,
                step: te,
                included: j,
                includedStart: Me,
                includedEnd: De,
                range: x,
                tabIndex: G,
                ariaLabelForHandle: Y,
                ariaLabelledByForHandle: q,
                ariaValueTextFormatterForHandle: K
              }
            }), [Q, ee, J, l, u, te, j, Me, De, x, G, Y, q, K]);
            return ue(lk.Provider, {
              value: Ie
            }, ue("div", {
              ref: $,
              className: ul(i, o, (n = {}, sh(n, "".concat(i, "-disabled"), l), sh(n, "".concat(i, "-vertical"), I), sh(n, "".concat(i, "-horizontal"), !I), sh(n, "".concat(i, "-with-marks"), re.length), n)),
              style: a,
              onMouseDown: function(e) {
                e.preventDefault();
                var t, n = $.current.getBoundingClientRect(),
                  r = n.width,
                  i = n.height,
                  o = n.left,
                  a = n.top,
                  s = n.bottom,
                  l = n.right,
                  c = e.clientX,
                  u = e.clientY;
                switch (J) {
                  case "btt":
                    t = (s - u) / i;
                    break;
                  case "ttb":
                    t = (u - a) / i;
                    break;
                  case "rtl":
                    t = (l - c) / r;
                    break;
                  default:
                    t = (c - o) / r
                }
                me(ae(Q + t * (ee - Q)))
              }
            }, ue("div", {
              className: "".concat(i, "-rail"),
              style: B
            }), ue(yk, {
              prefixCls: i,
              style: L,
              values: Ae,
              startPoint: N,
              onStartMove: ye ? Te : null
            }), ue(Ck, {
              prefixCls: i,
              marks: re,
              dots: W,
              style: z,
              activeStyle: H
            }), ue(vk, {
              ref: Z,
              prefixCls: i,
              style: F,
              values: Se,
              draggingIndex: ke,
              onStartMove: Te,
              onOffsetChange: function(e, t) {
                if (!l) {
                  var n = se(pe, e, t);
                  null == S || S(fe(pe)), ge(n.values), null == E || E(fe(n.values)), be(n.value)
                }
              },
              onFocus: p,
              onBlur: d,
              handleRender: V
            }), ue(xk, {
              prefixCls: i,
              marks: re,
              onClick: me
            })))
          })),
          Ek = Sk,
          Tk = "RotateOperator-module_operate_rotate__DbNrD",
          Ok = "RotateOperator-module_slider__RyqmW";
        c(
        ".RotateOperator-module_operate_rotate__DbNrD{display:flex;height:118px;padding:32px 16px 28px}.RotateOperator-module_slider__RyqmW{margin:32px 33px 0 22px}.RotateOperator-module_slider__RyqmW .rc-slider-handle{box-shadow:0 0 0 5px #fff!important;height:20px;margin-top:-8px;opacity:1;position:relative;width:20px;z-index:10}.RotateOperator-module_slider__RyqmW .rc-slider-handle:after{background:#fff;border-radius:4px;box-shadow:0 2px 10px rgba(34,34,34,.06);color:#292929;content:attr(aria-valuenow);display:none;font-size:16px;font-weight:400;left:50%;line-height:120%;padding:4px 10px;position:absolute;top:-37px;transform:translateX(-50%)}.RotateOperator-module_slider__RyqmW .rc-slider-handle-dragging,.RotateOperator-module_slider__RyqmW .rc-slider-handle:active{box-shadow:0 0 0 5px #fff!important}.RotateOperator-module_slider__RyqmW .rc-slider-handle:active:after{display:block!important}.RotateOperator-module_slider__RyqmW .rc-slider-mark{top:-34px;z-index:5}.RotateOperator-module_slider__RyqmW .rc-slider-mark-text{color:#333;font-size:15px;font-weight:500;line-height:120%}.RotateOperator-module_slider__RyqmW .rc-slider-step{background:hsla(0,0%,90%,.8)}.RotateOperator-module_slider__RyqmW .rc-slider-dot:nth-child(3){background-color:#333!important;z-index:3}@media screen and (max-width:959px){.RotateOperator-module_slider__RyqmW .rc-slider-mark-text{font-size:14px}.RotateOperator-module_operate_rotate__DbNrD{height:108px;padding:32px 2px 20px}.RotateOperator-module_slider__RyqmW .rc-slider-mark{top:-38px;z-index:5}.RotateOperator-module_slider__RyqmW{margin:32px 22px 0}}");
        c(
        ".rc-slider{border-radius:6px;height:14px;padding:5px 0;position:relative;touch-action:none;width:100%}.rc-slider,.rc-slider *{-webkit-tap-highlight-color:rgba(0,0,0,0);box-sizing:border-box}.rc-slider-rail{background-color:#e9e9e9;width:100%}.rc-slider-rail,.rc-slider-track{border-radius:6px;height:4px;position:absolute}.rc-slider-track{background-color:#abe2fb}.rc-slider-handle{background-color:#fff;border:2px solid #96dbfa;border-radius:50%;cursor:pointer;cursor:-webkit-grab;cursor:grab;height:14px;margin-top:-5px;opacity:.8;position:absolute;touch-action:pan-x;width:14px}.rc-slider-handle-dragging.rc-slider-handle-dragging.rc-slider-handle-dragging{border-color:#57c5f7;box-shadow:0 0 0 5px #96dbfa}.rc-slider-handle:focus{box-shadow:none;outline:none}.rc-slider-handle.focus-visible{border-color:#2db7f5;box-shadow:0 0 0 3px #96dbfa}.rc-slider-handle:focus-visible{border-color:#2db7f5;box-shadow:0 0 0 3px #96dbfa}.rc-slider-handle-click-focused:focus{border-color:#96dbfa;box-shadow:unset}.rc-slider-handle:hover{border-color:#57c5f7}.rc-slider-handle:active{border-color:#57c5f7;box-shadow:0 0 5px #57c5f7;cursor:-webkit-grabbing;cursor:grabbing}.rc-slider-mark{font-size:12px;left:0;position:absolute;top:18px;width:100%}.rc-slider-mark-text{color:#999;cursor:pointer;display:inline-block;position:absolute;text-align:center;vertical-align:middle}.rc-slider-mark-text-active{color:#666}.rc-slider-step{background:transparent;height:4px;pointer-events:none;position:absolute;width:100%}.rc-slider-dot{background-color:#fff;border:2px solid #e9e9e9;border-radius:50%;bottom:-2px;cursor:pointer;height:8px;position:absolute;vertical-align:middle;width:8px}.rc-slider-dot-active{border-color:#96dbfa}.rc-slider-dot-reverse{margin-right:-4px}.rc-slider-disabled{background-color:#e9e9e9}.rc-slider-disabled .rc-slider-track{background-color:#ccc}.rc-slider-disabled .rc-slider-dot,.rc-slider-disabled .rc-slider-handle{background-color:#fff;border-color:#ccc;box-shadow:none;cursor:not-allowed}.rc-slider-disabled .rc-slider-dot,.rc-slider-disabled .rc-slider-mark-text{cursor:not-allowed!important}.rc-slider-vertical{height:100%;padding:0 5px;width:14px}.rc-slider-vertical .rc-slider-rail{height:100%;width:4px}.rc-slider-vertical .rc-slider-track{bottom:0;left:5px;width:4px}.rc-slider-vertical .rc-slider-handle{margin-left:-5px;margin-top:0;touch-action:pan-y}.rc-slider-vertical .rc-slider-mark{height:100%;left:18px;top:0}.rc-slider-vertical .rc-slider-step{height:100%;width:4px}.rc-slider-vertical .rc-slider-dot{margin-left:-2px}.rc-slider-tooltip-zoom-down-appear,.rc-slider-tooltip-zoom-down-enter{animation-duration:.3s;animation-fill-mode:both;animation-play-state:paused;display:block!important}.rc-slider-tooltip-zoom-down-leave{animation-duration:.3s;animation-fill-mode:both;animation-play-state:paused;display:block!important}.rc-slider-tooltip-zoom-down-appear.rc-slider-tooltip-zoom-down-appear-active,.rc-slider-tooltip-zoom-down-enter.rc-slider-tooltip-zoom-down-enter-active{animation-name:rcSliderTooltipZoomDownIn;animation-play-state:running}.rc-slider-tooltip-zoom-down-leave.rc-slider-tooltip-zoom-down-leave-active{animation-name:rcSliderTooltipZoomDownOut;animation-play-state:running}.rc-slider-tooltip-zoom-down-appear,.rc-slider-tooltip-zoom-down-enter{animation-timing-function:cubic-bezier(.23,1,.32,1);transform:scale(0)}.rc-slider-tooltip-zoom-down-leave{animation-timing-function:cubic-bezier(.755,.05,.855,.06)}@keyframes rcSliderTooltipZoomDownIn{0%{opacity:0;transform:scale(0);transform-origin:50% 100%}to{transform:scale(1);transform-origin:50% 100%}}@keyframes rcSliderTooltipZoomDownOut{0%{transform:scale(1);transform-origin:50% 100%}to{opacity:0;transform:scale(0);transform-origin:50% 100%}}.rc-slider-tooltip{left:-9999px;position:absolute;top:-9999px;visibility:visible}.rc-slider-tooltip,.rc-slider-tooltip *{-webkit-tap-highlight-color:rgba(0,0,0,0);box-sizing:border-box}.rc-slider-tooltip-hidden{display:none}.rc-slider-tooltip-placement-top{padding:4px 0 8px}.rc-slider-tooltip-inner{background-color:#6c6c6c;border-radius:6px;box-shadow:0 0 4px #d9d9d9;color:#fff;font-size:12px;height:24px;line-height:1;min-width:24px;padding:6px 2px;text-align:center;text-decoration:none}.rc-slider-tooltip-arrow{border-color:transparent;border-style:solid;height:0;position:absolute;width:0}.rc-slider-tooltip-placement-top .rc-slider-tooltip-arrow{border-top-color:#6c6c6c;border-width:4px 4px 0;bottom:4px;left:50%;margin-left:-4px}");
        var Ak, Pk, Mk, Dk, Ik, Rk, jk, Nk, Lk = {
            "-180": -180,
            "-90": -90,
            0: 0,
            90: 90,
            180: 180
          },
          Fk = e => {
            var {
              onChange: t,
              defaultValue: n
            } = e, [r, i] = qe(0), o = Je(null);
            Ze((() => {
              i(n)
            }), [n]);
            return gl("div", {
              className: Tk,
              children: gl(Ek, {
                ref: o,
                className: Ok,
                value: r,
                min: -180,
                max: 180,
                dotStyle: e => e >= r && r <= 0 && e < 0 || e < r && r > 0 && e > 0 ? {
                  borderColor: "#000"
                } : {
                  background: "#D4D4D4",
                  border: "none"
                },
                defaultValue: n,
                handleStyle: {
                  backgroundColor: "#fff",
                  borderColor: "#333"
                },
                marks: Lk,
                trackStyle: {
                  background: "#333333",
                  zIndex: 2
                },
                startPoint: 0,
                onChange: e => {
                  i(e), t(e)
                }
              })
            })
          },
          Bk = {
            exports: {}
          },
          zk = {},
          Hk = {},
          Uk = {},
          Wk = {},
          Vk = [],
          Xk = /acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i;

        function Gk(e, t) {
          for (var n in t) e[n] = t[n];
          return e
        }

        function Yk(e) {
          var t = e.parentNode;
          t && t.removeChild(e)
        }

        function qk(e, t, n) {
          var r, i, o, a = {};
          for (o in t) "key" == o ? r = t[o] : "ref" == o ? i = t[o] : a[o] = t[o];
          if (arguments.length > 2 && (a.children = arguments.length > 3 ? Ak.call(arguments, 2) : n), "function" == typeof e && null != e.defaultProps)
            for (o in e.defaultProps) void 0 === a[o] && (a[o] = e.defaultProps[o]);
          return Kk(e, a, r, i, null)
        }

        function Kk(e, t, n, r, i) {
          var o = {
            type: e,
            props: t,
            key: n,
            ref: r,
            __k: null,
            __: null,
            __b: 0,
            __e: null,
            __d: void 0,
            __c: null,
            __h: null,
            constructor: void 0,
            __v: null == i ? ++Mk : i
          };
          return null == i && null != Pk.vnode && Pk.vnode(o), o
        }

        function Zk(e) {
          return e.children
        }

        function $k(e, t) {
          this.props = e, this.context = t
        }

        function Jk(e, t) {
          if (null == t) return e.__ ? Jk(e.__, e.__.__k.indexOf(e) + 1) : null;
          for (var n; t < e.__k.length; t++)
            if (null != (n = e.__k[t]) && null != n.__e) return n.__e;
          return "function" == typeof e.type ? Jk(e) : null
        }

        function Qk(e) {
          var t, n;
          if (null != (e = e.__) && null != e.__c) {
            for (e.__e = e.__c.base = null, t = 0; t < e.__k.length; t++)
              if (null != (n = e.__k[t]) && null != n.__e) {
                e.__e = e.__c.base = n.__e;
                break
              } return Qk(e)
          }
        }

        function eC(e) {
          (!e.__d && (e.__d = !0) && Ik.push(e) && !tC.__r++ || jk !== Pk.debounceRendering) && ((jk = Pk.debounceRendering) || Rk)(tC)
        }

        function tC() {
          for (var e; tC.__r = Ik.length;) e = Ik.sort((function(e, t) {
            return e.__v.__b - t.__v.__b
          })), Ik = [], e.some((function(e) {
            var t, n, r, i, o, a;
            e.__d && (o = (i = (t = e).__v).__e, (a = t.__P) && (n = [], (r = Gk({}, i)).__v = i.__v + 1, cC(a, i, r, t.__n, void 0 !== a.ownerSVGElement, null != i.__h ? [o] : null, n, null == o ? Jk(i) : o, i.__h), uC(n, i), i.__e != o &&
              Qk(i)))
          }))
        }

        function nC(e, t, n, r, i, o, a, s, l, c) {
          var u, h, p, d, f, g, m, v = r && r.__k || Vk,
            _ = v.length;
          for (n.__k = [], u = 0; u < t.length; u++)
            if (null != (d = n.__k[u] = null == (d = t[u]) || "boolean" == typeof d ? null : "string" == typeof d || "number" == typeof d || "bigint" == typeof d ? Kk(null, d, null, null, d) : Array.isArray(d) ? Kk(Zk, {
                children: d
              }, null, null, null) : d.__b > 0 ? Kk(d.type, d.props, d.key, null, d.__v) : d)) {
              if (d.__ = n, d.__b = n.__b + 1, null === (p = v[u]) || p && d.key == p.key && d.type === p.type) v[u] = void 0;
              else
                for (h = 0; h < _; h++) {
                  if ((p = v[h]) && d.key == p.key && d.type === p.type) {
                    v[h] = void 0;
                    break
                  }
                  p = null
                }
              cC(e, d, p = p || Wk, i, o, a, s, l, c), f = d.__e, (h = d.ref) && p.ref != h && (m || (m = []), p.ref && m.push(p.ref, null, d), m.push(h, d.__c || f, d)), null != f ? (null == g && (g = f), "function" == typeof d.type && d.__k ===
                p.__k ? d.__d = l = rC(d, l, e) : l = iC(e, d, p, v, f, l), "function" == typeof n.type && (n.__d = l)) : l && p.__e == l && l.parentNode != e && (l = Jk(p))
            } for (n.__e = g, u = _; u--;) null != v[u] && ("function" == typeof n.type && null != v[u].__e && v[u].__e == n.__d && (n.__d = Jk(r, u + 1)), dC(v[u], v[u]));
          if (m)
            for (u = 0; u < m.length; u++) pC(m[u], m[++u], m[++u])
        }

        function rC(e, t, n) {
          for (var r, i = e.__k, o = 0; i && o < i.length; o++)(r = i[o]) && (r.__ = e, t = "function" == typeof r.type ? rC(r, t, n) : iC(n, r, r, i, r.__e, t));
          return t
        }

        function iC(e, t, n, r, i, o) {
          var a, s, l;
          if (void 0 !== t.__d) a = t.__d, t.__d = void 0;
          else if (null == n || i != o || null == i.parentNode) e: if (null == o || o.parentNode !== e) e.appendChild(i), a = null;
            else {
              for (s = o, l = 0;
                (s = s.nextSibling) && l < r.length; l += 2)
                if (s == i) break e;
              e.insertBefore(i, o), a = o
            } return void 0 !== a ? a : i.nextSibling
        }

        function oC(e, t, n) {
          "-" === t[0] ? e.setProperty(t, n) : e[t] = null == n ? "" : "number" != typeof n || Xk.test(t) ? n : n + "px"
        }

        function aC(e, t, n, r, i) {
          var o;
          e: if ("style" === t)
            if ("string" == typeof n) e.style.cssText = n;
            else {
              if ("string" == typeof r && (e.style.cssText = r = ""), r)
                for (t in r) n && t in n || oC(e.style, t, "");
              if (n)
                for (t in n) r && n[t] === r[t] || oC(e.style, t, n[t])
            }
          else if ("o" === t[0] && "n" === t[1]) o = t !== (t = t.replace(/Capture$/, "")), t = t.toLowerCase() in e ? t.toLowerCase().slice(2) : t.slice(2), e.l || (e.l = {}), e.l[t + o] = n, n ? r || e.addEventListener(t, o ? lC : sC, o) : e
            .removeEventListener(t, o ? lC : sC, o);
          else if ("dangerouslySetInnerHTML" !== t) {
            if (i) t = t.replace(/xlink(H|:h)/, "h").replace(/sName$/, "s");
            else if ("href" !== t && "list" !== t && "form" !== t && "tabIndex" !== t && "download" !== t && t in e) try {
              e[t] = null == n ? "" : n;
              break e
            } catch (e) {}
            "function" == typeof n || (null != n && (!1 !== n || "a" === t[0] && "r" === t[1]) ? e.setAttribute(t, n) : e.removeAttribute(t))
          }
        }

        function sC(e) {
          this.l[e.type + !1](Pk.event ? Pk.event(e) : e)
        }

        function lC(e) {
          this.l[e.type + !0](Pk.event ? Pk.event(e) : e)
        }

        function cC(e, t, n, r, i, o, a, s, l) {
          var c, u, h, p, d, f, g, m, v, _, b, y, w, x = t.type;
          if (void 0 !== t.constructor) return null;
          null != n.__h && (l = n.__h, s = t.__e = n.__e, t.__h = null, o = [s]), (c = Pk.__b) && c(t);
          try {
            e: if ("function" == typeof x) {
              if (m = t.props, v = (c = x.contextType) && r[c.__c], _ = c ? v ? v.props.value : c.__ : r, n.__c ? g = (u = t.__c = n.__c).__ = u.__E : ("prototype" in x && x.prototype.render ? t.__c = u = new x(m, _) : (t.__c = u = new $k(m,
                  _), u.constructor = x, u.render = fC), v && v.sub(u), u.props = m, u.state || (u.state = {}), u.context = _, u.__n = r, h = u.__d = !0, u.__h = []), null == u.__s && (u.__s = u.state), null != x.getDerivedStateFromProps && (u
                  .__s == u.state && (u.__s = Gk({}, u.__s)), Gk(u.__s, x.getDerivedStateFromProps(m, u.__s))), p = u.props, d = u.state, h) null == x.getDerivedStateFromProps && null != u.componentWillMount && u.componentWillMount(), null != u
                .componentDidMount && u.__h.push(u.componentDidMount);
              else {
                if (null == x.getDerivedStateFromProps && m !== p && null != u.componentWillReceiveProps && u.componentWillReceiveProps(m, _), !u.__e && null != u.shouldComponentUpdate && !1 === u.shouldComponentUpdate(m, u.__s, _) || t.__v ===
                  n.__v) {
                  u.props = m, u.state = u.__s, t.__v !== n.__v && (u.__d = !1), u.__v = t, t.__e = n.__e, t.__k = n.__k, t.__k.forEach((function(e) {
                    e && (e.__ = t)
                  })), u.__h.length && a.push(u);
                  break e
                }
                null != u.componentWillUpdate && u.componentWillUpdate(m, u.__s, _), null != u.componentDidUpdate && u.__h.push((function() {
                  u.componentDidUpdate(p, d, f)
                }))
              }
              if (u.context = _, u.props = m, u.__v = t, u.__P = e, b = Pk.__r, y = 0, "prototype" in x && x.prototype.render) u.state = u.__s, u.__d = !1, b && b(t), c = u.render(u.props, u.state, u.context);
              else
                do {
                  u.__d = !1, b && b(t), c = u.render(u.props, u.state, u.context), u.state = u.__s
                } while (u.__d && ++y < 25);
              u.state = u.__s, null != u.getChildContext && (r = Gk(Gk({}, r), u.getChildContext())), h || null == u.getSnapshotBeforeUpdate || (f = u.getSnapshotBeforeUpdate(p, d)), w = null != c && c.type === Zk && null == c.key ? c.props
                .children : c, nC(e, Array.isArray(w) ? w : [w], t, n, r, i, o, a, s, l), u.base = t.__e, t.__h = null, u.__h.length && a.push(u), g && (u.__E = u.__ = null), u.__e = !1
            } else null == o && t.__v === n.__v ? (t.__k = n.__k, t.__e = n.__e) : t.__e = hC(n.__e, t, n, r, i, o, a, l);
            (c = Pk.diffed) && c(t)
          }
          catch (e) {
            t.__v = null, (l || null != o) && (t.__e = s, t.__h = !!l, o[o.indexOf(s)] = null), Pk.__e(e, t, n)
          }
        }

        function uC(e, t) {
          Pk.__c && Pk.__c(t, e), e.some((function(t) {
            try {
              e = t.__h, t.__h = [], e.some((function(e) {
                e.call(t)
              }))
            } catch (e) {
              Pk.__e(e, t.__v)
            }
          }))
        }

        function hC(e, t, n, r, i, o, a, s) {
          var l, c, u, h = n.props,
            p = t.props,
            d = t.type,
            f = 0;
          if ("svg" === d && (i = !0), null != o)
            for (; f < o.length; f++)
              if ((l = o[f]) && "setAttribute" in l == !!d && (d ? l.localName === d : 3 === l.nodeType)) {
                e = l, o[f] = null;
                break
              } if (null == e) {
            if (null === d) return document.createTextNode(p);
            e = i ? document.createElementNS("http://www.w3.org/2000/svg", d) : document.createElement(d, p.is && p), o = null, s = !1
          }
          if (null === d) h === p || s && e.data === p || (e.data = p);
          else {
            if (o = o && Ak.call(e.childNodes), c = (h = n.props || Wk).dangerouslySetInnerHTML, u = p.dangerouslySetInnerHTML, !s) {
              if (null != o)
                for (h = {}, f = 0; f < e.attributes.length; f++) h[e.attributes[f].name] = e.attributes[f].value;
              (u || c) && (u && (c && u.__html == c.__html || u.__html === e.innerHTML) || (e.innerHTML = u && u.__html || ""))
            }
            if (function(e, t, n, r, i) {
                var o;
                for (o in n) "children" === o || "key" === o || o in t || aC(e, o, null, n[o], r);
                for (o in t) i && "function" != typeof t[o] || "children" === o || "key" === o || "value" === o || "checked" === o || n[o] === t[o] || aC(e, o, t[o], n[o], r)
              }(e, p, h, i, s), u) t.__k = [];
            else if (f = t.props.children, nC(e, Array.isArray(f) ? f : [f], t, n, r, i && "foreignObject" !== d, o, a, o ? o[0] : n.__k && Jk(n, 0), s), null != o)
              for (f = o.length; f--;) null != o[f] && Yk(o[f]);
            s || ("value" in p && void 0 !== (f = p.value) && (f !== e.value || "progress" === d && !f || "option" === d && f !== h.value) && aC(e, "value", f, h.value, !1), "checked" in p && void 0 !== (f = p.checked) && f !== e.checked && aC(e,
              "checked", f, h.checked, !1))
          }
          return e
        }

        function pC(e, t, n) {
          try {
            "function" == typeof e ? e(t) : e.current = t
          } catch (e) {
            Pk.__e(e, n)
          }
        }

        function dC(e, t, n) {
          var r, i;
          if (Pk.unmount && Pk.unmount(e), (r = e.ref) && (r.current && r.current !== e.__e || pC(r, null, t)), null != (r = e.__c)) {
            if (r.componentWillUnmount) try {
              r.componentWillUnmount()
            } catch (e) {
              Pk.__e(e, t)
            }
            r.base = r.__P = null
          }
          if (r = e.__k)
            for (i = 0; i < r.length; i++) r[i] && dC(r[i], t, "function" != typeof e.type);
          n || null == e.__e || Yk(e.__e), e.__e = e.__d = void 0
        }

        function fC(e, t, n) {
          return this.constructor(e, n)
        }

        function gC(e, t, n) {
          var r, i, o;
          Pk.__ && Pk.__(e, t), i = (r = "function" == typeof n) ? null : n && n.__k || t.__k, o = [], cC(t, e = (!r && n || t).__k = qk(Zk, null, [e]), i || Wk, Wk, void 0 !== t.ownerSVGElement, !r && n ? [n] : i ? null : t.firstChild ? Ak.call(
            t.childNodes) : null, o, !r && n ? n : i ? i.__e : t.firstChild, r), uC(o, e)
        }
        Ak = Vk.slice, Pk = {
          __e: function(e, t, n, r) {
            for (var i, o, a; t = t.__;)
              if ((i = t.__c) && !i.__) try {
                if ((o = i.constructor) && null != o.getDerivedStateFromError && (i.setState(o.getDerivedStateFromError(e)), a = i.__d), null != i.componentDidCatch && (i.componentDidCatch(e, r || {}), a = i.__d), a) return i.__E = i
              } catch (t) {
                e = t
              }
            throw e
          }
        }, Mk = 0, Dk = function(e) {
          return null != e && void 0 === e.constructor
        }, $k.prototype.setState = function(e, t) {
          var n;
          n = null != this.__s && this.__s !== this.state ? this.__s : this.__s = Gk({}, this.state), "function" == typeof e && (e = e(Gk({}, n), this.props)), e && Gk(n, e), null != e && this.__v && (t && this.__h.push(t), eC(this))
        }, $k.prototype.forceUpdate = function(e) {
          this.__v && (this.__e = !0, e && this.__h.push(e), eC(this))
        }, $k.prototype.render = Zk, Ik = [], Rk = "function" == typeof Promise ? Promise.prototype.then.bind(Promise.resolve()) : setTimeout, tC.__r = 0, Nk = 0, Uk.render = gC, Uk.hydrate = function e(t, n) {
          gC(t, n, e)
        }, Uk.createElement = qk, Uk.h = qk, Uk.Fragment = Zk, Uk.createRef = function() {
          return {
            current: null
          }
        }, Uk.isValidElement = Dk, Uk.Component = $k, Uk.cloneElement = function(e, t, n) {
          var r, i, o, a = Gk({}, e.props);
          for (o in t) "key" == o ? r = t[o] : "ref" == o ? i = t[o] : a[o] = t[o];
          return arguments.length > 2 && (a.children = arguments.length > 3 ? Ak.call(arguments, 2) : n), Kk(e.type, a, r || e.key, i || e.ref, null)
        }, Uk.createContext = function(e, t) {
          var n = {
            __c: t = "__cC" + Nk++,
            __: e,
            Consumer: function(e, t) {
              return e.children(t)
            },
            Provider: function(e) {
              var n, r;
              return this.getChildContext || (n = [], (r = {})[t] = this, this.getChildContext = function() {
                return r
              }, this.shouldComponentUpdate = function(e) {
                this.props.value !== e.value && n.some(eC)
              }, this.sub = function(e) {
                n.push(e);
                var t = e.componentWillUnmount;
                e.componentWillUnmount = function() {
                  n.splice(n.indexOf(e), 1), t && t.call(e)
                }
              }), e.children
            }
          };
          return n.Provider.__ = n.Consumer.contextType = n
        }, Uk.toChildArray = function e(t, n) {
          return n = n || [], null == t || "boolean" == typeof t || (Array.isArray(t) ? t.some((function(t) {
            e(t, n)
          })) : n.push(t)), n
        }, Uk.options = Pk;
        var mC, vC, _C, bC, yC = Uk,
          wC = 0,
          xC = [],
          kC = yC.options.__b,
          CC = yC.options.__r,
          SC = yC.options.diffed,
          EC = yC.options.__c,
          TC = yC.options.unmount;

        function OC(e, t) {
          yC.options.__h && yC.options.__h(vC, e, wC || t), wC = 0;
          var n = vC.__H || (vC.__H = {
            __: [],
            __h: []
          });
          return e >= n.__.length && n.__.push({}), n.__[e]
        }

        function AC(e) {
          return wC = 1, PC(FC, e)
        }

        function PC(e, t, n) {
          var r = OC(mC++, 2);
          return r.t = e, r.__c || (r.__ = [n ? n(t) : FC(void 0, t), function(e) {
            var t = r.t(r.__[0], e);
            r.__[0] !== t && (r.__ = [t, r.__[1]], r.__c.setState({}))
          }], r.__c = vC), r.__
        }

        function MC(e, t) {
          var n = OC(mC++, 4);
          !yC.options.__s && LC(n.__H, t) && (n.__ = e, n.u = t, vC.__h.push(n))
        }

        function DC(e, t) {
          var n = OC(mC++, 7);
          return LC(n.__H, t) ? (n.o = e(), n.u = t, n.__h = e, n.o) : n.__
        }

        function IC() {
          for (var e; e = xC.shift();)
            if (e.__P) try {
              e.__H.__h.forEach(jC), e.__H.__h.forEach(NC), e.__H.__h = []
            } catch (t) {
              e.__H.__h = [], yC.options.__e(t, e.__v)
            }
        }
        yC.options.__b = function(e) {
          vC = null, kC && kC(e)
        }, yC.options.__r = function(e) {
          CC && CC(e), mC = 0;
          var t = (vC = e.__c).__H;
          t && (_C === vC ? (t.__h = [], vC.__h = [], t.__.forEach((function(e) {
            e.o = e.u = void 0
          }))) : (t.__.forEach((function(e) {
            e.u && (e.__H = e.u), e.o && (e.__ = e.o), e.o = e.u = void 0
          })), t.__h.forEach(jC), t.__h.forEach(NC), t.__h = [])), _C = vC
        }, yC.options.diffed = function(e) {
          SC && SC(e);
          var t = e.__c;
          t && t.__H && t.__H.__h.length && (1 !== xC.push(t) && bC === yC.options.requestAnimationFrame || ((bC = yC.options.requestAnimationFrame) || function(e) {
            var t, n = function() {
                clearTimeout(r), RC && cancelAnimationFrame(t), setTimeout(e)
              },
              r = setTimeout(n, 100);
            RC && (t = requestAnimationFrame(n))
          })(IC)), vC = null, _C = null
        }, yC.options.__c = function(e, t) {
          t.some((function(e) {
            try {
              e.__H && e.__H.__.forEach((function(e) {
                e.u && (e.__H = e.u), e.o && (e.__ = e.o), e.o = e.u = void 0
              })), e.__h.forEach(jC), e.__h = e.__h.filter((function(e) {
                return !e.__ || NC(e)
              }))
            } catch (n) {
              t.some((function(e) {
                e.__h && (e.__h = [])
              })), t = [], yC.options.__e(n, e.__v)
            }
          })), EC && EC(e, t)
        }, yC.options.unmount = function(e) {
          TC && TC(e);
          var t, n = e.__c;
          n && n.__H && (n.__H.__.forEach((function(e) {
            try {
              jC(e)
            } catch (e) {
              t = e
            }
          })), t && yC.options.__e(t, n.__v))
        };
        var RC = "function" == typeof requestAnimationFrame;

        function jC(e) {
          var t = vC,
            n = e.__c;
          "function" == typeof n && (e.__c = void 0, n()), vC = t
        }

        function NC(e) {
          var t = vC;
          e.__c = e.__(), vC = t
        }

        function LC(e, t) {
          return !e || e.length !== t.length || t.some((function(t, n) {
            return t !== e[n]
          }))
        }

        function FC(e, t) {
          return "function" == typeof t ? t(e) : t
        }
        Hk.useState = AC, Hk.useReducer = PC, Hk.useEffect = function(e, t) {
            var n = OC(mC++, 3);
            !yC.options.__s && LC(n.__H, t) && (n.__ = e, n.u = t, vC.__H.__h.push(n))
          }, Hk.useLayoutEffect = MC, Hk.useRef = function(e) {
            return wC = 5, DC((function() {
              return {
                current: e
              }
            }), [])
          }, Hk.useImperativeHandle = function(e, t, n) {
            wC = 6, MC((function() {
              return "function" == typeof e ? (e(t()), function() {
                return e(null)
              }) : e ? (e.current = t(), function() {
                return e.current = null
              }) : void 0
            }), null == n ? n : n.concat(e))
          }, Hk.useMemo = DC, Hk.useCallback = function(e, t) {
            return wC = 8, DC((function() {
              return e
            }), t)
          }, Hk.useContext = function(e) {
            var t = vC.context[e.__c],
              n = OC(mC++, 9);
            return n.c = e, t ? (null == n.__ && (n.__ = !0, t.sub(vC)), t.props.value) : e.__
          }, Hk.useDebugValue = function(e, t) {
            yC.options.useDebugValue && yC.options.useDebugValue(t ? t(e) : e)
          }, Hk.useErrorBoundary = function(e) {
            var t = OC(mC++, 10),
              n = AC();
            return t.__ = e, vC.componentDidCatch || (vC.componentDidCatch = function(e) {
              t.__ && t.__(e), n[1](e)
            }), [n[0], function() {
              n[1](void 0)
            }]
          },
          function(e) {
            var t = Hk,
              n = Uk;

            function r(e, t) {
              for (var n in t) e[n] = t[n];
              return e
            }

            function i(e, t) {
              for (var n in e)
                if ("__source" !== n && !(n in t)) return !0;
              for (var r in t)
                if ("__source" !== r && e[r] !== t[r]) return !0;
              return !1
            }

            function o(e) {
              this.props = e
            }

            function a(e, t) {
              function r(e) {
                var n = this.props.ref,
                  r = n == e.ref;
                return !r && n && (n.call ? n(null) : n.current = null), t ? !t(this.props, e) || !r : i(this.props, e)
              }

              function o(t) {
                return this.shouldComponentUpdate = r, n.createElement(e, t)
              }
              return o.displayName = "Memo(" + (e.displayName || e.name) + ")", o.prototype.isReactComponent = !0, o.__f = !0, o
            }(o.prototype = new n.Component).isPureReactComponent = !0, o.prototype.shouldComponentUpdate = function(e, t) {
              return i(this.props, e) || i(this.state, t)
            };
            var s = n.options.__b;
            n.options.__b = function(e) {
              e.type && e.type.__f && e.ref && (e.props.ref = e.ref, e.ref = null), s && s(e)
            };
            var l = "undefined" != typeof Symbol && Symbol.for && Symbol.for("react.forward_ref") || 3911;

            function c(e) {
              function t(t) {
                var n = r({}, t);
                return delete n.ref, e(n, t.ref || null)
              }
              return t.$$typeof = l, t.render = t, t.prototype.isReactComponent = t.__f = !0, t.displayName = "ForwardRef(" + (e.displayName || e.name) + ")", t
            }
            var u = function(e, t) {
                return null == e ? null : n.toChildArray(n.toChildArray(e).map(t))
              },
              h = {
                map: u,
                forEach: u,
                count: function(e) {
                  return e ? n.toChildArray(e).length : 0
                },
                only: function(e) {
                  var t = n.toChildArray(e);
                  if (1 !== t.length) throw "Children.only";
                  return t[0]
                },
                toArray: n.toChildArray
              },
              p = n.options.__e;
            n.options.__e = function(e, t, n, r) {
              if (e.then)
                for (var i, o = t; o = o.__;)
                  if ((i = o.__c) && i.__c) return null == t.__e && (t.__e = n.__e, t.__k = n.__k), i.__c(e, t);
              p(e, t, n, r)
            };
            var d = n.options.unmount;

            function f() {
              this.__u = 0, this.t = null, this.__b = null
            }

            function g(e) {
              var t = e.__.__c;
              return t && t.__e && t.__e(e)
            }

            function m(e) {
              var t, r, i;

              function o(o) {
                if (t || (t = e()).then((function(e) {
                    r = e.default || e
                  }), (function(e) {
                    i = e
                  })), i) throw i;
                if (!r) throw t;
                return n.createElement(r, o)
              }
              return o.displayName = "Lazy", o.__f = !0, o
            }

            function v() {
              this.o = null, this.u = null
            }
            n.options.unmount = function(e) {
              var t = e.__c;
              t && t.__R && t.__R(), t && !0 === e.__h && (e.type = null), d && d(e)
            }, (f.prototype = new n.Component).__c = function(e, t) {
              var n = t.__c,
                r = this;
              null == r.t && (r.t = []), r.t.push(n);
              var i = g(r.__v),
                o = !1,
                a = function() {
                  o || (o = !0, n.__R = null, i ? i(s) : s())
                };
              n.__R = a;
              var s = function() {
                  if (!--r.__u) {
                    if (r.state.__e) {
                      var e = r.state.__e;
                      r.__v.__k[0] = function e(t, n, r) {
                        return t && (t.__v = null, t.__k = t.__k && t.__k.map((function(t) {
                          return e(t, n, r)
                        })), t.__c && t.__c.__P === n && (t.__e && r.insertBefore(t.__e, t.__d), t.__c.__e = !0, t.__c.__P = r)), t
                      }(e, e.__c.__P, e.__c.__O)
                    }
                    var t;
                    for (r.setState({
                        __e: r.__b = null
                      }); t = r.t.pop();) t.forceUpdate()
                  }
                },
                l = !0 === t.__h;
              r.__u++ || l || r.setState({
                __e: r.__b = r.__v.__k[0]
              }), e.then(a, a)
            }, f.prototype.componentWillUnmount = function() {
              this.t = []
            }, f.prototype.render = function(e, t) {
              if (this.__b) {
                if (this.__v.__k) {
                  var i = document.createElement("div"),
                    o = this.__v.__k[0].__c;
                  this.__v.__k[0] = function e(t, n, i) {
                    return t && (t.__c && t.__c.__H && (t.__c.__H.__.forEach((function(e) {
                      "function" == typeof e.__c && e.__c()
                    })), t.__c.__H = null), null != (t = r({}, t)).__c && (t.__c.__P === i && (t.__c.__P = n), t.__c = null), t.__k = t.__k && t.__k.map((function(t) {
                      return e(t, n, i)
                    }))), t
                  }(this.__b, i, o.__O = o.__P)
                }
                this.__b = null
              }
              var a = t.__e && n.createElement(n.Fragment, null, e.fallback);
              return a && (a.__h = null), [n.createElement(n.Fragment, null, t.__e ? null : e.children), a]
            };
            var _ = function(e, t, n) {
              if (++n[1] === n[0] && e.u.delete(t), e.props.revealOrder && ("t" !== e.props.revealOrder[0] || !e.u.size))
                for (n = e.o; n;) {
                  for (; n.length > 3;) n.pop()();
                  if (n[1] < n[0]) break;
                  e.o = n = n[2]
                }
            };

            function b(e) {
              return this.getChildContext = function() {
                return e.context
              }, e.children
            }

            function y(e) {
              var t = this,
                r = e.i;
              t.componentWillUnmount = function() {
                n.render(null, t.l), t.l = null, t.i = null
              }, t.i && t.i !== r && t.componentWillUnmount(), e.__v ? (t.l || (t.i = r, t.l = {
                nodeType: 1,
                parentNode: r,
                childNodes: [],
                appendChild: function(e) {
                  this.childNodes.push(e), t.i.appendChild(e)
                },
                insertBefore: function(e, n) {
                  this.childNodes.push(e), t.i.appendChild(e)
                },
                removeChild: function(e) {
                  this.childNodes.splice(this.childNodes.indexOf(e) >>> 1, 1), t.i.removeChild(e)
                }
              }), n.render(n.createElement(b, {
                context: t.context
              }, e.__v), t.l)) : t.l && t.componentWillUnmount()
            }

            function w(e, t) {
              var r = n.createElement(y, {
                __v: e,
                i: t
              });
              return r.containerInfo = t, r
            }(v.prototype = new n.Component).__e = function(e) {
              var t = this,
                n = g(t.__v),
                r = t.u.get(e);
              return r[0]++,
                function(i) {
                  var o = function() {
                    t.props.revealOrder ? (r.push(i), _(t, e, r)) : i()
                  };
                  n ? n(o) : o()
                }
            }, v.prototype.render = function(e) {
              this.o = null, this.u = new Map;
              var t = n.toChildArray(e.children);
              e.revealOrder && "b" === e.revealOrder[0] && t.reverse();
              for (var r = t.length; r--;) this.u.set(t[r], this.o = [1, 0, this.o]);
              return e.children
            }, v.prototype.componentDidUpdate = v.prototype.componentDidMount = function() {
              var e = this;
              this.u.forEach((function(t, n) {
                _(e, n, t)
              }))
            };
            var x = "undefined" != typeof Symbol && Symbol.for && Symbol.for("react.element") || 60103,
              k =
              /^(?:accent|alignment|arabic|baseline|cap|clip(?!PathU)|color|dominant|fill|flood|font|glyph(?!R)|horiz|marker(?!H|W|U)|overline|paint|stop|strikethrough|stroke|text(?!L)|underline|unicode|units|v|vector|vert|word|writing|x(?!C))[A-Z]/,
              C = "undefined" != typeof document,
              S = function(e) {
                return ("undefined" != typeof Symbol && "symbol" == typeof Symbol() ? /fil|che|rad/i : /fil|che|ra/i).test(e)
              };

            function E(e, t, r) {
              return null == t.__k && (t.textContent = ""), n.render(e, t), "function" == typeof r && r(), e ? e.__c : null
            }

            function T(e, t, r) {
              return n.hydrate(e, t), "function" == typeof r && r(), e ? e.__c : null
            }
            n.Component.prototype.isReactComponent = {}, ["componentWillMount", "componentWillReceiveProps", "componentWillUpdate"].forEach((function(e) {
              Object.defineProperty(n.Component.prototype, e, {
                configurable: !0,
                get: function() {
                  return this["UNSAFE_" + e]
                },
                set: function(t) {
                  Object.defineProperty(this, e, {
                    configurable: !0,
                    writable: !0,
                    value: t
                  })
                }
              })
            }));
            var O = n.options.event;

            function A() {}

            function P() {
              return this.cancelBubble
            }

            function M() {
              return this.defaultPrevented
            }
            n.options.event = function(e) {
              return O && (e = O(e)), e.persist = A, e.isPropagationStopped = P, e.isDefaultPrevented = M, e.nativeEvent = e
            };
            var D, I = {
                configurable: !0,
                get: function() {
                  return this.class
                }
              },
              R = n.options.vnode;
            n.options.vnode = function(e) {
              var t = e.type,
                r = e.props,
                i = r;
              if ("string" == typeof t) {
                var o = -1 === t.indexOf("-");
                for (var a in i = {}, r) {
                  var s = r[a];
                  C && "children" === a && "noscript" === t || "value" === a && "defaultValue" in r && null == s || ("defaultValue" === a && "value" in r && null == r.value ? a = "value" : "download" === a && !0 === s ? s = "" :
                    /ondoubleclick/i.test(a) ? a = "ondblclick" : /^onchange(textarea|input)/i.test(a + t) && !S(r.type) ? a = "oninput" : /^onfocus$/i.test(a) ? a = "onfocusin" : /^onblur$/i.test(a) ? a = "onfocusout" :
                    /^on(Ani|Tra|Tou|BeforeInp|Compo)/.test(a) ? a = a.toLowerCase() : o && k.test(a) ? a = a.replace(/[A-Z0-9]/, "-$&").toLowerCase() : null === s && (s = void 0), /^oninput/i.test(a) && (a = a.toLowerCase(), i[a] && (a =
                      "oninputCapture")), i[a] = s)
                }
                "select" == t && i.multiple && Array.isArray(i.value) && (i.value = n.toChildArray(r.children).forEach((function(e) {
                  e.props.selected = -1 != i.value.indexOf(e.props.value)
                }))), "select" == t && null != i.defaultValue && (i.value = n.toChildArray(r.children).forEach((function(e) {
                  e.props.selected = i.multiple ? -1 != i.defaultValue.indexOf(e.props.value) : i.defaultValue == e.props.value
                }))), e.props = i, r.class != r.className && (I.enumerable = "className" in r, null != r.className && (i.class = r.className), Object.defineProperty(i, "className", I))
              }
              e.$$typeof = x, R && R(e)
            };
            var j = n.options.__r;
            n.options.__r = function(e) {
              j && j(e), D = e.__c
            };
            var N = {
              ReactCurrentDispatcher: {
                current: {
                  readContext: function(e) {
                    return D.__n[e.__c].props.value
                  }
                }
              }
            };

            function L(e) {
              return n.createElement.bind(null, e)
            }

            function F(e) {
              return !!e && e.$$typeof === x
            }

            function B(e) {
              return F(e) ? n.cloneElement.apply(null, arguments) : e
            }

            function z(e) {
              return !!e.__k && (n.render(null, e), !0)
            }

            function H(e) {
              return e && (e.base || 1 === e.nodeType && e) || null
            }
            var U = function(e, t) {
                return e(t)
              },
              W = function(e, t) {
                return e(t)
              },
              V = n.Fragment,
              X = {
                useState: t.useState,
                useReducer: t.useReducer,
                useEffect: t.useEffect,
                useLayoutEffect: t.useLayoutEffect,
                useRef: t.useRef,
                useImperativeHandle: t.useImperativeHandle,
                useMemo: t.useMemo,
                useCallback: t.useCallback,
                useContext: t.useContext,
                useDebugValue: t.useDebugValue,
                version: "17.0.2",
                Children: h,
                render: E,
                hydrate: T,
                unmountComponentAtNode: z,
                createPortal: w,
                createElement: n.createElement,
                createContext: n.createContext,
                createFactory: L,
                cloneElement: B,
                createRef: n.createRef,
                Fragment: n.Fragment,
                isValidElement: F,
                findDOMNode: H,
                Component: n.Component,
                PureComponent: o,
                memo: a,
                forwardRef: c,
                flushSync: W,
                unstable_batchedUpdates: U,
                StrictMode: V,
                Suspense: f,
                SuspenseList: v,
                lazy: m,
                __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED: N
              };
            Object.keys(t).forEach((function(n) {
                e[n] = t[n]
              })), e.createElement = n.createElement, e.createContext = n.createContext, e.createRef = n.createRef, e.Fragment = n.Fragment, e.Component = n.Component, e.version = "17.0.2", e.Children = h, e.render = E, e.hydrate = T, e
              .unmountComponentAtNode = z, e.createPortal = w, e.createFactory = L, e.cloneElement = B, e.isValidElement = F, e.findDOMNode = H, e.PureComponent = o, e.memo = a, e.forwardRef = c, e.flushSync = W, e.unstable_batchedUpdates = U, e
              .StrictMode = V, e.Suspense = f, e.SuspenseList = v, e.lazy = m, e.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED = N, e.default = X
          }(zk);
        var BC, zC = tn(Object.freeze({
          __proto__: null,
          default: function(e, t) {
            if (!e) throw new Error("Invariant failed")
          }
        }));

        function HC() {
          return HC = Object.assign ? Object.assign.bind() : function(e) {
            for (var t = 1; t < arguments.length; t++) {
              var n = arguments[t];
              for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r])
            }
            return e
          }, HC.apply(this, arguments)
        }! function(e) {
          var t = l.default,
            n = sl.exports,
            r = zk,
            i = zC;

          function o(e) {
            return e && e.__esModule ? e.default : e
          }

          function a(e, t, n, r) {
            Object.defineProperty(e, t, {
              get: n,
              set: r,
              enumerable: !0,
              configurable: !0
            })
          }

          function s(e) {
            null !== e.parentElement && e.parentElement.removeChild(e)
          }

          function c(e) {
            e.forEach((e => s(e.element)))
          }

          function u(e) {
            e.forEach((e => {
              ! function(e, t, n) {
                const r = e.children[n] || null;
                e.insertBefore(t, r)
              }(e.parentElement, e.element, e.oldIndex)
            }))
          }

          function h(e, t) {
            const n = f(e),
              r = {
                parentElement: e.from
              };
            let i = [];
            switch (n) {
              case "normal":
                i = [{
                  element: e.item,
                  newIndex: e.newIndex,
                  oldIndex: e.oldIndex,
                  parentElement: e.from
                }];
                break;
              case "swap":
                i = [{
                  element: e.item,
                  oldIndex: e.oldIndex,
                  newIndex: e.newIndex,
                  ...r
                }, {
                  element: e.swapItem,
                  oldIndex: e.newIndex,
                  newIndex: e.oldIndex,
                  ...r
                }];
                break;
              case "multidrag":
                i = e.oldIndicies.map(((t, n) => ({
                  element: t.multiDragElement,
                  oldIndex: t.index,
                  newIndex: e.newIndicies[n].index,
                  ...r
                })))
            }
            const o = function(e, t) {
              const n = e.map((e => ({
                ...e,
                item: t[e.oldIndex]
              }))).sort(((e, t) => e.oldIndex - t.oldIndex));
              return n
            }(i, t);
            return o
          }

          function p(e, t) {
            const n = [...t];
            return e.concat().reverse().forEach((e => n.splice(e.oldIndex, 1))), n
          }

          function d(e, t, n, r) {
            const i = [...t];
            return e.forEach((e => {
              const t = r && n && r(e.item, n);
              i.splice(e.newIndex, 0, t || e.item)
            })), i
          }

          function f(e) {
            return e.oldIndicies && e.oldIndicies.length > 0 ? "multidrag" : e.swapItem ? "swap" : "normal"
          }
          a(e.exports, "Sortable", (() => $882b6d93070905b3$re_export$Sortable)), a(e.exports, "Direction", (() => $882b6d93070905b3$re_export$Direction)), a(e.exports, "DOMRect", (() => $882b6d93070905b3$re_export$DOMRect)), a(e.exports,
            "GroupOptions", (() => $882b6d93070905b3$re_export$GroupOptions)), a(e.exports, "MoveEvent", (() => $882b6d93070905b3$re_export$MoveEvent)), a(e.exports, "Options", (() => $882b6d93070905b3$re_export$Options)), a(e.exports,
            "PullResult", (() => $882b6d93070905b3$re_export$PullResult)), a(e.exports, "PutResult", (() => $882b6d93070905b3$re_export$PutResult)), a(e.exports, "SortableEvent", (() => $882b6d93070905b3$re_export$SortableEvent)), a(e.exports,
            "SortableOptions", (() => $882b6d93070905b3$re_export$SortableOptions)), a(e.exports, "Utils", (() => $882b6d93070905b3$re_export$Utils)), a(e.exports, "ReactSortable", (() => m));
          const g = {
            dragging: null
          };
          class m extends r.Component {
            constructor(e) {
              super(e), this.ref = r.createRef();
              const t = [...e.list].map((e => Object.assign(e, {
                chosen: !1,
                selected: !1
              })));
              e.setList(t, this.sortable, g), o(i)(!e.plugins,
                '\nPlugins prop is no longer supported.\nInstead, mount it with "Sortable.mount(new MultiDrag())"\nPlease read the updated README.md at https://github.com/SortableJS/react-sortablejs.\n      ')
            }
            componentDidMount() {
              if (null === this.ref.current) return;
              const e = this.makeOptions();
              o(t).create(this.ref.current, e)
            }
            componentDidUpdate(e) {
              e.disabled !== this.props.disabled && this.sortable && this.sortable.option("disabled", this.props.disabled)
            }
            render() {
              const {
                tag: e,
                style: t,
                className: n,
                id: i
              } = this.props, o = {
                style: t,
                className: n,
                id: i
              }, a = e && null !== e ? e : "div";
              return r.createElement(a, {
                ref: this.ref,
                ...o
              }, this.getChildren())
            }
            getChildren() {
              const {
                children: e,
                dataIdAttr: t,
                selectedClass: i = "sortable-selected",
                chosenClass: a = "sortable-chosen",
                dragClass: s = "sortable-drag",
                fallbackClass: l = "sortable-falback",
                ghostClass: c = "sortable-ghost",
                swapClass: u = "sortable-swap-highlight",
                filter: h = "sortable-filter",
                list: p
              } = this.props;
              if (!e || null == e) return null;
              const d = t || "data-id";
              return r.Children.map(e, ((e, t) => {
                if (void 0 === e) return;
                const s = p[t] || {},
                  {
                    className: l
                  } = e.props,
                  c = "string" == typeof h && {
                    [h.replace(".", "")]: !!s.filtered
                  },
                  u = o(n)(l, {
                    [i]: s.selected,
                    [a]: s.chosen,
                    ...c
                  });
                return r.cloneElement(e, {
                  [d]: e.key,
                  className: u
                })
              }))
            }
            get sortable() {
              const e = this.ref.current;
              if (null === e) return null;
              const t = Object.keys(e).find((e => e.includes("Sortable")));
              return t ? e[t] : null
            }
            makeOptions() {
              const e = function(e) {
                const {
                  list: t,
                  setList: n,
                  children: r,
                  tag: i,
                  style: o,
                  className: a,
                  clone: s,
                  onAdd: l,
                  onChange: c,
                  onChoose: u,
                  onClone: h,
                  onEnd: p,
                  onFilter: d,
                  onRemove: f,
                  onSort: g,
                  onStart: m,
                  onUnchoose: v,
                  onUpdate: _,
                  onMove: b,
                  onSpill: y,
                  onSelect: w,
                  onDeselect: x,
                  ...k
                } = e;
                return k
              }(this.props);
              ["onAdd", "onChoose", "onDeselect", "onEnd", "onRemove", "onSelect", "onSpill", "onStart", "onUnchoose", "onUpdate"].forEach((t => e[t] = this.prepareOnHandlerPropAndDOM(t))), ["onChange", "onClone", "onFilter", "onSort"]
                .forEach((t => e[t] = this.prepareOnHandlerProp(t)));
              return {
                ...e,
                onMove: (e, t) => {
                  const {
                    onMove: n
                  } = this.props, r = e.willInsertAfter || -1;
                  if (!n) return r;
                  const i = n(e, t, this.sortable, g);
                  return void 0 !== i && i
                }
              }
            }
            prepareOnHandlerPropAndDOM(e) {
              return t => {
                this.callOnHandlerProp(t, e), this[e](t)
              }
            }
            prepareOnHandlerProp(e) {
              return t => {
                this.callOnHandlerProp(t, e)
              }
            }
            callOnHandlerProp(e, t) {
              const n = this.props[t];
              n && n(e, this.sortable, g)
            }
            onAdd(e) {
              const {
                list: t,
                setList: n,
                clone: r
              } = this.props, i = h(e, [...g.dragging.props.list]);
              c(i);
              n(d(i, t, e, r).map((e => Object.assign(e, {
                selected: !1
              }))), this.sortable, g)
            }
            onRemove(e) {
              const {
                list: t,
                setList: n
              } = this.props, r = f(e), a = h(e, t);
              u(a);
              let s = [...t];
              if ("clone" !== e.pullMode) s = p(a, s);
              else {
                let t = a;
                switch (r) {
                  case "multidrag":
                    t = a.map(((t, n) => ({
                      ...t,
                      element: e.clones[n]
                    })));
                    break;
                  case "normal":
                    t = a.map((t => ({
                      ...t,
                      element: e.clone
                    })));
                    break;
                  default:
                    o(i)(!0, `mode "${r}" cannot clone. Please remove "props.clone" from <ReactSortable/> when using the "${r}" plugin`)
                }
                c(t), a.forEach((t => {
                  const n = t.oldIndex,
                    r = this.props.clone(t.item, e);
                  s.splice(n, 1, r)
                }))
              }
              s = s.map((e => Object.assign(e, {
                selected: !1
              }))), n(s, this.sortable, g)
            }
            onUpdate(e) {
              const {
                list: t,
                setList: n
              } = this.props, r = h(e, t);
              c(r), u(r);
              const i = function(e, t) {
                return d(e, p(e, t))
              }(r, t);
              return n(i, this.sortable, g)
            }
            onStart() {
              g.dragging = this
            }
            onEnd() {
              g.dragging = null
            }
            onChoose(e) {
              const {
                list: t,
                setList: n
              } = this.props, r = t.map(((t, n) => {
                let r = t;
                return n === e.oldIndex && (r = Object.assign(t, {
                  chosen: !0
                })), r
              }));
              n(r, this.sortable, g)
            }
            onUnchoose(e) {
              const {
                list: t,
                setList: n
              } = this.props, r = t.map(((t, n) => {
                let r = t;
                return n === e.oldIndex && (r = Object.assign(r, {
                  chosen: !1
                })), r
              }));
              n(r, this.sortable, g)
            }
            onSpill(e) {
              const {
                removeOnSpill: t,
                revertOnSpill: n
              } = this.props;
              t && !n && s(e.item)
            }
            onSelect(e) {
              const {
                list: t,
                setList: n
              } = this.props, r = t.map((e => Object.assign(e, {
                selected: !1
              })));
              e.newIndicies.forEach((e => {
                const t = e.index; - 1 !== t && (r[t].selected = !0)
              })), n(r, this.sortable, g)
            }
            onDeselect(e) {
              const {
                list: t,
                setList: n
              } = this.props, r = t.map((e => Object.assign(e, {
                selected: !1
              })));
              e.newIndicies.forEach((e => {
                const t = e.index; - 1 !== t && (r[t].selected = !0)
              })), n(r, this.sortable, g)
            }
          }
          m.defaultProps = {
            clone: e => e
          };
          var v, _;
          v = e.exports, _ = {}, Object.keys(_).forEach((function(e) {
            "default" === e || "__esModule" === e || v.hasOwnProperty(e) || Object.defineProperty(v, e, {
              enumerable: !0,
              get: function() {
                return _[e]
              }
            })
          }))
        }(Bk);
        var UC = e => ue("svg", HC({
            width: 14,
            height: 9,
            fill: "none",
            xmlns: "http://www.w3.org/2000/svg"
          }, e), BC || (BC = ue("path", {
            fillRule: "evenodd",
            clipRule: "evenodd",
            d: "M.6 6.9a1.6 1.6 0 1 0 3.2-.001A1.6 1.6 0 0 0 .6 6.9Zm4.8 0a1.6 1.6 0 1 0 3.2-.001 1.6 1.6 0 0 0-3.2.001Zm4.8 0a1.6 1.6 0 1 0 3.2-.001 1.6 1.6 0 0 0-3.2.001ZM3.8 2.1a1.6 1.6 0 1 0-3.202.001A1.6 1.6 0 0 0 3.8 2.1Zm1.6 0a1.6 1.6 0 1 0 3.2-.001 1.6 1.6 0 0 0-3.2.001Zm4.8 0a1.6 1.6 0 1 0 3.2-.001 1.6 1.6 0 0 0-3.2.001Z",
            fill: "#7E7E7E"
          }))),
          WC = "OrderOperator-module_operate_order__Dy31o",
          VC = "OrderOperator-module_img_item__M6EFs",
          XC = "OrderOperator-module_img__dEUmr",
          GC = "OrderOperator-module_sortable__AqKYO",
          YC = "OrderOperator-module_icon__P5csN",
          qC = "OrderOperator-module_item_drag__6ZxO-",
          KC = "OrderOperator-module_index__-E8wZ",
          ZC = "OrderOperator-module_index_show__-H0q8";
        c(
        ".OrderOperator-module_operate_order__Dy31o{display:flex;height:118px;margin:6px 0}.OrderOperator-module_img_item__M6EFs{align-items:center;display:flex;flex-direction:column}.OrderOperator-module_img_item__M6EFs+.OrderOperator-module_img_item__M6EFs{margin-left:20px}.OrderOperator-module_img__dEUmr{border-radius:4px;height:60px;object-fit:cover;width:60px}.OrderOperator-module_img_item__M6EFs:last-child{margin-right:28px}.OrderOperator-module_img_item__M6EFs:first-child{margin-left:28px}.OrderOperator-module_sortable__AqKYO{align-items:center;display:flex;overflow-x:auto}.OrderOperator-module_icon__P5csN{cursor:pointer;margin-top:8px}.OrderOperator-module_item_drag__6ZxO-{background:#fdfdfd;border:1px solid #e6e6e6;border-radius:6px;box-shadow:0 2px 10px rgba(34,34,34,.08);padding:0 4px}.OrderOperator-module_item_drag__6ZxO- .OrderOperator-module_img_item__M6EFs{height:64px;width:64px}.OrderOperator-module_item_drag__6ZxO- .OrderOperator-module_index__-E8wZ{visibility:visible!important}.OrderOperator-module_index__-E8wZ{color:rgba(51,51,51,.6);font-size:12px;font-weight:500;line-height:12px;margin:3px 0;visibility:hidden}.OrderOperator-module_index_show__-H0q8{visibility:visible!important}@media (max-width:959px){.OrderOperator-module_img_item__M6EFs:last-child{margin-right:0}.OrderOperator-module_sortable__AqKYO{padding-right:20px}.OrderOperator-module_img_item__M6EFs:first-child{margin-left:20px}.OrderOperator-module_operate_order__Dy31o{height:108px}}");
        var $C, JC = e => {
          var {
            onChange: t,
            defaultValue: n
          } = e, [r, i] = qe([]), [o, a] = qe(!1);
          Ze((() => {
            n.length !== r.length && i(n || [])
          }), [n, r.length]);
          return gl("div", {
            className: WC,
            children: gl(Bk.exports.ReactSortable, {
              className: GC,
              list: r || [],
              setList: e => {
                i(e), e.length && t(e)
              },
              dragClass: qC,
              chosenClass: qC,
              onStart: () => a(!0),
              onEnd: () => a(!1),
              filter: ".ignore",
              handle: ".handle",
              direction: "horizontal",
              children: null == r ? void 0 : r.map(((e, t) => {
                var {
                  url: n,
                  id: r
                } = e;
                return gl("div", {
                  className: VC,
                  children: [gl("div", {
                    className: ul([KC, {
                      [ZC]: o
                    }]),
                    children: t + 1
                  }), gl("img", {
                    className: ul([XC, "ignore"]),
                    src: n
                  }), gl("div", {
                    className: ul(["handle", YC]),
                    children: gl(UC, {})
                  })]
                }, r)
              }))
            })
          })
        };

        function QC() {
          return QC = Object.assign ? Object.assign.bind() : function(e) {
            for (var t = 1; t < arguments.length; t++) {
              var n = arguments[t];
              for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r])
            }
            return e
          }, QC.apply(this, arguments)
        }
        var eS, tS = e => ue("svg", QC({
          width: 28,
          height: 28,
          fill: "none",
          xmlns: "http://www.w3.org/2000/svg"
        }, e), $C || ($C = ue("path", {
          fillRule: "evenodd",
          clipRule: "evenodd",
          d: "M9.707 8.293a1 1 0 0 0-1.414 1.414L12.586 14l-4.293 4.293a1 1 0 1 0 1.414 1.414L14 15.414l4.293 4.293a1 1 0 0 0 1.414-1.414L15.414 14l4.293-4.293a1 1 0 0 0-1.414-1.414L14 12.586 9.707 8.293Z",
          fill: "#333"
        })));

        function nS() {
          return nS = Object.assign ? Object.assign.bind() : function(e) {
            for (var t = 1; t < arguments.length; t++) {
              var n = arguments[t];
              for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r])
            }
            return e
          }, nS.apply(this, arguments)
        }
        var rS = e => ue("svg", nS({
          width: 28,
          height: 28,
          fill: "none",
          xmlns: "http://www.w3.org/2000/svg"
        }, e), eS || (eS = ue("path", {
          fillRule: "evenodd",
          clipRule: "evenodd",
          d: "M22.707 8.293a1 1 0 0 1 0 1.414l-10 10a1 1 0 0 1-1.414 0l-5-5a1 1 0 1 1 1.414-1.414L12 17.586l9.293-9.293a1 1 0 0 1 1.414 0Z",
          fill: "#333"
        })));
        c(
        '.rc-tabs-dropdown{background:#fefefe;border:1px solid #000;max-height:200px;overflow:auto;position:absolute}.rc-tabs-dropdown-hidden{display:none}.rc-tabs-dropdown-menu{list-style:none;margin:0;padding:0}.rc-tabs-dropdown-menu-item{padding:4px 8px}.rc-tabs-dropdown-menu-item-selected{background:red}.rc-tabs-dropdown-menu-item-disabled{cursor:not-allowed;opacity:.3}.rc-tabs-content{display:flex;width:100%}.rc-tabs-content-holder{flex:auto}.rc-tabs-content-animated{transition:margin .3s}.rc-tabs-tabpane{flex:none;width:100%}.rc-tabs{display:flex}.rc-tabs-bottom,.rc-tabs-top{flex-direction:column}.rc-tabs-bottom .rc-tabs-ink-bar,.rc-tabs-top .rc-tabs-ink-bar{height:3px}.rc-tabs-top .rc-tabs-ink-bar{bottom:0}.rc-tabs-bottom .rc-tabs-nav{order:1}.rc-tabs-bottom .rc-tabs-content{order:0}.rc-tabs-bottom .rc-tabs-ink-bar{top:0}.rc-tabs-left.rc-tabs-editable .rc-tabs-tab,.rc-tabs-right.rc-tabs-editable .rc-tabs-tab{padding-right:32px}.rc-tabs-left .rc-tabs-nav-wrap,.rc-tabs-right .rc-tabs-nav-wrap{flex-direction:column}.rc-tabs-left .rc-tabs-ink-bar,.rc-tabs-right .rc-tabs-ink-bar{width:3px}.rc-tabs-left .rc-tabs-nav,.rc-tabs-right .rc-tabs-nav{flex-direction:column;min-width:50px}.rc-tabs-left .rc-tabs-nav-list,.rc-tabs-left .rc-tabs-nav-operations,.rc-tabs-right .rc-tabs-nav-list,.rc-tabs-right .rc-tabs-nav-operations{flex:1 0 auto;flex-direction:column}.rc-tabs-left .rc-tabs-ink-bar{right:0}.rc-tabs-right .rc-tabs-nav{order:1}.rc-tabs-right .rc-tabs-content{order:0}.rc-tabs-right .rc-tabs-ink-bar{left:0}.rc-tabs-dropdown-rtl,.rc-tabs-rtl{direction:rtl}.rc-tabs{border:1px solid gray;font-size:14px;overflow:hidden}.rc-tabs-nav{display:flex;flex:none;position:relative}.rc-tabs-nav-measure,.rc-tabs-nav-wrap{display:inline-block;display:flex;flex:auto;overflow:hidden;position:relative;transform:translate(0);white-space:nowrap}.rc-tabs-nav-measure-ping-left:before,.rc-tabs-nav-measure-ping-right:after,.rc-tabs-nav-wrap-ping-left:before,.rc-tabs-nav-wrap-ping-right:after{bottom:0;content:"";position:absolute;top:0}.rc-tabs-nav-measure-ping-left:before,.rc-tabs-nav-wrap-ping-left:before{border-left:1px solid red;left:0}.rc-tabs-nav-measure-ping-right:after,.rc-tabs-nav-wrap-ping-right:after{border-right:1px solid red;right:0}.rc-tabs-nav-measure-ping-bottom:after,.rc-tabs-nav-measure-ping-top:before,.rc-tabs-nav-wrap-ping-bottom:after,.rc-tabs-nav-wrap-ping-top:before{content:"";left:0;position:absolute;right:0}.rc-tabs-nav-measure-ping-top:before,.rc-tabs-nav-wrap-ping-top:before{border-top:1px solid red;top:0}.rc-tabs-nav-measure-ping-bottom:after,.rc-tabs-nav-wrap-ping-bottom:after{border-top:1px solid red;bottom:0}.rc-tabs-nav-list{display:flex;position:relative;transition:transform .3s}.rc-tabs-nav-operations{display:flex}.rc-tabs-nav-operations-hidden{pointer-events:none;position:absolute;visibility:hidden}.rc-tabs-nav-more{background:rgba(255,0,0,.1);border:1px solid blue}.rc-tabs-nav-add{background:rgba(0,255,0,.1);border:1px solid green}.rc-tabs-tab{align-items:center;background:hsla(0,0%,100%,.5);border:0;cursor:pointer;display:flex;font-size:20px;font-weight:lighter;margin:0;outline:none;position:relative}.rc-tabs-tab-btn,.rc-tabs-tab-remove{background:transparent;border:0}.rc-tabs-tab-btn{font-weight:inherit;line-height:32px}.rc-tabs-tab-remove:hover{color:red}.rc-tabs-tab-active{font-weight:bolder}.rc-tabs-ink-bar{background:red;pointer-events:none;position:absolute}.rc-tabs-ink-bar-animated{transition:all .3s}.rc-tabs-extra-content{flex:none}');
        var iS, oS, aS, sS, lS, cS, uS, hS, pS, dS = dt((e => {
          var {
            handleOperate: t,
            defaultSize: n,
            defaultRotate: r,
            orderList: i,
            onReset: o,
            onConfirm: a
          } = e, {
            formatMessage: s
          } = zi();
          return gl("div", {
            className: Vx,
            children: gl(Ux, {
              defaultActiveKey: "1",
              onChange: e => {},
              className: Wx,
              tabBarStyle: {
                flex: 1,
                background: "rgba(230, 230, 230, 0.4)"
              },
              children: [gl(Lx, {
                disabled: !0,
                tab: gl(tS, {
                  className: "icon-custom",
                  onClick: o
                })
              }, "0"), gl(Lx, {
                tab: s({
                  id: "size"
                }),
                className: Xx,
                children: gl(sk, {
                  onChange: e => t("size", e),
                  defaultData: n
                })
              }, "1"), gl(Lx, {
                tab: s({
                  id: "rotate"
                }),
                className: Xx,
                children: gl(Fk, {
                  onChange: e => t("rotate", e),
                  defaultValue: r
                })
              }, "2"), gl(Lx, {
                tab: s({
                  id: "order"
                }),
                className: Xx,
                children: gl(JC, {
                  defaultValue: i,
                  onChange: e => t("order", e)
                })
              }, "3"), gl(Lx, {
                disabled: !0,
                tab: gl(rS, {
                  className: "icon-custom",
                  onClick: a
                })
              }, "4")]
            })
          })
        }));

        function fS() {
          return fS = Object.assign ? Object.assign.bind() : function(e) {
            for (var t = 1; t < arguments.length; t++) {
              var n = arguments[t];
              for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r])
            }
            return e
          }, fS.apply(this, arguments)
        }
        var gS = e => ue("svg", fS({
            width: 119,
            height: 103,
            fill: "none",
            xmlns: "http://www.w3.org/2000/svg"
          }, e), iS || (iS = ue("rect", {
            x: 1.896,
            y: 20.176,
            width: 100,
            height: 77.551,
            rx: 4,
            transform: "rotate(-8 1.896 20.176)",
            fill: "#EBECED"
          })), oS || (oS = ue("g", {
            filter: "url(#UploadEmpty_svg__a)"
          }, ue("rect", {
            x: 8,
            y: 15,
            width: 98,
            height: 76,
            rx: 4,
            fill: "#fff"
          }))), aS || (aS = ue("rect", {
            x: 12,
            y: 19,
            width: 90,
            height: 68,
            rx: 3,
            fill: "url(#UploadEmpty_svg__b)"
          })), sS || (sS = ue("path", {
            fillRule: "evenodd",
            clipRule: "evenodd",
            d: "M52.985 87H15a3 3 0 0 1-3-3v-9.35l12.64-11.907a4 4 0 0 1 5.655.169L52.985 87Z",
            fill: "url(#UploadEmpty_svg__c)"
          })), lS || (lS = ue("path", {
            fillRule: "evenodd",
            clipRule: "evenodd",
            d: "M102 73.691v10.31a3 3 0 0 1-3 3H28.395L58.23 49.274a8 8 0 0 1 11.237-1.312L102 73.69Z",
            fill: "url(#UploadEmpty_svg__d)"
          })), cS || (cS = ue("circle", {
            cx: 25,
            cy: 33,
            r: 6,
            fill: "#D3D3D3"
          })), uS || (uS = ue("circle", {
            cx: 104,
            cy: 15,
            r: 15,
            fill: "#333",
            fillOpacity: .9
          })), hS || (hS = ue("path", {
            d: "M108.619 13.85h-3.469v-3.47a1.149 1.149 0 1 0-2.3 0v3.47h-3.47a1.149 1.149 0 1 0 0 2.3h3.47v3.47a1.149 1.149 0 1 0 2.3 0v-3.47h3.469a1.149 1.149 0 1 0 0-2.3Z",
            fill: "#fff"
          })), pS || (pS = ue("defs", null, ue("linearGradient", {
            id: "UploadEmpty_svg__b",
            x1: 57,
            y1: 19,
            x2: 57,
            y2: 87,
            gradientUnits: "userSpaceOnUse"
          }, ue("stop", {
            stopColor: "#F5F5F5"
          }), ue("stop", {
            offset: 1,
            stopColor: "#F1F1F1"
          }), ue("stop", {
            offset: 1,
            stopColor: "#F1F1F1"
          })), ue("linearGradient", {
            id: "UploadEmpty_svg__c",
            x1: 38.615,
            y1: 57.687,
            x2: 38.615,
            y2: 97,
            gradientUnits: "userSpaceOnUse"
          }, ue("stop", {
            stopColor: "#E2E2E2"
          }), ue("stop", {
            offset: 1,
            stopColor: "#E1E1E1"
          })), ue("linearGradient", {
            id: "UploadEmpty_svg__d",
            x1: 62.337,
            y1: 52.452,
            x2: 62.337,
            y2: 96.902,
            gradientUnits: "userSpaceOnUse"
          }, ue("stop", {
            offset: 0,
            stopColor: "#E5E5E6"
          }), ue("stop", {
            offset: 1,
            stopColor: "#D3D3D3"
          })), ue("filter", {
            id: "UploadEmpty_svg__a",
            x: 0,
            y: 11,
            width: 114,
            height: 92,
            filterUnits: "userSpaceOnUse",
            colorInterpolationFilters: "sRGB"
          }, ue("feFlood", {
            floodOpacity: 0,
            result: "BackgroundImageFix"
          }), ue("feColorMatrix", {
            in: "SourceAlpha",
            values: "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0",
            result: "hardAlpha"
          }), ue("feOffset", {
            dy: 4
          }), ue("feGaussianBlur", {
            stdDeviation: 4
          }), ue("feComposite", {
            in2: "hardAlpha",
            operator: "out"
          }), ue("feColorMatrix", {
            values: "0 0 0 0 0.133333 0 0 0 0 0.133333 0 0 0 0 0.133333 0 0 0 0.03 0"
          }), ue("feBlend", {
            in2: "BackgroundImageFix",
            result: "effect1_dropShadow_188_17874"
          }), ue("feBlend", {
            in: "SourceGraphic",
            in2: "effect1_dropShadow_188_17874",
            result: "shape"
          }))))),
          mS = "DesignUpload-module_design_upload__rei3k",
          vS = "DesignUpload-module_pointer__Aud8c",
          _S = "DesignUpload-module_loading__4cg3s";
        c(".DesignUpload-module_design_upload__rei3k{display:flex;height:584px}.DesignUpload-module_pointer__Aud8c{cursor:pointer}.DesignUpload-module_loading__4cg3s{transform:scale(.6)}");
        var bS = gl(gS, {}),
          yS = e => {
            var {
              width: t,
              height: n,
              children: r,
              fieldName: i
            } = e, [o, a] = qe(null), [s, l] = qe(""), [c, u] = Od(), {
              formatMessage: h
            } = zi();
            return gl("div", {
              className: ul([e.className, mS]),
              style: {
                width: t,
                height: n
              },
              children: [gl(Fh, {
                className: vS,
                action: null == o ? void 0 : o.write_host,
                accept: "image/png,image/jpeg,image/gif",
                beforeUpload: e => e.size > L ? (c.open({
                  content: h({
                    id: "image_size_tip"
                  })
                }), !1) : (e.status = "uploading", l(R), e.objectName = "".concat(window.SHOP_PARAMS.shop_id, "/").concat((new Date).getTime(), ".").concat((y(e.type) || w(e.name)).toLowerCase()), !!(o && Date.now() < 1e3 * o
                  .expire) || v().then((t => (a(t.data), e)))),
                data: e => ({
                  policy: o.policy,
                  OSSAccessKeyId: o.access_id,
                  success_action_status: 200,
                  signature: o.sign,
                  "x-oss-forbid-overwrite": !0,
                  key: e.objectName
                }),
                onSuccess: (t, n) => {
                  n.status = "success", n.url = o.read_host + n.objectName, n.label_id = i, l(j), e.onSuccess(n)
                },
                onError: (e, t, n) => {
                  n.status = "error"
                },
                tabIndex: "0",
                children: R === s ? gl(op, {
                  className: _S
                }) : r || bS
              }), u]
            })
          },
          wS = "Design-module_app_parakeet_design__container__FrvSK",
          xS = "Design-module_show__WZcJY",
          kS = "Design-module_border_dash__-6wEJ",
          CS = "Design-module_hidden__35G87",
          SS = "Design-module_upload__d0XVy",
          ES = "Design-module_upload_dialog__fCkjQ",
          TS = "Design-module_wrapper__WGJzH";
        c(".Design-module_app_parakeet_design__container__FrvSK *{box-sizing:border-box}.Design-module_app_parakeet_design__container__FrvSK{border:2px solid hsla(0,0%,90%,.6);border-radius:8px;display:none}.Design-module_app_parakeet_design__container__FrvSK .canvas-container canvas{border-radius:8px}.Design-module_show__WZcJY{display:block!important}.Design-module_border_dash__-6wEJ{border-style:dashed!important}.Design-module_hidden__35G87{display:none!important}.Design-module_upload__d0XVy{align-items:center;background-color:#fdfdfd;border-radius:8px;display:flex;justify-content:center}.Design-module_upload_dialog__fCkjQ{border-radius:8px;left:50%;margin:0!important;padding:0!important;position:absolute!important;top:50%;transform:translateX(-50%) translateY(-50%);width:auto!important}.Design-module_preview_img__B65MY{max-height:100%;max-height:544px;max-width:100%}.Design-module_footer__YubKC{height:56px}.Design-module_app_parakeet_design__container__FrvSK .Design-module_upload_dialog__fCkjQ{margin:0!important}.Design-module_upload_dialog__fCkjQ .rc-dialog-body{padding:0}@media screen and (max-width:959px){.Design-module_wrapper__WGJzH{padding:0 16px}.eva .parakeet-design--wrapper{padding:0}.flash .parakeet-design--wrapper{padding:0 8px}}"),
          _v.fabric.Object.prototype.transparentCorners = !1, _v.fabric.Object.prototype.cornerColor = "#fff", _v.fabric.Object.prototype.borderColor = "#599BFF", _v.fabric.Object.prototype.cornerStrokeColor = "#599BFF", _v.fabric.Object
          .prototype.cornerSize = 8;
        var OS = mt(((e, t) => {
            var {
              data: n,
              visible: r,
              onAddFIle: i,
              setTab: o,
              onDelete: a,
              fileName: s,
              hasChangeSave: l
            } = e, c = Je(null), [u, h] = qe(""), [p, d] = qe(null), [f, g] = qe(), [m, v] = qe(), [b, y] = qe(!0), [w, x] = qe(!1), {
              formatMessage: k
            } = zi(), [C, D] = qe(""), [I, R] = qe(""), [j, N] = Od(), [L, F] = qe([]), [B, z] = qe({}), H = (e, t) => {
              var n = [...L];
              L.forEach(((t, r) => {
                var i;
                e.includes(t.label_id) && (u.remove(null === (i = L[r]) || void 0 === i ? void 0 : i.el), n.splice(r, 1, ""))
              }));
              var r = n.filter((e => e));
              F(r), r.length || t()
            };
            Qe(t, (() => ({
              compositeUrl: C,
              removeImg: H,
              uploadFile: K
            })));
            var U = t => {
                t.lockScalingFlip = !0, t.on("scaling", (() => {
                  (e => {
                    var {
                      width: t,
                      height: n,
                      scaleX: r,
                      scaleY: i
                    } = e;
                    r * t > O && (e.scaleX = O / t), r * t < T && (e.scaleX = T / t), i * n > O && (e.scaleY = O / n), i * n < T && (e.scaleY = T / n);
                    var o = Math.ceil(t * e.scaleX),
                      a = Math.ceil(n * e.scaleY);
                    g({
                      width: o,
                      height: a
                    })
                  })(t), e.hasChangeSave(!1)
                })), t.on("moving", (() => {
                  t.preTop = t.top, t.preLeft = t.left
                })), g((e => ({
                  height: Math.ceil(parseInt(e.getScaledHeight(), 10)),
                  width: Math.ceil(parseInt(e.getScaledWidth(), 10))
                }))(t))
              },
              W = (t, n, r) => {
                new _v.fabric.Image.fromURL(t, (function(i) {
                  (e => {
                    var {
                      width: t,
                      height: n
                    } = e, r = e.scaleX * t > O, i = e.scaleX * t < T, o = e.scaleY * n > O, a = e.scaleY * n < T;
                    r ? e.scaleX = O / t : i && (e.scaleX = T / t), o ? e.scaleY = O / n : a && (e.scaleY = T / n);
                    var s = Math.max(e.scaleX, e.scaleY);
                    (r || o || i || a) && !(s * t > O || s * t < T) && (e.scaleY = s, e.scaleX = s);
                    var l = Math.ceil(t * e.scaleX),
                      c = Math.ceil(n * e.scaleY);
                    e._initData = {
                      scaleX: e.scaleX,
                      scaleY: e.scaleY
                    }, g({
                      width: l,
                      height: c
                    })
                  })(i), (e => {
                    var {
                      scaleX: t,
                      scaleY: n,
                      width: r,
                      height: i
                    } = e, o = n * i, a = t * r, s = u.height - 36, l = u.width - 36, c = 1, h = o > s, p = a > l;
                    if (h && (c = s / i), p && (c = Math.min(l / r, c)), h || p) {
                      var d = c * r > T && c * i > T,
                        f = Math.max(l / r, s / i),
                        m = !d && No ? f : c = Math.min(l / r, c);
                      e.scaleX = m, e.scaleY = m;
                      var v = Math.ceil(r * e.scaleX),
                        _ = Math.ceil(i * e.scaleY);
                      g({
                        width: v,
                        height: _
                      }), e._initData = {
                        scaleX: m,
                        scaleY: m
                      }
                    }
                    e.setPositionByOrigin(new _v.fabric.Point(u.width / 2, u.height / 2))
                  })(i), u.add(i), (t => {
                    t.on("selected", (() => {
                      d(t), v(t.angle || 0), U(t), y(!1)
                    })), t.on("moving", (() => {
                      e.hasChangeSave(!1)
                    })), t.setControlVisible("mtr", !1)
                  })(i), u.setActiveObject(i), F([{
                    url: t,
                    el: i,
                    id: n,
                    label_id: r
                  }, ...L])
                }), {
                  crossOrigin: "anonymous"
                })
              };
            Ze((() => {
              var e = G();
              h(e), e.on("selection:cleared", (() => {
                y(!0)
              }))
            }), []);
            var V = e => {
                z(e);
                var t = new FileReader;
                t.readAsDataURL(e), t.onload = function(e) {
                  R(e.target.result), x(!0)
                }
              },
              X = e => {
                var t, {
                    uid: n
                  } = e,
                  r = [...L].findIndex((e => e.id === n));
                u.remove(null === (t = L[r]) || void 0 === t ? void 0 : t.el);
                var i = [...L];
                i.splice(r, 1), F(i)
              };
            Ze((() => (zc.$on(P, V), zc.$on(M, X), () => {
              zc.$off(P, V), zc.$off(M, X)
            })), [u, L]);
            var G = () => {
                var {
                  width: e,
                  height: t
                } = n, r = e - 4;
                return new _v.fabric.Canvas(c.current, {
                  height: t,
                  width: r,
                  backgroundColor: "#fff",
                  selection: !1
                })
              },
              Y = tt((e => {
                x(!1), R(""), null == a || a(e)
              }), [a]),
              q = tt((() => {
                var {
                  scaleX: e,
                  scaleY: t
                } = p._initData;
                p.set({
                  scaleX: e,
                  scaleY: t
                }), p.rotate(0), p.angle = 0, v(0), p.setPositionByOrigin(new _v.fabric.Point(u.width / 2, u.height / 2)), u.renderAll(), l(!1), g({
                  width: p.width * e,
                  height: p.height * t
                })
              }), [p, u, l]),
              K = () => {
                Z().then((e => {
                  D(e), u.discardActiveObject(), u.requestRenderAll(), y(!0), l(!0)
                })).catch((() => {
                  j.open({
                    content: k({
                      id: "image_upload_fail"
                    })
                  })
                }))
              },
              Z = () => {
                var e = u.toDataURL({
                  width: u.width,
                  height: u.height,
                  left: 0,
                  top: 0,
                  multiplier: 2,
                  format: A
                });
                if (!L.length) return Promise.resolve();
                var t = S(A);
                return _(E(e), t)
              },
              {
                width: $,
                height: J
              } = n,
              Q = $ - 4;
            return gl("div", {
              className: ul([
                [TS, "parakeet-design--wrapper"]
              ]),
              children: gl("div", {
                id: "app-parakeet-design--container",
                className: ul([wS, {
                  [xS]: r
                }, {
                  [kS]: !L.length
                }]),
                children: [gl("div", {
                  className: ul([L.length > 0 ? xS : CS]),
                  children: gl("canvas", {
                    ref: c
                  })
                }), !L.length && gl(yS, {
                  className: SS,
                  width: Q,
                  height: J,
                  onSuccess: e => {
                    i(e), V(e)
                  },
                  fieldName: s
                }), !b && gl(dS, {
                  defaultSize: f,
                  orderList: L,
                  defaultRotate: m || 0,
                  handleOperate: (t, n) => {
                    "size" === t ? (e => {
                      var {
                        width: t,
                        height: n
                      } = e, r = p.getOriginalSize();
                      p.set({
                        scaleX: t / r.width,
                        scaleY: n / r.height
                      })
                    })(n) : "rotate" === t ? (e => {
                      p.rotate(e), v(e)
                    })(n) : "order" === t && function() {
                      var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : [];
                      [...e].reverse().forEach((e => {
                        e.el.bringToFront()
                      })), F(e), u.renderAll()
                    }(n), e.hasChangeSave(!1), u.renderAll()
                  },
                  onReset: q,
                  onConfirm: K
                }), w && I && gl(h_, {
                  className: ES,
                  title: null,
                  onClose: () => {
                    x(!1), R("")
                  },
                  closable: !1,
                  maskClosable: !1,
                  visible: !0,
                  children: gl(Cv, {
                    file: B,
                    url: I,
                    onConfirm: e => {
                      W(e.dataUrl, e.uid, e.label_id), x(!1), R(""), o(), l(!1), window.scrollTo(0, 0)
                    },
                    onCancel: Y
                  })
                }), N]
              })
            })
          })),
          AS = (e, t) => e.currentStyle ? e.currentStyle[t] : getComputedStyle(e)[t];
        c(
        '.rc-dialog{margin:10px;position:relative;width:auto}.rc-dialog-wrap{-webkit-overflow-scrolling:touch;bottom:0;left:0;outline:0;overflow:auto;position:fixed;right:0;top:0;z-index:1050}.rc-dialog-title{font-size:14px;font-weight:700;line-height:21px;margin:0}.rc-dialog-content{background-clip:padding-box;background-color:#fff;border:none;border-radius:6px 6px;position:relative}.rc-dialog-close{background:transparent;border:0;color:#000;cursor:pointer;filter:alpha(opacity=20);font-size:21px;font-weight:700;line-height:1;opacity:.2;position:absolute;right:20px;text-decoration:none;text-shadow:0 1px 0 #fff;top:12px}.rc-dialog-close-x:after{content:"×"}.rc-dialog-close:hover{filter:alpha(opacity=100);opacity:1;text-decoration:none}.rc-dialog-header{background:#fff;border-bottom:1px solid #e9e9e9;border-radius:5px 5px 0 0;color:#666;padding:13px 20px 14px}.rc-dialog-body{padding:20px}.rc-dialog-footer{border-radius:0 0 5px 5px;border-top:1px solid #e9e9e9;padding:10px 20px;text-align:right}.rc-dialog-zoom-appear,.rc-dialog-zoom-enter{animation-duration:.3s;animation-fill-mode:both;animation-play-state:paused;animation-timing-function:cubic-bezier(.08,.82,.17,1);opacity:0}.rc-dialog-zoom-leave{animation-duration:.3s;animation-fill-mode:both;animation-play-state:paused;animation-timing-function:cubic-bezier(.6,.04,.98,.34)}.rc-dialog-zoom-appear.rc-dialog-zoom-appear-active,.rc-dialog-zoom-enter.rc-dialog-zoom-enter-active{animation-name:rcDialogZoomIn;animation-play-state:running}.rc-dialog-zoom-leave.rc-dialog-zoom-leave-active{animation-name:rcDialogZoomOut;animation-play-state:running}@keyframes rcDialogZoomIn{0%{opacity:0;transform:scale(0)}to{opacity:1;transform:scale(1)}}@keyframes rcDialogZoomOut{0%{transform:scale(1)}to{opacity:0;transform:scale(0)}}@media (min-width:768px){.rc-dialog{margin:30px auto;width:600px}}.rc-dialog-mask{background-color:#373737;background-color:rgba(55,55,55,.6);bottom:0;filter:alpha(opacity=50);height:100%;left:0;position:fixed;right:0;top:0;z-index:1050}.rc-dialog-mask-hidden{display:none}.rc-dialog-fade-appear,.rc-dialog-fade-enter{opacity:0}.rc-dialog-fade-appear,.rc-dialog-fade-enter,.rc-dialog-fade-leave{animation-duration:.3s;animation-fill-mode:both;animation-play-state:paused;animation-timing-function:cubic-bezier(.55,0,.55,.2)}.rc-dialog-fade-appear.rc-dialog-fade-appear-active,.rc-dialog-fade-enter.rc-dialog-fade-enter-active{animation-name:rcDialogFadeIn;animation-play-state:running}.rc-dialog-fade-leave.rc-dialog-fade-leave-active{animation-name:rcDialogFadeOut;animation-play-state:running}@keyframes rcDialogFadeIn{0%{opacity:0}to{opacity:1}}@keyframes rcDialogFadeOut{0%{opacity:1}to{opacity:0}}');
        var PS;

        function MS() {
          return MS = Object.assign ? Object.assign.bind() : function(e) {
            for (var t = 1; t < arguments.length; t++) {
              var n = arguments[t];
              for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r])
            }
            return e
          }, MS.apply(this, arguments)
        }
        c(
        '.rc-notification{align-items:flex-end;display:flex;max-height:100vh;overflow-y:auto;padding:10px;position:fixed;z-index:1000}.rc-notification-top,.rc-notification-topLeft,.rc-notification-topRight{flex-direction:column;top:0}.rc-notification-topRight{right:0}.rc-notification-notice{background:#fff;border:0 solid transparent;border-radius:3px 3px;box-shadow:0 0 10px rgba(0,0,0,.2);box-sizing:border-box;display:block;line-height:1.5;margin:12px 0;position:relative;width:auto}.rc-notification-notice-content{padding:7px 20px 7px 10px}.rc-notification-notice-closable .rc-notification-notice-content{padding-right:20px}.rc-notification-notice-close{color:#000;cursor:pointer;filter:alpha(opacity=20);font-size:16px;font-weight:700;line-height:1;opacity:.2;outline:none;position:absolute;right:5px;text-decoration:none;text-shadow:0 1px 0 #fff;top:3px}.rc-notification-notice-close-x:after{content:"×"}.rc-notification-notice-close:hover{filter:alpha(opacity=100);opacity:1;text-decoration:none}.rc-notification-fade{overflow:hidden;transition:all .3s}.rc-notification-fade-appear-start{opacity:0;transform:translateX(100%)}.rc-notification-fade-appear-active{opacity:1;transform:translateX(0)}');
        var DS = e => ue("svg", MS({
          width: 24,
          height: 24,
          fill: "none",
          xmlns: "http://www.w3.org/2000/svg"
        }, e), PS || (PS = ue("path", {
          d: "M6.992 5.342a1.167 1.167 0 0 0-1.65 1.65L10.35 12l-5.008 5.008a1.167 1.167 0 1 0 1.65 1.65L12 13.65l5.008 5.008a1.167 1.167 0 0 0 1.65-1.65L13.65 12l5.008-5.008a1.167 1.167 0 0 0-1.65-1.65L12 10.35 6.992 5.342Z",
          fill: "#333"
        })));
        var IS = {
            customize_not_complete: "商品定制未完成",
            select_add_price_tip: "选择{key}将加价{price}",
            add_price_tip: "{key}将加价{price}",
            select: "选择",
            cancel: "取消",
            size: "尺寸",
            rotate: "旋转",
            order: "顺序",
            width: "宽度",
            height: "高度",
            size_range: "尺寸范围",
            upload_img_price: "上传图片价格",
            image_upload_success: "图片上传成功",
            image_upload_fail: "图片上传失败 ",
            image_size_tip: "图片大小超过10M",
            url_confirm_title: "保存设计图",
            url_confirm_desc: "是否要保存并上传设计图至订单?",
            url_confirm_yes: "是的",
            url_confirm_no: "不需要",
            preview_personalization: "预览定制效果",
            view_product_image: "查看商品图集",
            font_color: "文本颜色",
            font: "字体",
            font_size: "字号",
            preview_range_tip: "请勿超出打印区域",
            "options.upload.large.text": "将您的图片拖放到此处,或者",
            "options.upload.large.text.mobile": "在此上传图片",
            "options.upload.large.browse": "浏览",
            "options.upload.large.limit": "接受 .gif、.jpg、.jpeg 和 .png,最大 10MB",
            "options.upload.large.maxfiles": "最大上传数量",
            upload_max_tip: "图片上传数量不应超过{max}张",
            image_upload_section_fail: "部分图片上传失败",
            required_tip: "此项为必填项"
          },
          RS = {
            hello: "hello",
            customize_not_complete: "Product customization is not completed",
            select_add_price_tip: "Selection of {key} will add {price} to the price",
            add_price_tip: "{key} will add {price} to the price",
            select: "Select",
            cancel: "Cancel",
            size: "Size",
            rotate: "Rotate",
            order: "Order",
            width: "Width",
            height: "Height",
            size_range: "Size range",
            upload_img_price: "Image upload price",
            image_upload_success: "Upload successfully",
            image_upload_fail: "Upload failed",
            image_size_tip: "Image size exceeds 10M",
            url_confirm_title: "Save your design",
            url_confirm_desc: "Do you want to save and upload the design to your order?",
            url_confirm_yes: "Yes",
            url_confirm_no: "No",
            preview_personalization: "Preview your personalization",
            view_product_image: "View original product image",
            font_color: "Font color",
            font: "Font",
            font_size: "Font size",
            preview_range_tip: "Please keep it inside the print area",
            "options.upload.large.text": "Drop your image here, or ",
            "options.upload.large.text.mobile": "Upload your image here",
            "options.upload.large.browse": "browse",
            "options.upload.large.limit": "Accepts .gif, .jpg, .jpeg, and .png, 10MB max",
            "options.upload.large.maxfiles": "Maximum number of uploads",
            upload_max_tip: "Maximum number of uploads: {max}",
            image_upload_section_fail: "Some images failed to upload",
            required_tip: "This is a required field"
          },
          jS = {
            customize_not_complete: "Produktanpassung nicht abgeschlossen",
            select_add_price_tip: "Wählen Sie {key} erhöht den Preis um {price}",
            add_price_tip: "{key} Addiert {price} zum Preis",
            select: "Wählen Sie",
            cancel: "Abbrechen",
            size: "Größe",
            rotate: "Drehen",
            order: "Bestellung",
            width: "Breite",
            height: "Höhe",
            size_range: "Größenbereich",
            upload_img_price: "Bildpreis hochladen",
            image_upload_success: "Bild erfolgreich hochgeladen",
            image_upload_fail: "Bild-Upload fehlgeschlagen ",
            image_size_tip: "Die Bildgröße überschreitet 10 MB",
            url_confirm_title: "Speichern Sie die Blaupause",
            url_confirm_desc: "Möchten Sie das Design speichern und in die Bestellung hochladen?",
            url_confirm_yes: "Ja",
            url_confirm_no: "unnötig",
            preview_personalization: "Sehen Sie sich Ihre Personalisierung in der Vorschau an",
            view_product_image: "Originalproduktbild ansehen",
            font_color: "Schriftfarbe",
            font: "Schriftart",
            font_size: "Schriftgröße",
            preview_range_tip: "Bitte bewahren Sie es innerhalb des Druckbereichs auf",
            "options.upload.large.text": "Legen Sie Ihr Bild hier ab oder ",
            "options.upload.large.text.mobile": "Laden Sie Ihr Bild hier hoch",
            "options.upload.large.browse": "stöbern Sie",
            "options.upload.large.limit": "Akzeptiert .gif, .jpeg, .jpg und .png, maximal 10 MB",
            "options.upload.large.maxfiles": "Maximale Anzahl an Uploads",
            upload_max_tip: "Maximale Anzahl an Uploads {max}",
            image_upload_section_fail: "Einige Bilder konnten nicht hochgeladen werden",
            required_tip: "Das ist ein Pflichtfeld"
          },
          NS = {
            customize_not_complete: "No se ha completado la personalización del producto",
            select_add_price_tip: "Seleccione {key} añadirá {price} al precio",
            add_price_tip: "{key} Añadir {price} al precio",
            select: "Seleccione",
            cancel: "Cancelar",
            size: "Tamaño",
            rotate: "Girar",
            order: "Pedir",
            width: "Anchura",
            height: "Altura",
            size_range: "Tamaño",
            upload_img_price: "Subir imagen precio",
            image_upload_success: "Imagen cargada con éxito",
            image_upload_fail: "Carga de imagen fallida",
            image_size_tip: "El tamaño de la imagen supera los 10M",
            url_confirm_title: "Guardar el plano",
            url_confirm_desc: "¿Quieres guardar y subir el diseño al pedido?",
            url_confirm_yes: "Sí",
            url_confirm_no: "innecesario",
            preview_personalization: "Vista previa de su personalización",
            view_product_image: "Ver imagen original del producto",
            font_color: "Color de fuente",
            font: "Fuente",
            font_size: "Tamaño de fuente",
            preview_range_tip: "Manténgalo dentro del área de impresión",
            "options.upload.large.text": "Suelta tu imagen aquí, o ",
            "options.upload.large.text.mobile": "Sube tu imagen aquí",
            "options.upload.large.browse": "navega",
            "options.upload.large.limit": "Acepta .gif, .jpeg, .jpg y .png, 10 MB máx",
            "options.upload.large.maxfiles": "Número máximo de subidas",
            upload_max_tip: "Número máximo de subidas {max}",
            image_upload_section_fail: "Algunas imágenes no se pudieron cargar",
            required_tip: "Este es un campo obligatorio"
          },
          LS = {
            customize_not_complete: "La personnalisation du produit n'est pas terminée",
            select_add_price_tip: "Sélectionner {key} ajoutera {price} au prix",
            add_price_tip: "{key} Ajouter {price} au prix",
            select: "Sélectionnez",
            cancel: "Annuler",
            size: "Taille",
            rotate: "Faire pivoter",
            order: "Commander",
            width: "Largeur",
            height: "Hauteur",
            size_range: "Gamme de taille",
            upload_img_price: "Télécharger le prix de l'image",
            image_upload_success: "Image téléchargée avec succès",
            image_upload_fail: "Le téléchargement de l'image a échoué ",
            image_size_tip: "La taille de l'image dépasse 10M",
            url_confirm_title: "Enregistrer le plan",
            url_confirm_desc: "Voulez-vous enregistrer et télécharger le design dans la commande ?",
            url_confirm_yes: "Oui",
            url_confirm_no: "nutile",
            preview_personalization: "Prévisualisez votre personnalisation",
            view_product_image: "Voir l'image originale du produit",
            preview_range_tip: "Veuillez le conserver à l'intérieur de la zone d'impression",
            font_color: "Couleur de la police",
            font: "Police de caractère",
            font_size: "Taille de police",
            "options.upload.large.text": "Déposez votre image ici, ou ",
            "options.upload.large.text.mobile": "Téléchargez votre image ici",
            "options.upload.large.browse": "parcourez",
            "options.upload.large.limit": "Accepte .gif, .jpeg, .jpg et .png, 10 Mo max",
            "options.upload.large.maxfiles": "Nombre maximal de téléchargements",
            upload_max_tip: "Nombre maximal de téléchargements: {max}",
            image_upload_section_fail: "Certaines images n'ont pas pu être téléchargées",
            required_tip: "Ceci est un champ obligatoire"
          },
          FS = {
            customize_not_complete: "Kustomisasi komoditas belum selesai",
            select_add_price_tip: "Memilih {key} akan menambahkan {price}",
            add_price_tip: "{key} akan menaikkan harga sebesar {price}",
            select: "memilih",
            cancel: "Membatalkan",
            size: "ukuran",
            rotate: "untuk memutar",
            order: "memesan",
            width: "lebar",
            height: "tinggi",
            size_range: "Kisaran ukuran",
            upload_img_price: "Unggah harga gambar",
            image_upload_success: "Gambar berhasil diunggah",
            image_upload_fail: "Pengunggahan gambar gagal",
            image_size_tip: "Ukuran gambar melebihi 10M",
            url_confirm_title: "Simpan cetak biru",
            url_confirm_desc: "Apakah Anda ingin menyimpan dan mengunggah desain ke pesanan?",
            url_confirm_yes: "Ya",
            url_confirm_no: "tidak perlu",
            preview_personalization: "Pratinjau personalisasi Anda",
            view_product_image: "Lihat gambar produk asli",
            font_color: "Warna huruf",
            font: "Fon",
            font_size: "Ukuran huruf",
            preview_range_tip: "Harap simpan di dalam area cetak",
            "options.upload.large.text": "Jatuhkan gambar Anda di sini, atau ",
            "options.upload.large.text.mobile": "Unggah gambar Anda di sini",
            "options.upload.large.browse": "jelajahi",
            "options.upload.large.limit": "Menerima .gif, .jpeg, .jpg, dan .png, maksimal 10MB",
            "options.upload.large.maxfiles": "Jumlah unggahan maksimum",
            upload_max_tip: "Jumlah unggahan maksimum {max}",
            image_upload_section_fail: "Beberapa gambar gagal diunggah",
            required_tip: "Ini adalah kolom yang harus diisi"
          },
          BS = {
            customize_not_complete: "Personalizzazione del prodotto non completata",
            select_add_price_tip: "Selezionare {key} aggiungerà {price} al prezzo",
            add_price_tip: "{key} Aggiungi {price} al prezzo",
            select: "Selezionare",
            cancel: "Annulla",
            size: "Dimensione",
            rotate: "Ruotare",
            order: "Ordine",
            width: "Larghezza",
            height: "Altezza",
            size_range: "Gamma di dimensioni",
            upload_img_price: "Carica il prezzo dell'immagine",
            image_upload_success: "Immagine caricata con successo",
            image_upload_fail: "Caricamento dell'immagine non riuscito",
            image_size_tip: "La dimensione dell'immagine supera i 10M",
            url_confirm_title: "Salva il progetto",
            url_confirm_desc: "Vuoi salvare e caricare il design nell'ordine?",
            url_confirm_yes: "SÌ",
            url_confirm_no: "non necessario",
            preview_personalization: "Visualizza in anteprima la tua personalizzazione",
            view_product_image: "Visualizza l'immagine del prodotto originale",
            font_color: "Visualizza l'immagine del prodotto originale",
            font: "Font",
            font_size: "Dimensione del font",
            preview_range_tip: "Si prega di tenerlo all'interno dell'area di stampa",
            "options.upload.large.text": "Trascina qui la tua immagine o ",
            "options.upload.large.text.mobile": "Carica qui la tua immagine",
            "options.upload.large.browse": "sfoglia",
            "options.upload.large.limit": "Accetta .gif, .jpeg, .jpg e .png, 10 MB max",
            "options.upload.large.maxfiles": "Numero massimo di caricamenti",
            upload_max_tip: "Numero massimo di caricamenti {max}",
            image_upload_section_fail: "Impossibile caricare alcune immagini",
            required_tip: "Questo è un campo obbligatorio"
          },
          zS = {
            customize_not_complete: "製品のカスタマイズが完了しない",
            select_add_price_tip: "セレクト{key} を選択すると、価格に{price}ドルが加算されます",
            add_price_tip: "{key} 価格に{price}を加算する ",
            select: "選択する",
            cancel: "キャンセル",
            size: "サイズ",
            rotate: "回転させる",
            order: "注文方法",
            width: "幅",
            height: "高さ",
            size_range: "サイズ範囲",
            upload_img_price: "画像の価格をアップロードする",
            image_upload_success: "画像が正常にアップロードされました",
            image_upload_fail: "画像のアップロードに失敗しました",
            image_size_tip: "画像サイズが10Mを超える.",
            url_confirm_title: "設計図を保存する",
            url_confirm_desc: "デザインを保存して注文にアップロードしますか?",
            url_confirm_yes: "はい",
            url_confirm_no: "不要",
            preview_personalization: "パーソナライズをプレビューする",
            view_product_image: "元の製品画像を見る",
            font_color: "文字の色",
            font: "フォント",
            font_size: "フォントサイズ",
            preview_range_tip: "印刷範囲内に収めてください",
            "options.upload.large.text": "ここに画像をドロップするか、参照してください",
            "options.upload.large.text.mobile": "ここに画像をアップロードしてください",
            "options.upload.large.browse": "閲覧",
            "options.upload.large.limit": ".gif、.jpg、.jpeg、.png を受け入れ、最大 10MB",
            "options.upload.large.maxfiles": "最大アップロード数",
            upload_max_tip: "最大アップロード数 {max}",
            image_upload_section_fail: "一部の画像のアップロードに失敗しました",
            required_tip: "これは必要項目です"
          },
          HS = {
            customize_not_complete: "제품 사용자 지정이 완료되지 않았습니다.",
            select_add_price_tip: "선택 {key} 가격에 {price}달러가 추가됩니다",
            add_price_tip: "{key} Ajouter {price} ",
            select: "선택",
            cancel: "취소",
            size: "사이즈",
            rotate: "회전",
            order: "주문",
            width: "폭",
            height: "높이",
            size_range: "크기 범위",
            upload_img_price: "이미지 가격 업로드",
            image_upload_success: "이미지가 성공적으로 업로드되었습니다.",
            image_upload_fail: "이미지 업로드 실패 ",
            image_size_tip: "이미지 크기가 10M를 초과합니다.",
            url_confirm_title: "청사진 저장",
            url_confirm_desc: "디자인을 저장하고 오더에 업로드하시겠습니까?",
            url_confirm_yes: "예",
            url_confirm_no: "불필요한",
            preview_personalization: "개인화 미리보기",
            view_product_image: "원본 제품 이미지 보기",
            preview_range_tip: "인쇄 영역 안에 보관하십시오",
            font_color: "글꼴 색상",
            font: "폰트",
            font_size: "글꼴 크기",
            "options.upload.large.text": "이미지를 여기로 드래그 앤 드롭하거나",
            "options.upload.large.text.mobile": "여기에 이미지 업로드",
            "options.upload.large.browse": "검색",
            "options.upload.large.limit": ".gif, .jpeg, .jpg 및 .png 허용, 최대 10MB",
            "options.upload.large.maxfiles": "최대 업로드 수",
            upload_max_tip: "최대 업로드 수 {max}",
            image_upload_section_fail: "일부 이미지를 업로드하지 못했습니다",
            required_tip: "필수 입력란입니다."
          },
          US = {
            "en-us": RS,
            "zh-cn": IS,
            "zh-tw": {
              customize_not_complete: "商品定制未完成",
              select_add_price_tip: "選擇{key}將加價{price}",
              add_price_tip: "{key}將加價{price}",
              select: "選擇",
              cancel: "取消",
              size: "尺寸",
              rotate: "旋轉",
              order: "順序",
              width: "寬度",
              height: "高度",
              size_range: "尺寸範圍",
              upload_img_price: "上傳圖片價格",
              image_upload_success: "圖片上傳成功",
              image_upload_fail: "圖片上傳失敗",
              image_size_tip: "圖片大小超過10M",
              url_confirm_title: "保存设计图",
              url_confirm_desc: "是否要保存并上传设计图至订单?",
              url_confirm_yes: "是的",
              url_confirm_no: "不需要",
              preview_personalization: "預覽定制效果",
              view_product_image: "查看商品圖集",
              font_color: "文本顏色",
              font: "字體",
              font_size: "字號",
              preview_range_tip: "請勿超出打印區域",
              "options.upload.large.text": "將您的圖片拖放到此處,或",
              "options.upload.large.text.mobile": "在此上傳圖片",
              "options.upload.large.browse": "瀏覽",
              "options.upload.large.limit": "接受 .gif、.jpg、.jpeg 和 .png,最大 10MB",
              "options.upload.large.maxfiles": "最大上傳數量",
              upload_max_tip: "圖片上傳數量不應超過{max}張",
              image_upload_section_fail: "部分圖片上傳失敗",
              required_tip: "此項為必填項"
            },
            "th-th": {
              customize_not_complete: "การปรับแต่งสินค้าไม่เสร็จสมบูรณ์",
              select_add_price_tip: "การเลือก{key}จะเพิ่ม {price}",
              add_price_tip: "{key}จะเพิ่มราคาอีก{price}",
              select: "เลือก",
              cancel: "ยกเลิก",
              size: "ขนาด",
              rotate: "เพื่อหมุน",
              order: "คำสั่ง",
              width: "ความกว้าง",
              height: "สูง",
              size_range: "ช่วงขนาด",
              upload_img_price: "อัพโหลดภาพราคา",
              image_upload_success: "อัปโหลดรูปภาพสำเร็จแล้ว",
              image_upload_fail: "การอัปโหลดรูปภาพล้มเหลว ",
              image_size_tip: "ขนาดภาพเกิน 10M",
              url_confirm_title: "บันทึกพิมพ์เขียว",
              url_confirm_desc: "คุณต้องการบันทึกและอัปโหลดการออกแบบไปยังคำสั่งซื้อหรือไม่",
              url_confirm_yes: "ใช่",
              url_confirm_no: "ไม่จำเป็น",
              preview_personalization: "ดูตัวอย่างการปรับเปลี่ยนในแบบของคุณ",
              view_product_image: "ดูภาพผลิตภัณฑ์ต้นฉบับ",
              preview_range_tip: "โปรดเก็บไว้ในพื้นที่พิมพ์",
              font_color: "สีตัวอักษร",
              font: "แบบอักษร",
              font_size: "ขนาดตัวอักษร",
              "options.upload.large.text": "ลากและวางรูปภาพของคุณที่นี่",
              "options.upload.large.text.mobile": "อัปโหลดภาพของคุณที่นี่",
              "options.upload.large.browse": "เรียกดู",
              "options.upload.large.limit": "ยอมรับ .gif, .jpeg, .jpg และ .png ขนาดสูงสุด 10MB",
              "options.upload.large.maxfiles": "จำนวนการอัปโหลดสูงสุด",
              upload_max_tip: "จำนวนการอัปโหลดสูงสุด {max}",
              image_upload_section_fail: "ภาพบางภาพไม่สามารถอัปโหลดได้",
              required_tip: "นี่คือข้อมูลที่จำเป็น"
            },
            "fr-fr": LS,
            "ko-kr": HS,
            "ja-jp": zS,
            "es-es": NS,
            "pt-pt": {
              customize_not_complete: "Personalização do produto não concluída",
              select_add_price_tip: "Seleccione {key} adicionará {price} ao preço",
              add_price_tip: "{key} Añadir {price} al precio",
              select: "Seleccione",
              cancel: "Cancelar",
              size: "Tamanho",
              rotate: "Rodar",
              order: "Encomenda",
              width: "Largura",
              height: "Altura",
              size_range: "Gama de tamanhos",
              upload_img_price: "Carregar preço da imagem",
              image_upload_success: "Imagem enviada com sucesso",
              image_upload_fail: "Falha no upload da imagem",
              image_size_tip: "O tamanho da imagem excede 10M",
              url_confirm_title: "Salve o projeto",
              url_confirm_desc: "Deseja salvar e enviar o design para o pedido?",
              url_confirm_yes: "Sim",
              url_confirm_no: "desnecessário",
              preview_personalization: "Visualize sua personalização",
              view_product_image: "Veja a imagem original do produto",
              font_color: "Cor da fonte",
              font: "Fonte",
              font_size: "Tamanho da fonte",
              preview_range_tip: "Por favor, mantenha-o dentro da área de impressão",
              "options.upload.large.text": "Solte sua imagem aqui ou ",
              "options.upload.large.text.mobile": "Carregue sua imagem aqui",
              "options.upload.large.browse": "navegue",
              "options.upload.large.limit": "Aceita .gif, .jpeg, .jpg e .png, máximo de 10 MB",
              "options.upload.large.maxfiles": "Número máximo de carregamentos",
              upload_max_tip: "Número máximo de carregamentos {max}",
              image_upload_section_fail: "Algumas imagens não foram carregadas",
              required_tip: "Este é um campo obrigatório"
            },
            "ru-ru": {
              customize_not_complete: "Настройка продукта не завершена",
              select_add_price_tip: "Выберите {key} добавит {price} к цене",
              add_price_tip: "{key} Добавить {price} к цене",
              select: "Выберите",
              cancel: "Отменить",
              size: "Размер",
              rotate: "Повернуть",
              order: "Заказать",
              width: "Ширина",
              height: "Высота",
              size_range: "Диапазон размеров",
              upload_img_price: "Загрузить изображение цена",
              image_upload_success: "Изображение успешно загружено",
              image_upload_fail: "Не удалось загрузить изображение",
              image_size_tip: "Размер изображения превышает 10M",
              url_confirm_title: "Сохраните план",
              url_confirm_desc: "Хотите сохранить и загрузить дизайн в заказ?",
              url_confirm_yes: "Да",
              url_confirm_no: "ненужный",
              preview_personalization: "Предварительный просмотр вашей персонализации",
              view_product_image: "Посмотреть исходное изображение продукта",
              font_color: "Цвет шрифта",
              font: "Цвет шрифта",
              font_size: "Размер шрифта",
              preview_range_tip: "Пожалуйста, держите его внутри области печати",
              "options.upload.large.text": "Перетащите свое изображение сюда или ",
              "options.upload.large.text.mobile": "Загрузите свое изображение сюда",
              "options.upload.large.browse": "просматривать",
              "options.upload.large.limit": "Принимаются форматы .gif, .jpeg, .jpg и .png, не более 10 МБ",
              "options.upload.large.maxfiles": "Максимальное количество загрузок",
              upload_max_tip: "Максимальное количество загрузок {max}",
              image_upload_section_fail: "Не удалось загрузить некоторые изображения",
              required_tip: "Данное поле является обязательным к заполнению"
            },
            "it-it": BS,
            "ar-sa": {
              customize_not_complete: "لم يتم الانتهاء من تخصيص السلع",
              select_add_price_tip: "{price} سيضيف {key} تحديد",
              add_price_tip: "{key} سيزيد السعر بمقدار {price} دولار",
              select: "يختار",
              cancel: "يلغي",
              size: "مقاس",
              rotate: "لتدوير",
              order: "طلب",
              width: "عرض",
              height: "عالي",
              size_range: "نطاق الحجم",
              upload_img_price: "سعر تحميل الصورة",
              image_upload_success: "تم تحميل الصورة بنجاح",
              image_upload_fail: "فشل تحميل الصورة",
              image_size_tip: "10M حجم الصورة يتجاوز",
              url_confirm_title: "احفظ المخطط",
              url_confirm_desc: "هل تريد حفظ وتحميل التصميم على الطلب؟",
              url_confirm_yes: "نعم",
              url_confirm_no: "غير ضروري",
              preview_personalization: "معاينة التخصيص الخاص بك",
              view_product_image: "عرض صورة المنتج الأصلي",
              font_color: "لون الخط",
              font: "الخط",
              font_size: "حجم الخط",
              preview_range_tip: "يرجى الاحتفاظ بها داخل منطقة الطباعة",
              "options.upload.large.text": "ضع صورتك هنا ، أو ",
              "options.upload.large.text.mobile": "قم بتحميل صورتك هنا",
              "options.upload.large.browse": "تصفح",
              "options.upload.large.limit": "يقبل .gif و. jpeg و. jpg و. png ، بحد أقصى 10 ميغابايت",
              "options.upload.large.maxfiles": "أقصى عدد للتحميلات",
              upload_max_tip: "أقصى عدد للتحميلات {max}",
              image_upload_section_fail: "فشل تحميل بعض الصور",
              required_tip: "هذا مجال مطلوب"
            },
            "id-id": FS,
            "de-de": jS,
            "nl-nl": {
              customize_not_complete: "Productaanpassing niet voltooid",
              select_add_price_tip: "Selecteer {key} zal {price} toevoegen aan de prijs",
              add_price_tip: "{key} Voeg {price} toe aan de prijs",
              select: "Selecteer",
              cancel: "Annuleren",
              size: "Maat",
              rotate: "Draai",
              order: "Bestel",
              width: "Breedte",
              height: "Hoogte",
              size_range: "Maatbereik",
              upload_img_price: "Prijs afbeelding uploaden",
              image_upload_success: "Afbeelding geüpload",
              image_upload_fail: "Het uploaden van afbeeldingen is mislukt",
              image_size_tip: "De afbeeldingsgrootte overschrijdt 10M",
              url_confirm_title: "Bewaar de blauwdruk",
              url_confirm_desc: "Wil je het ontwerp opslaan en uploaden naar de bestelling?",
              url_confirm_yes: "Ja",
              url_confirm_no: "onnodig",
              preview_personalization: "Bekijk een voorbeeld van uw personalisatie",
              view_product_image: "Bekijk de originele productafbeelding",
              font_color: "Letterkleur",
              font: "Lettertype",
              font_size: "Lettertypegrootte",
              preview_range_tip: "Bewaar het binnen het afdrukgebied",
              "options.upload.large.text": "Zet je afbeelding hier neer, of ",
              "options.upload.large.text.mobile": "Upload hier uw afbeelding",
              "options.upload.large.browse": "blader",
              "options.upload.large.limit": "Accepteert .gif, .jpeg, .jpg en .png, max. 10 MB",
              "options.upload.large.maxfiles": "Maximaal aantal uploads",
              upload_max_tip: "Maximaal aantal uploads {max}",
              image_upload_section_fail: "Sommige afbeeldingen konden niet worden geüpload",
              required_tip: "dit is een verplicht veld"
            },
            "pl-pl": {
              customize_not_complete: "Dostosowanie produktu nie zostało zakończone",
              select_add_price_tip: "Wybranie {key} doda {price}",
              add_price_tip: "{key} podniesie cenę o {price}",
              select: "wybierać",
              cancel: "Anulować",
              size: "rozmiar",
              rotate: "obrócić",
              order: "zamówienie",
              width: "szerokość",
              height: "wysoki",
              size_range: "Zakres rozmiarów",
              upload_img_price: "Prześlij cenę zdjęcia",
              image_upload_success: "Obraz przesłany pomyślnie",
              image_upload_fail: "Przesyłanie obrazu nie powiodło się",
              image_size_tip: "Rozmiar obrazu przekracza 10M",
              url_confirm_title: "Zapisz plan",
              url_confirm_desc: "Chcesz zapisać i wgrać projekt do zamówienia?",
              url_confirm_yes: "ak",
              url_confirm_no: "niepotrzebny",
              preview_personalization: "Wyświetl podgląd swojej personalizacji",
              view_product_image: "Zobacz oryginalne zdjęcie produktu",
              font_color: "Kolor czcionki",
              font: "Czcionka",
              font_size: "Rozmiar czcionki",
              preview_range_tip: "Proszę trzymać go w obszarze drukowania",
              "options.upload.large.text": "Upuść swój obraz tutaj lub ",
              "options.upload.large.text.mobile": "Prześlij swój obraz tutaj",
              "options.upload.large.browse": "Uprzeglądaj",
              "options.upload.large.limit": "Akceptuje pliki .gif, .jpeg, .jpg i .png, maks. 10 MB",
              "options.upload.large.maxfiles": "Maksymalna liczba przesłanych plików",
              upload_max_tip: "Maksymalna liczba przesłanych plików {max}",
              image_upload_section_fail: "Nie udało się przesłać niektórych obrazów",
              required_tip: "To pole jest wymagane"
            }
          },
          WS = e => t => {
            var n, r = (null === (n = document.documentElement.lang) || void 0 === n ? void 0 : n.toLowerCase()) || N,
              i = et((() => US[r] || US["en-us"]), [r]);
            return gl(Gi, {
              messages: i,
              locale: r,
              defaultLocale: N,
              children: gl(e, h({}, t))
            })
          },
          VS = e => {
            var t, n, r, i = [];
            try {
              var o;
              null == e || e.forEach((e => {
                var t, n;
                e.isHidden && null !== (t = e.preview_setting) && void 0 !== t && t.preview_open && (null === (n = e.preview_setting.data) || void 0 === n || n.forEach((e => {
                  var t;
                  null === (t = e.cards) || void 0 === t || t.forEach((e => {
                    e.isShow = !1
                  }))
                })))
              }));
              var a = bv.exports.cloneDeep(e.filter((e => {
                var t;
                return null === (t = e.preview_setting) || void 0 === t ? void 0 : t.preview_open
              })));
              if (null == a || !a.length) return [];
              null == a || a.forEach((e => {
                if (2 === e.preview_setting.type) {
                  var t;
                  if (null !== (t = e.preview_setting.data.filter((e => e.bgSelected))) && void 0 !== t && t.length) {
                    var n = e.preview_setting.data.filter((e => e.bgSelected))[0];
                    i.push(h(h({}, n), {}, {
                      orders: [e.order]
                    }))
                  }
                } else {
                  var r = e.preview_setting.data[0];
                  i.push(h(h({}, r), {}, {
                    orders: [e.order]
                  }))
                }
              }));
              var s = bv.exports.cloneDeep(i);
              null === (o = i) || void 0 === o || o.forEach((e => {
                var t, n = [],
                  r = [];
                null === (t = s.filter((t => e.bg_image_url === t.bg_image_url))) || void 0 === t || t.forEach((e => {
                  n = n.concat(e.cards), r = r.concat(e.orders)
                })), e.cards = n, e.orders = r
              })), t = i, n = "bg_image_url", r = new Map, i = t.filter((e => !r.has(e[n]) && r.set(e[n], 1)))
            } catch (e) {
              return []
            }
            return i
          };

        function XS(e) {
          return e.startsWith("http") ? e : "https:".concat(e)
        }
        var GS = (e, t) => {
          var {
            tl: n,
            tr: r,
            bl: i,
            br: o
          } = e.aCoords, {
            tl: a,
            tr: s,
            bl: l,
            br: c
          } = t.aCoords;
          return n.x >= a.x && n.x <= s.x && n.y >= s.y && n.y <= c.y && r.x >= a.x && r.x <= s.x && r.y >= s.y && r.y <= c.y && i.x >= a.x && i.x <= s.x && i.y >= s.y && i.y <= c.y && o.x >= a.x && o.x <= s.x && o.y >= s.y && o.y <= c.y
        };
        _v.fabric.Object.prototype.set({
          borderColor: "#599BFF",
          cornerColor: "#fff",
          cornerStrokeColor: "#599BFF",
          cornerSize: 8,
          transparentCorners: !1
        });
        var YS, qS, KS = {
            text: [],
            upload: []
          },
          ZS = e => {
            var t = KS[e.configType];
            t.push(h({}, e)), t.length > 20 && t.shift()
          },
          $S = dt((e => {
            var {
              width: t = 0,
              height: n = 0,
              previewInfo: r = {},
              isShow: i,
              index: o,
              data: a,
              setData: s,
              variantID: l
            } = e, {
              formatMessage: c
            } = zi(), [u, h] = qe(null), [p, d] = qe(!1), [f, g] = Od(), m = et((() => Math.min(t, n)), [t, n]), v = et((() => m / Math.max(r.bg_image_width, r.bg_image_height)), [m, r]), _ = et((() => m / 560), [m]);
            Ze((() => {
              var e = new _v.fabric.Canvas(r.bg_image_url, {
                preserveObjectStacking: !0
              });
              h(e)
            }), [r.bg_image_url]), Ze((() => {
              u && (W.addInstance(u, o), W.addImgOrders(r.orders, o), u.wrapperEl.style.margin = "0 auto", u.selection = !1, u.preserveObjectStacking = !0)
            }), [u, o, l]), Ze((() => {
              null == u || u.clear(), KS = {
                text: [],
                upload: []
              }
            }), [l]);
            var b = () => {
              setTimeout((() => {
                u.getObjects().forEach((e => {
                  "text" == e.configType && e.previewOrder && e.moveTo(e.previewOrder)
                })), u.renderAll()
              }))
            };
            return Ze((() => {
              if (u) return zc.$on(H, e), zc.$on(U, t), () => {
                zc.$off(H, e), zc.$off(U, t)
              };

              function e(e) {
                var t = u.getObjects().find((function(t) {
                  return t.fid === e && "img" === t.fidType
                }));
                t && (u.setActiveObject(t), b(), u.renderAll())
              }

              function t() {
                d(!0), setTimeout((() => {
                  u.discardActiveObject(), b(), u.renderAll(), d(!1)
                }))
              }
            }), [u]), Ze((() => {
              var e;
              u && (u.backgroundImage || u.setBackgroundImage(XS(r.bg_image_url), u.renderAll.bind(u), {
                scaleX: v,
                scaleY: v,
                left: m / 2,
                top: m / 2,
                originX: "center",
                originY: "center",
                crossOrigin: !0
              }), null === (e = r.cards) || void 0 === e || e.forEach(((e, t) => {
                if ("swatch" === e.configType) {
                  var n = u.getObjects().find((function(t) {
                    return t.fid === e.fid
                  }));
                  n && !e.isShow && u.remove(n), !n && e.isShow && _v.fabric.Image.fromURL(XS(e.value), (t => {
                    t.top = e.top * _, t.left = e.left * _, t.scaleX = e.scaleX ? e.scaleX * _ : e.width / t.width, t.scaleY = e.scaleY ? e.scaleY * _ : e.height / t.height, t.angle = e.angle, t.selectable = !1, t
                      .hoverCursor = "default", t.fid = e.fid, u.insertAt(t, e.previewOrder), u.renderAll()
                  }), {
                    crossOrigin: "anonymous"
                  })
                }
                if ("upload" === e.configType) {
                  var i = u.getObjects().find((function(t) {
                    return t.fid === e.configFid
                  }));
                  if (u.getObjects().forEach((t => {
                      t.fid !== e.configFid || e.isShow || u.remove(t)
                    })), !i && e.isShow) {
                    var o = new _v.fabric.Rect({
                      left: e.print_area_left * _,
                      top: e.print_area_top * _,
                      width: e.print_area_width * e.scaleX * _,
                      height: e.print_area_height * e.scaleY * _,
                      fill: "transparent",
                      selectable: !1,
                      hoverCursor: "default",
                      fid: e.configFid,
                      shapeType: "boundsReact",
                      configType: e.configType,
                      evented: !1
                    });
                    ("down" === (null == e ? void 0 : e.upload_img_level) ? new Promise(((t, n) => {
                      _v.fabric.Image.fromURL(XS(r.bg_image_url), (n => {
                        n.set({
                          scaleX: v,
                          scaleY: v,
                          left: m / 2,
                          top: m / 2,
                          originX: "center",
                          originY: "center",
                          crossOrigin: !0,
                          evented: !1,
                          fid: e.configFid,
                          configType: e.configType
                        }), t(n)
                      }), {
                        crossOrigin: "anonymous"
                      })
                    })) : new Promise(((e, t) => {
                      e(null)
                    }))).then((t => {
                      _v.fabric.Image.fromURL(e.uploadDataUrl, (n => {
                        var {
                          left: r,
                          top: i,
                          scale: a
                        } = ((e, t) => {
                          var n = e.width,
                            r = e.height,
                            i = n / r,
                            o = t.left + 4,
                            a = t.top + 4,
                            s = t.width - 8,
                            l = t.height - 8,
                            c = s / l,
                            u = 1,
                            h = 0,
                            p = 0;
                          return (i > c || i === c) && (n > s ? (h = o, p = a + (l - r * (u = s / n)) / 2) : (u = 1, h = o + (s - n) / 2, p = a + (l - r) / 2)), i < c && (r > l ? (h = o + (s - n * (u = l / r)) / 2,
                            p = a) : (u = 1, h = o + (s - n) / 2, p = a + (l - r) / 2)), {
                            scale: u,
                            left: h,
                            top: p
                          }
                        })(n, o);
                        n.set({
                          left: r,
                          top: i,
                          scaleX: a,
                          scaleY: a,
                          fid: e.configFid,
                          configType: e.configType,
                          fidType: "img"
                        }), n.scaleToWidth(n.width * a), n.scaleToHeight(n.height * a), u.insertAt(o, e.previewOrder), u.insertAt(n, e.previewOrder), t && u.insertAt(t, e.previewOrder), u.renderAll()
                      }), {
                        crossOrigin: "anonymous"
                      })
                    }))
                  }
                }
                if ("text" === e.configType && (u.getObjects().find((function(t) {
                    return t.fid === e.configFid
                  })), u.getObjects().forEach((t => {
                    t.fid === e.configFid && e.focusing && u.remove(t)
                  })), e.isShow && e.focusing)) {
                  if (e.moveabled) {
                    var s = new _v.fabric.Rect({
                        left: e.print_area_left * _,
                        top: e.print_area_top * _,
                        width: e.print_area_width * (e.print_scale_x || 1) * _,
                        height: e.print_area_height * (e.print_scale_y || 1) * _,
                        fill: e.fill || "transparent",
                        selectable: !1,
                        angle: e.print_area_angle || 0,
                        fid: e.fid,
                        shapeType: "boundsReact",
                        hoverCursor: "default",
                        statefullCache: !0,
                        configType: e.configType,
                        evented: !1
                      }),
                      h = new _v.fabric.Textbox(e.textValue || "", {
                        padding: 0,
                        fontSize: e.textSize || 30,
                        fill: e.textColor || "black",
                        width: e.width ? e.width : e.print_area_width * (e.print_scale_x || 1) * _ - 8,
                        top: e.text_top ? e.text_top * _ : (e.print_area_height * (e.print_scale_y || 1) / 2 + e.print_area_top) * _ - e.textSize / 2,
                        left: e.text_left ? e.text_left * _ : e.print_area_left * _,
                        scaleX: e.scaleX ? e.scaleX * _ : 1,
                        scaleY: e.scaleY ? e.scaleY * _ : 1,
                        fontFamily: e.textFont,
                        fid: e.fid,
                        angle: e.text_angle || 0,
                        focusing: e.focusing,
                        lockScalingX: !0,
                        lockScalingY: !0,
                        splitByGrapheme: !0,
                        editable: !1,
                        textAlign: "center",
                        configType: e.configType,
                        previewOrder: e.previewOrder
                      });
                    u.insertAt(s, e.previewOrder), u.insertAt(h, e.previewOrder), !e.focusing || e.isInit || p || u.setActiveObject(h), u.renderAll()
                  } else {
                    var d = new _v.fabric.Text(e.textValue || "", {
                      fontSize: e.textSize || 30,
                      fill: e.textColor || "black",
                      top: e.text_top * _,
                      left: e.text_left * _,
                      scaleX: e.scaleX ? e.scaleX * _ : 1,
                      scaleY: e.scaleY ? e.scaleY * _ : 1,
                      angle: e.text_angle || 0,
                      fontFamily: e.textFont,
                      fid: e.fid,
                      focusing: e.focusing,
                      lockScalingX: !0,
                      lockScalingY: !0,
                      splitByGrapheme: !0,
                      selectable: !1,
                      hoverCursor: "default",
                      lockRotation: !0,
                      originX: "center",
                      originY: "center",
                      configType: e.configType
                    });
                    u.insertAt(d, e.previewOrder)
                  }
                  u.renderAll()
                }
                setTimeout((() => {
                  u.renderAll()
                })), u && u.off("after:render"), u && u.off("mouse:up"), u && u.on("mouse:up", (() => {
                  var e = u.getObjects(),
                    t = u.getActiveObject();
                  if (e.forEach((e => {
                      t && t.fid === e.fid || "text" != e.configType || !e.previewOrder || e.moveTo(e.previewOrder)
                    })), t) {
                    var n = e.find((e => e.fid === t.fid && "boundsReact" === e.shapeType));
                    if (!GS(t, n)) {
                      var r = KS[t.configType],
                        i = r[r.length - 1];
                      if (!i) return;
                      t.set({
                        width: i.width,
                        height: i.height,
                        left: i.left,
                        top: i.top,
                        angle: i.angle || 0,
                        scaleX: i.scaleX || 1,
                        scaleY: i.scaleY || 1
                      }), u.renderAll()
                    }
                  }
                })), u && u.on("after:render", (() => {
                  var e = u.getObjects(),
                    t = u.getActiveObject();
                  if (t) {
                    var n = e.find((e => e.fid === t.fid && "boundsReact" === e.shapeType));
                    "text" === t.configType ? a.forEach(((e, r) => {
                      var i;
                      e.fid === t.fid && (l && e.preview_setting.data.length > 1 ? e.preview_setting.data.forEach((n => {
                        n.variant_id && n.variant_id === l && (n.cards[0].text_height = t.height, n.cards[0].text_width = t.width, n.cards[0].text_left = t.left / _, n.cards[0].text_top = t.top / _, n.cards[
                          0].text_angle = t.angle, n.cards[0].text_size = t.fontSize, n.cards[0].scaleX = t.scaleX / _, n.cards[0].scaleY = t.scaleY / _, e.preview_setting.moveabled && (n.cards[0].width =
                          t.width))
                      })) : 1 != e.preview_setting.data.length || null !== (i = e.preview_setting.data[0]) && void 0 !== i && i.variant_id || (e.preview_setting.data[0].cards[0].text_height = t.height, e
                        .preview_setting.data[0].cards[0].text_width = t.width, e.preview_setting.data[0].cards[0].text_left = t.left / _, e.preview_setting.data[0].cards[0].text_top = t.top / _, e
                        .preview_setting.data[0].cards[0].text_angle = t.angle, e.preview_setting.data[0].cards[0].text_size = t.fontSize, e.preview_setting.data[0].cards[0].scaleX = t.scaleX / _, e
                        .preview_setting.data[0].cards[0].scaleY = t.scaleY / _, e.preview_setting.moveabled && (e.preview_setting.data[0].cards[0].width = t.width)), e.preview_setting.moveabled && (GS(t, n) ? (
                        ZS(t), n.fill = "transparent", e.preview_setting.data[0].cards[0].fill = "transparent") : (n.fill = "rgba(221, 29, 24, 0.3)", e.preview_setting.data[0].cards[0].fill =
                        "rgba(221, 29, 24, 0.3)", f.destroy(), f.open({
                          content: c({
                            id: "preview_range_tip"
                          })
                        }))))
                    })) : GS(t, n) ? (ZS(t), n.set("fill", "transparent")) : (n.set("fill", "rgba(221, 29, 24, 0.3)"), f.destroy(), f.open({
                      content: c({
                        id: "preview_range_tip"
                      })
                    }))
                  }
                }))
              })), setTimeout((() => {
                u.renderAll()
              })))
            }), [r, u]), gl("div", {
              style: {
                display: i ? "block" : "none"
              },
              children: [gl("canvas", {
                id: r.bg_image_url,
                width: m,
                height: m
              }), g]
            })
          }));

        function JS() {
          return JS = Object.assign ? Object.assign.bind() : function(e) {
            for (var t = 1; t < arguments.length; t++) {
              var n = arguments[t];
              for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r])
            }
            return e
          }, JS.apply(this, arguments)
        }
        var QS = e => ue("svg", JS({
            width: 22,
            height: 22,
            fill: "none",
            xmlns: "http://www.w3.org/2000/svg"
          }, e), YS || (YS = ue("path", {
            fillRule: "evenodd",
            clipRule: "evenodd",
            d: "M11.048 5.867h-.002c-3.952 0-7.288 2.195-8.348 5.201a.346.346 0 0 0 0 .23c1.06 3.007 4.396 5.202 8.348 5.202 3.976 0 7.33-2.223 8.367-5.26a.177.177 0 0 0 0-.114c-1.038-3.036-4.39-5.258-8.365-5.26Zm-7.358 5.45a.341.341 0 0 1 0-.268c.718-1.678 2.308-3.085 4.384-3.786a3.867 3.867 0 1 0 5.953.003c2.07.703 3.658 2.108 4.374 3.783a.341.341 0 0 1 0 .269c-1.031 2.412-3.867 4.264-7.355 4.264-3.489 0-6.324-1.852-7.356-4.264Zm7.259-4.531a1.45 1.45 0 1 1-2.798.452 9.282 9.282 0 0 1 2.798-.452Z",
            fill: "#292929"
          })), qS || (qS = ue("path", {
            fillRule: "evenodd",
            clipRule: "evenodd",
            d: "M11.048 5.867h-.002c-3.952 0-7.288 2.195-8.348 5.201a.346.346 0 0 0 0 .23c1.06 3.007 4.396 5.202 8.348 5.202 3.976 0 7.33-2.223 8.367-5.26a.177.177 0 0 0 0-.114c-1.038-3.036-4.39-5.258-8.365-5.26Zm-7.358 5.45a.341.341 0 0 1 0-.268c.718-1.678 2.308-3.085 4.384-3.786a3.867 3.867 0 1 0 5.953.003c2.07.703 3.658 2.108 4.374 3.783a.341.341 0 0 1 0 .269c-1.031 2.412-3.867 4.264-7.355 4.264-3.489 0-6.324-1.852-7.356-4.264Zm7.259-4.531a1.45 1.45 0 1 1-2.798.452 9.282 9.282 0 0 1 2.798-.452Z",
            fill: "#292929"
          }))),
          eE = "index-module_preview_wrap__wyD3z",
          tE = "index-module_upload_dialog__zsPoE";
        c(
        ".index-module_preview_wrap__wyD3z{background-color:#fff;height:100%;left:0;pointer-events:auto;position:absolute;top:0;width:100%}.index-module_upload_dialog__zsPoE{border-radius:8px;left:50%;margin:0!important;padding:0!important;position:absolute!important;top:50%;transform:translateX(-50%) translateY(-50%);width:auto!important}.index-module_upload_dialog__zsPoE .rc-dialog-body{padding:0}");
        var nE = (() => {
            var e, t = document.querySelector(".product-main-images-container") || document.querySelector(".product-image__content") || document.querySelector("#product-images-carousel") || (null === (e = document.querySelector(
              ".product-image")) || void 0 === e ? void 0 : e.querySelector("div"));
            return "Wind" === Yo() && (t = document.querySelector("#product-images-carousel").parentNode), t && (t.style.position = "relative"), t
          })(),
          rE = dt((e => {
            var t, {
                data: n,
                variantID: r,
                setData: i,
                onUploadDelete: o
              } = e,
              {
                formatMessage: a
              } = zi(),
              s = et((() => VS(n)), [n]),
              [l, c] = qe(!1),
              [u, h] = qe(0),
              [p, d] = qe(!1),
              [f, g] = qe({}),
              [m, v] = qe(""),
              _ = () => {
                zc.$emit(U)
              };
            Ze((() => {
              function e(e) {
                i((t => {
                  var n = VS(t).findIndex((t => e.preview_setting.data.filter((e => e.bg_image_url === t.bg_image_url)).length)) || 0;
                  h(n);
                  var r = bv.exports.cloneDeep(t);
                  return r.forEach((t => {
                    var n, r;
                    null !== (n = t.preview_setting) && void 0 !== n && n.preview_open && (null === (r = t.preview_setting.data) || void 0 === r || r.forEach((n => {
                      var r;
                      null === (r = n.cards) || void 0 === r || r.forEach((n => {
                        "text" == n.configType && (n.fid = t.fid, n.focusing = e.fid === t.fid, n.isShow = !!e.textValue, n.moveabled = t.preview_setting.moveabled, n.adjust_font_size = t.preview_setting
                          .adjust_font_size, n.textColor = e.textColor, n.textFont = e.textFont, n.textSize = e.textSize, n.textColor = e.textColor, n.textValue = e.textValue, n.textValue = e.textValue, n
                          .textValue = e.textValue, n.isInit = e.isInit)
                      }))
                    })))
                  })), r
                })), e.isInit || c(!0)
              }

              function t(e) {
                _(), i((t => {
                  var n = VS(t).findIndex((t => t.bg_image_url === e.bg_image_url)) || 0;
                  h(n);
                  var r = bv.exports.cloneDeep(t);
                  return null == r || r.forEach((t => {
                    var n, r;
                    null !== (n = t.preview_setting) && void 0 !== n && n.preview_open && (null === (r = t.preview_setting.data) || void 0 === r || r.forEach((t => {
                      var n;
                      null === (n = t.cards) || void 0 === n || n.forEach((t => {
                        var n, r;
                        null !== (n = e.checked_fids) && void 0 !== n && n.includes(t.fid) && (t.isShow = !0), null !== (r = e.un_checked_fids) && void 0 !== r && r.includes(t.fid) && (t.isShow = !1)
                      }))
                    })))
                  })), r
                })), c(!0)
              }

              function n(e) {
                if (_(), e.url) {
                  g(e);
                  var t = new FileReader;
                  t.readAsDataURL(e), t.onload = function(t) {
                    v(t.target.result), d(!1), b(e)
                  }
                } else i((t => {
                  var n, r = VS(t).findIndex((t => t.bg_image_url === e.bg_image_url)) || 0;
                  h(r);
                  var i = bv.exports.cloneDeep(t);
                  return null === (n = i.filter((t => t.fid === e.label_id))[0].preview_setting.data) || void 0 === n || n.forEach((e => {
                    e.cards[0].isShow = !1, e.cards[0].uploadDataUrl = ""
                  })), i
                }))
              }
              return zc.$on(F, t), zc.$on(B, n), zc.$on(z, e), () => {
                zc.$off(z, e), zc.$off(F, t), zc.$off(B, n)
              }
            }), [i]), Ze((() => {
              var e;

              function t() {
                c(!1)
              }
              c(!1);
              var n = document.querySelector("#product-thumb-images-container") || document.querySelector(".product-thumb-images-container") || document.querySelector(".product-image__thumbs");
              return (null === (e = window.appparakeet_images) || void 0 === e ? void 0 : e.length) > 1 && (null == n || n.addEventListener("click", t)), () => {
                var e;
                (null === (e = window.appparakeet_images) || void 0 === e ? void 0 : e.length) > 1 && (null == n || n.removeEventListener("click", t))
              }
            }), []), Ze((() => {
              if (nE) return nE.style.pointerEvents = l ? "none" : "auto", () => {
                nE && (nE.style.pointerEvents = "auto")
              }
            }), [l]);
            var b = tt((e => {
                _(), i((t => {
                  var n, r = VS(t).findIndex((t => t.bg_image_url === e.bg_image_url)) || 0;
                  h(r);
                  var i = bv.exports.cloneDeep(t);
                  return null === (n = i.filter((t => t.fid === e.label_id))[0].preview_setting.data) || void 0 === n || n.forEach((t => {
                    t.cards[0].uploadDataUrl = e.dataUrl || e.url, t.cards[0].isShow = !0
                  })), i
                })), c(!0), d(!1), v(""), window.scrollTo(0, 0)
              }), [i]),
              y = tt((e => {
                d(!1), v(""), null == o || o(e)
              }), [o]);
            return !(null == s || !s.length) && gl(de, {
              children: [gl("div", {
                className: "pk-flex pk-items-center !pk-mt-7 pk-cursor-pointer",
                onClick: () => {
                  var e;
                  (null === (e = window.appparakeet_images) || void 0 === e ? void 0 : e.length) < 2 && l ? c(!1) : c(!0), window.scrollTo({
                    top: 0,
                    behavior: "smooth"
                  })
                },
                children: [gl(QS, {}), (null === (t = window.appparakeet_images) || void 0 === t ? void 0 : t.length) < 2 && l ? gl("span", {
                  className: "pk-ml-2",
                  children: a({
                    id: "view_product_image"
                  })
                }) : gl("span", {
                  className: "pk-ml-2",
                  children: a({
                    id: "preview_personalization"
                  })
                })]
              }), nE && Ot(gl("div", {
                id: "appparakeet-preview-img",
                className: eE,
                style: {
                  display: l ? "block" : "none",
                  zIndex: "Life Style" === Yo() ? 9 : 99
                },
                children: null == s ? void 0 : s.map(((e, t) => gl($S, {
                  width: null == nE ? void 0 : nE.clientWidth,
                  height: null == nE ? void 0 : nE.clientHeight,
                  previewInfo: e,
                  isShow: t === u,
                  index: t,
                  data: n,
                  setData: i,
                  variantID: r
                }, e.bg_image_url)))
              }), nE), p && gl(h_, {
                className: tE,
                title: null,
                onClose: () => {
                  d(!1)
                },
                closable: !1,
                maskClosable: !1,
                visible: !0,
                children: gl(Cv, {
                  file: f,
                  url: m,
                  onConfirm: b,
                  onCancel: y
                })
              })]
            })
          })),
          iE = ["PHOTO", "DESIGN"],
          oE = WS((e => {
            var t, {
                isQuick: n,
                productId: r,
                data: i = null,
                queryWrapperTarget: o,
                className: a = ""
              } = e,
              {
                formatMessage: s
              } = zi(),
              [l, c] = qe((null == i ? void 0 : i.length) > 0),
              u = et((() => {
                return e = window.appparakeet_data, t = [], null == e || e.forEach(((e, n) => {
                  var r, i;
                  null !== (r = e.preview_setting) && void 0 !== r && r.preview_open && (null === (i = e.preview_setting.data) || void 0 === i || i.forEach((e => {
                    t.push(e.bg_image_url)
                  })))
                })), null == e || e.forEach(((e, n) => {
                  var r, i;
                  null !== (r = e.preview_setting) && void 0 !== r && r.preview_open && (null === (i = e.preview_setting.data) || void 0 === i || i.forEach((r => {
                    var i;
                    r.bg_image_url = t.filter((e => Ko(e) === Ko(r.bg_image_url)))[0], null === (i = r.cards) || void 0 === i || i.forEach(((t, r) => {
                      var i;
                      t.configType = e.type, t.upload_img_level = (null == e || null === (i = e.preview_setting) || void 0 === i ? void 0 : i.upload_img_level) || "up", t.configFid = e.fid, t.previewOrder = 1e3 * (n +
                        1) + r, e.preview_setting.moveabled && "text" === t.configType && (t.text_left = void 0, t.text_top = void 0)
                    }))
                  })))
                })), e;
                var e, t
              }), []),
              [p, f] = qe(u || []),
              [g, m] = qe(iE[0]),
              [v, _] = qe(""),
              [b, y] = qe(""),
              [w, x] = qe({
                with: 0,
                height: 0
              }),
              [k, S] = qe(!0),
              E = Je(!0),
              T = Je(null),
              O = et((() => ({
                title: s({
                  id: "url_confirm_title"
                }),
                message: s({
                  id: "url_confirm_desc"
                }),
                confirmText: s({
                  id: "url_confirm_yes"
                }),
                cancelText: s({
                  id: "url_confirm_no"
                })
              })), [s]);
            O.onConfirm = null === (t = T.current) || void 0 === t ? void 0 : t.uploadFile, O.onClose = () => {
              S(!0)
            };
            var A = function(e) {
                var [t, n] = qe(!1), {
                  title: r,
                  message: i,
                  confirmText: o,
                  cancelText: a,
                  onClose: s,
                  onConfirm: l
                } = e, c = () => {
                  n(!1), null == s || s()
                }, u = () => {
                  n(!1), l()
                };
                return {
                  isOpen: t,
                  open: () => {
                    n(!0)
                  },
                  closeDialog: c,
                  renderDialog: () => t ? Ot(gl(h_, {
                    className: yd,
                    wrapClassName: Sd,
                    title: null,
                    onClose: c,
                    closable: !0,
                    closeIcon: gl(DS, {}),
                    maskClosable: !1,
                    visible: !0,
                    children: [gl("div", {
                      className: wd,
                      children: r
                    }), gl("div", {
                      className: xd,
                      children: i
                    }), gl("div", {
                      className: kd,
                      children: [gl("button", {
                        className: ul([Cd, Ed]),
                        onClick: c,
                        children: a
                      }), gl("button", {
                        className: ul(Cd, Td),
                        onClick: u,
                        children: o
                      })]
                    })]
                  }), document.body) : null
                }
              }(O),
              P = null,
              R = document.querySelector("#product_detail_".concat(r, " .product-image")) || document.querySelector(".product-images-container") || document.querySelector(".product-detail .product-images");
            P = qo(["Eva"]) ? R.parentNode : qo(["Wind"]) ? (R.parentElement.style.flexDirection = "column", R.parentElement) : R || document.querySelector(".product-details .product-images") || document.querySelector(
              ".product-detail .product-images");
            var j = null;
            Ze((() => {
              if (!n) {
                (j = document.createElement("div")).id = "app-parakeet-tab";
                var e = P.querySelector("div");
                P && !document.querySelector("#app-parakeet-tab") && P.insertBefore(j, e);
                var t = qo("Flash") ? 16 : 32,
                  r = No() ? e.offsetWidth - t : e.offsetWidth;
                x({
                  width: r,
                  height: r
                });
                var i = document.createElement("div");
                i.id = "app-parakeet-design", P && !document.querySelector("#app-parakeet-design") && P.append(i)
              }
            }), []), Ze((() => {
              (() => {
                if (!i) {
                  var e = window.appparakeet_data;
                  if (0 === (null == e ? void 0 : e.length)) return void c(!1);
                  f(e), c(!0)
                }
              })()
            }), [r, i]);
            var {
              setError: N,
              clearErrors: L,
              handleSubmit: F,
              formState: {
                isValid: B,
                isValidating: z
              },
              control: H,
              setValue: U,
              getValues: W,
              unregister: V,
              register: X,
              trigger: G
            } = function() {
              var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
                t = Jt.useRef(),
                [n, r] = Jt.useState({
                  isDirty: !1,
                  isValidating: !1,
                  isSubmitted: !1,
                  isSubmitting: !1,
                  isSubmitSuccessful: !1,
                  isValid: !1,
                  submitCount: 0,
                  dirtyFields: {},
                  touchedFields: {},
                  errors: {},
                  defaultValues: e.defaultValues
                });
              t.current || (t.current = h(h({}, As(e)), {}, {
                formState: n
              }));
              var i = t.current.control;
              return i._options = e, Ma({
                subject: i._subjects.state,
                callback: Jt.useCallback((e => {
                  Oa(e, i._proxyFormState, !0) && (i._formState = h(h({}, i._formState), e), r(h({}, i._formState)))
                }), [i])
              }), Jt.useEffect((() => {
                i._stateFlags.mount || (i._proxyFormState.isValid && i._updateValid(), i._stateFlags.mount = !0), i._stateFlags.watch && (i._stateFlags.watch = !1, i._subjects.state.next({})), i._removeUnmounted()
              })), Jt.useEffect((() => {
                n.submitCount && i._focusError()
              }), [i, n.submitCount]), t.current.formState = Ea(n, i), t.current
            }({
              mode: "onChange",
              shouldFocusError: !0,
              shouldUnregister: !0
            });
            window.triggerCusForm = () => new Promise(((e, t) => {
              F((() => {
                e(!0)
              }), (() => {
                t(!1)
              }))()
            }));
            var {
              formDom: Y
            } = S_({
              data: p,
              control: H,
              setData: f
            }), q = tt((e => {
              var {
                newData: t,
                count: n
              } = function(e, t, n, r, i) {
                var o = 0,
                  a = e.map((e => {
                    var a;
                    return "field" !== (null == e || null === (a = e.conditional_setting) || void 0 === a ? void 0 : a.type) ? e : jo(e, t) && e.isHidden ? (r(e.fid), "text" === e.type && null != e && e.default && i(e.fid, e
                      .default), "checkbox" !== e.type && "button" !== e.type || null == e || !e.default_selection || i(e.fid, e.default_selection_values || []), o++, h(h({}, e), {}, {
                      isHidden: !1
                    })) : jo(e, t) || e.isHidden ? e : (n(e.fid), "text" === e.type && null != e && e.default && i(e.fid, ""), "checkbox" !== e.type && "button" !== e.type || null == e || !e.default_selection || i(e.fid, []), o++,
                      h(h({}, e), {}, {
                        isHidden: !0
                      }))
                  }));
                try {
                  Ro()
                } catch (e) {}
                return {
                  newData: a,
                  count: o
                }
              }(p, e, V, X, U);
              n > 0 && (f(t, (() => {
                G()
              })), setTimeout((() => {
                G()
              }), 1e3))
            }), [p, V, X, G, U]), K = W();
            Ze((() => {
              q(K), setTimeout((() => {
                document.dispatchEvent(new Event("plugin_currency_update"))
              }))
            }), [K, q]);
            var Z = et((() => {
              var e = [];
              return null == p || p.forEach((t => {
                t.isHidden || "design" !== t.type || e.push(t.fid)
              })), null != e && e.length || m(iE[0]), e
            }), [p]);
            Ze((() => {
              var e, t = [];
              (Z.forEach((e => {
                var n;
                null !== (n = K[e]) && void 0 !== n && n.length || t.push(e)
              })), t.length) && (null === (e = T.current) || void 0 === e || e.removeImg(t, (() => {
                t.forEach((e => {
                  var t = Z.findIndex((t => t === e));
                  U("".concat(Z[t < 0 ? 0 : t]), [])
                }))
              })))
            }), [K, Z, U]);
            var [$, J] = qe(0), [Q, ee] = qe(0), te = tt(((e, t, n) => {
              var {
                newData: r,
                count: i
              } = function(e, t, n, r, i) {
                var o = 0,
                  a = e.map((e => {
                    var a, s, l;
                    if ("variant" !== (null == e || null === (a = e.conditional_setting) || void 0 === a ? void 0 : a.type)) return e;
                    var c = null == e || null === (s = e.conditional_setting) || void 0 === s || null === (l = s.variant_values) || void 0 === l ? void 0 : l.map((e => e.value)).includes(t);
                    return c || e.isHidden ? c && e.isHidden ? (r(e.fid), "text" === e.type && null != e && e.default && i(e.fid, e.default), "checkbox" !== e.type && "button" !== e.type || null == e || !e.default_selection || i(e
                      .fid, e.default_selection_values || []), o++, h(h({}, e), {}, {
                      isHidden: !1
                    })) : e : (n(e.fid), o++, "text" === e.type && null != e && e.default && i(e.fid, ""), "checkbox" !== e.type && "button" !== e.type || null == e || !e.default_selection || i(e.fid, []), h(h({}, e), {}, {
                      isHidden: !0
                    }))
                  }));
                try {
                  Ro()
                } catch (e) {}
                return {
                  newData: a,
                  count: o
                }
              }(p, t, V, X, U);
              i > 0 && (f(r, (() => {
                G()
              })), setTimeout((() => {
                G()
              }), 1e3)), J(e), ee(n), Fo(r, K, e)
            }), [p, K, V, X, G, U]), ne = tt((e => {
              f((t => {
                var n, r = bv.exports.cloneDeep(t);
                return null == r || null === (n = r.filter((e => {
                  var t;
                  return 2 === (null === (t = e.preview_setting) || void 0 === t ? void 0 : t.type)
                }))) || void 0 === n || n.forEach((t => {
                  var n, r;
                  return null === (n = t.preview_setting) || void 0 === n || null === (r = n.data) || void 0 === r ? void 0 : r.forEach((t => {
                    t.variant_id === e ? t.bgSelected = !0 : t.bgSelected = !1
                  }))
                })), r
              }))
            }), []), [re, ie] = qe("");
            Ze((() => {
              var e, t = null === (e = window.appparakeet_variants) || void 0 === e ? void 0 : e.findIndex((e => {
                return e.id === (t = "variant", n = location.search.substr(1), r = new RegExp("(^|&)".concat(t, "=([^&]*)(&|$)"), "i"), null === (i = n.match(r)) ? null : i[2]);
                var t, n, r, i
              }));
              t = t < 0 ? 0 : t;
              var n = window.appparakeet_variants[t].price,
                r = window.appparakeet_variants[t].id,
                i = window.appparakeet_variants[t].retail_price;
              r && te(n, r, i), ie(r), ne(r)
            }), []);
            var oe = tt((e => {
              var t = e.detail.selected.price,
                n = e.detail.selected.id,
                r = e.detail.selected.retail_price;
              n && te(t, n, r), ie(n), ne(n)
            }), [te, ne]);
            Ze((() => (document.body.addEventListener("dj.viewContent", oe), () => {
              document.body.removeEventListener("dj.viewContent", oe)
            })), [oe]), Ze((() => {
              Fo(p, K, $)
            }), [K]);
            var ae = et((() => ({
              setError: N,
              clearErrors: L
            })), [L, N]);
            Ze((() => {
              zc.$on(M, (() => S(!1)))
            }), []);
            var se = () => {
              var e = qo("Hero") ? document.querySelector(".product-image .properties-content") : document.querySelector("#app-parakeet-tab").nextSibling;
              return qo("Nova 2022") && (e = document.querySelector("#app-parakeet-design").previousElementSibling), e
            };
            Ze((() => {
              var e = se();
              if (e) {
                var t = AS(e, "display"),
                  n = AS(e, "position");
                qo("Nova 2022") || _("none" === t ? "block" : t), y(n)
              }
            }), []), Ze((() => {
              var e = se();
              if (e) {
                var t = No() && qo(["Nova 2022", "Hero", "Eva", "Flash"]),
                  n = "PHOTO" === g;
                if (t) {
                  var r = n ? "visible" : "hidden";
                  return e.style.visibility = r, e.style.position = n ? b : "absolute", void(e.style.zIndex = n ? "1" : "-1")
                }
                var i = n ? v : "none";
                e.style.display = i
              }
            }), [g, v, R]);
            var le = et((() => new Ps(o)), [o]),
              ce = et((() => Object.keys(K).some((e => {
                var t;
                return Z.includes(e) && (null === (t = K[e]) || void 0 === t ? void 0 : t.length)
              }))), [K, Z]);
            al((() => {
              var e;
              if (null !== (e = window.appparakeet_data) && void 0 !== e && e.length) {
                var t = ce && k || !ce;
                E.current = t;
                var n = E.current && B;
                n ? le.enableATCAndBNBtNs() : le.disableATCAndBNBtNs(F((() => {
                  E.current || A.open()
                }))), n ? js() : Rs(F((() => {
                  E.current || A.open()
                })))
              }
            }), [B, k, ce]), Ze((() => {
              var e, t, n;
              zo() && (e = null === (t = window.djInterceptors) || void 0 === t || null === (n = t.request) || void 0 === n ? void 0 : n.use(function() {
                var e = d((function*(e) {
                  var t;
                  return yield Ho(e, W(), p, null === (t = T.current) || void 0 === t ? void 0 : t.compositeUrl, F, s)
                }));
                return function(t) {
                  return e.apply(this, arguments)
                }
              }()));
              return () => {
                var t;
                zo() && (null === (t = window.djInterceptors) || void 0 === t || t.request.eject(e))
              }
            }), [r, W, p, F, s]), Ze((() => (zo() && document.addEventListener("dj.response", Xo), () => {
              zo() && document.removeEventListener("dj.response", Xo)
            })), []), ((e, t) => {
              Ls((() => {
                "loading" !== document.readyState ? e() : document.addEventListener("DOMContentLoaded", e)
              }), t)
            })((() => {
              z && Do("plugin_product_customizer_click", {
                product_id: r
              })
            }), [z, r]), Ze((() => {
              var e, t;
              if (null != p && p.length) {
                var n = e => {
                  var t, n;
                  e.detail.product_id === r && Do("plugin_customizer_add_to_cart", {
                    product_id: r,
                    template_type: null === (t = window) || void 0 === t || null === (n = t.SHOP_PARAMS) || void 0 === n ? void 0 : n.template_type,
                    quantity: e.detail.quantity,
                    rule_id: ""
                  })
                };
                return document.body.addEventListener("dj.addToCart", n), Do("plugin_customizer_products_view", {
                  product_id: r,
                  template_type: null === (e = window) || void 0 === e || null === (t = e.SHOP_PARAMS) || void 0 === t ? void 0 : t.template_type,
                  rule_id: ""
                }), () => document.body.removeEventListener("dj.addToCart", n)
              }
            }), [p, r]);
            if (!l) return null;
            var ue = document.querySelector("#app-parakeet-tab"),
              he = document.querySelector("#app-parakeet-design"),
              pe = zo(),
              fe = !(null == Z || !Z.length);
            return gl("div", {
              className: "notranslate",
              children: gl(Hc.Provider, {
                value: re,
                children: [pe && fe && gl(de, {
                  children: [!!ue && !n && Ot(gl(z_, {
                    tabs: iE,
                    value: g,
                    onChange: e => m(e)
                  }), ue), !!he && Ot(gl(OS, {
                    ref: T,
                    visible: "DESIGN" === g,
                    data: w,
                    onAddFIle: e => {
                      C(e).then((t => {
                        e.thumbUrl = t, U("".concat(Z[0], ".0"), e), zc.$emit(D), G()
                      }))
                    },
                    onDelete: e => {
                      var t = Z.findIndex((t => t === e.label_id)),
                        n = t < 0 ? 0 : t,
                        r = [...K[Z[n]]];
                      r.splice(r.length - 1, 1), U("".concat(Z[n]), r), zc.$emit(I), G()
                    },
                    fileName: null == Z ? void 0 : Z[0],
                    hasChangeSave: e => {
                      S(e)
                    },
                    setTab: () => {
                      m(iE[1])
                    }
                  }), he)]
                }), gl("div", {
                  className: ul("pk-my-6", No() ? "pk-space-y-4" : "pk-space-y-5", a),
                  children: [gl(rp.Provider, {
                    value: ae,
                    children: Y
                  }), gl(N_, {
                    data: p,
                    control: H
                  }), gl(rE, {
                    data: p,
                    variantID: re,
                    setData: f,
                    onUploadDelete: e => {
                      U(e.label_id, []), G()
                    }
                  })]
                }), A.isOpen && A.renderDialog()]
              })
            })
          }));
        try {
          var aE;
          if (!window.appparakeet_env) null !== (aE = window.appparakeet_data) && void 0 !== aE && aE.length && setTimeout((() => {
            var e;
            (() => {
              var e, t;
              if (null !== (e = window.appparakeet_data) && void 0 !== e && null !== (t = e.filter((e => {
                  var t;
                  return "text" === e.type && (null === (t = e.preview_setting) || void 0 === t ? void 0 : t.preview_open)
                }))) && void 0 !== t && t.length) try {
                var n, r, i, o, a, s, l, c = [{
                    name: "Lexend",
                    src: "@font-face {  font-family: 'Lexend';  font-style: normal;  font-weight: 100;  font-display: swap;  src: url(https://fonts.gstatic.com/s/lexend/v15/wlptgwvFAVdoq2_F94zlCfv0bz1WCzsXzLdneg.woff2) format('woff2');}"
                  }, {
                    name: "Abril Fatface",
                    src: "@font-face {  font-family: 'Abril Fatface';  font-style: normal;  font-weight: 400;  font-display: swap;  src: url(https://fonts.gstatic.com/s/abrilfatface/v19/zOL64pLDlL1D99S8g8PtiKchq-dmjQ.woff2) format('woff2');}"
                  }, {
                    name: "Amiri",
                    src: "@font-face {  font-family: 'Amiri';  font-style: normal;  font-weight: 400;  font-display: swap;  src: url(https://fonts.gstatic.com/s/amiri/v24/J7aRnpd8CGxBHpUutLM.woff2) format('woff2');}"
                  }, {
                    name: "Archivo",
                    src: "@font-face {  font-family: 'Archivo';  font-style: normal;  font-weight: 100;  font-stretch: normal;  font-display: swap;  src: url(https://fonts.gstatic.com/s/archivo/v16/k3k6o8UDI-1M0wlSV9XAw6lQkqWY8Q82sJaRE-NWIDdgffTTNDJZ9xdp.woff2) format('woff2');}"
                  }, {
                    name: "Archivo Black",
                    src: "@font-face {  font-family: 'Archivo Black';  font-style: normal;  font-weight: 400;  font-display: swap;  src: url(https://fonts.gstatic.com/s/archivoblack/v17/HTxqL289NzCGg4MzN6KJ7eW6CYyF_g.woff2) format('woff2');}"
                  }, {
                    name: "Arimo",
                    src: "@font-face {  font-family: 'Arimo';  font-style: normal;  font-weight: 400;  font-display: swap;  src: url(https://fonts.gstatic.com/s/arimo/v26/P5sfzZCDf9_T_3cV7NCUECyoxNk37cxcABrB.woff2) format('woff2');}"
                  }, {
                    name: "Arvo",
                    src: "@font-face {  font-family: 'Arvo';  font-style: normal;  font-weight: 400;  font-display: swap;  src: url(https://fonts.gstatic.com/s/arvo/v20/tDbD2oWUg0MKqScQ7Q.woff2) format('woff2');}"
                  }, {
                    name: "Bakbak One",
                    src: "@font-face {  font-family: 'Bakbak One';  font-style: normal;  font-weight: 400;  font-display: swap;  src: url(https://fonts.gstatic.com/s/bakbakone/v6/zOL54pXAl6RI-p_ardnu-cNkvg.woff2) format('woff2');}"
                  }, {
                    name: "Cardo",
                    src: "@font-face {  font-family: 'Cardo';  font-style: normal;  font-weight: 400;  font-display: swap;  src: url(https://fonts.gstatic.com/s/cardo/v19/wlp_gwjKBV1pqhv43IE.woff2) format('woff2');}"
                  }, {
                    name: "Caudex",
                    src: "@font-face {  font-family: 'Caudex';  font-style: normal;  font-weight: 400;  font-display: swap;  src: url(https://fonts.gstatic.com/s/caudex/v15/esDQ311QOP6BJUr4zfKB.woff2) format('woff2');}"
                  }, {
                    name: "Concert One",
                    src: "@font-face {  font-family: 'Concert One';  font-style: normal;  font-weight: 400;  font-display: swap;  src: url(https://fonts.gstatic.com/s/concertone/v17/VEM1Ro9xs5PjtzCu-srDqSTijP4.woff2) format('woff2');}"
                  }, {
                    name: "Cormorant",
                    src: "@font-face {  font-family: 'Cormorant';  font-style: normal;  font-weight: 300;  font-display: swap;  src: url(https://fonts.gstatic.com/s/cormorant/v16/H4cgBXOCl9bbnla_nHIiRLmohYaz.woff2) format('woff2');}"
                  }, {
                    name: "Cormorant Garamond",
                    src: "@font-face {  font-family: 'Cormorant Garamond';  font-style: normal;  font-weight: 300;  font-display: swap;  src: url(https://fonts.gstatic.com/s/cormorantgaramond/v15/co3YmX5slCNuHLi8bLeY9MK7whWMhyjQAllfvg-I.woff2) format('woff2');}"
                  }, {
                    name: "Crimson Pro",
                    src: "@font-face {  font-family: 'Crimson Pro';  font-style: normal;  font-weight: 200;  font-display: swap;  src: url(https://fonts.gstatic.com/s/crimsonpro/v21/q5uUsoa5M_tv7IihmnkabC5XiXCAlXGks1WZTm1MP5s-.woff2) format('woff2');}"
                  }, {
                    name: "Didact Gothic",
                    src: "@font-face {  font-family: 'Didact Gothic';  font-style: normal;  font-weight: 400;  font-display: swap;  src: url(https://fonts.gstatic.com/s/didactgothic/v19/ahcfv8qz1zt6hCC5G4F_P4ASlUuYpg.woff2) format('woff2');}"
                  }, {
                    name: "Eater",
                    src: "@font-face {  font-family: 'Eater';  font-style: normal;  font-weight: 400;  font-display: swap;  src: url(https://fonts.gstatic.com/s/eater/v21/mtG04_FCK7bOvquxsXA.woff2) format('woff2');}"
                  }, {
                    name: "Eczar",
                    src: "@font-face {  font-family: 'Eczar';  font-style: normal;  font-weight: 400;  font-display: swap;  src: url(https://fonts.gstatic.com/s/eczar/v16/BXR2vF3Pi-DLmxcpJB-qbNTyTMDXHd6mrjgU.woff2) format('woff2');}"
                  }, {
                    name: "Exo 2",
                    src: "@font-face {  font-family: 'Exo 2';  font-style: normal;  font-weight: 100;  font-display: swap;  src: url(https://fonts.gstatic.com/s/exo2/v19/7cH1v4okm5zmbvwkAx_sfcEuiD8jvvOsOdC_.woff2) format('woff2');}"
                  }, {
                    name: "Fira Sans",
                    src: "@font-face {  font-family: 'Fira Sans';  font-style: normal;  font-weight: 100;  font-display: swap;  src: url(https://fonts.gstatic.com/s/firasans/v16/va9C4kDNxMZdWfMOD5Vn9LjJYTI.woff2) format('woff2');}"
                  }, {
                    name: "Fjalla One",
                    src: "@font-face {  font-family: 'Fjalla One';  font-style: normal;  font-weight: 400;  font-display: swap;  src: url(https://fonts.gstatic.com/s/fjallaone/v13/Yq6R-LCAWCX3-6Ky7FAFrOF6kg.woff2) format('woff2');}"
                  }],
                  u = null !== (n = window) && void 0 !== n && n.appparakeet_data[0] ? null === (r = window) || void 0 === r ? void 0 : r.appparakeet_data[0].text_custom_family_map : null;
                u && null != Object && null !== (i = Object.keys(u)) && void 0 !== i && i.length && Object.keys(u).forEach((e => {
                  var t = {};
                  t.name = e, t.url = u[e], t.src = "@font-face { font-family: ".concat(e, ";src: url('").concat(u[e], "');}"), c.push(t)
                }));
                var h = document.createElement("style"),
                  p = (null === (o = window) || void 0 === o || null === (a = o.appparakeet_data) || void 0 === a ? void 0 : a.filter((e => {
                    var t;
                    return "text" === (null == e ? void 0 : e.type) && (null == e || null === (t = e.preview_setting) || void 0 === t ? void 0 : t.preview_open)
                  }))) || [];
                (p = null === (s = p) || void 0 === s ? void 0 : s.map((e => {
                  var t;
                  return null == e || null === (t = e.preview_setting) || void 0 === t ? void 0 : t.text_families
                }))) && null !== (l = p) && void 0 !== l && l.length && (p = Array.from(new Set(p.flat())) || []), null == c || c.forEach((e => {
                  var t;
                  if (null !== (t = p) && void 0 !== t && t.includes(e.name)) {
                    h.appendChild(document.createTextNode(e.src));
                    var n = document.createElement("div");
                    n.class = "mock_span", n.innerHTML = "1", n.style.fontFamily = e.name, n.style.position = "fixed", n.style.top = "-99999px", document.body.appendChild(n)
                  }
                })), document.head.appendChild(h)
              } catch (e) {}
            })();
            var t, n, r = document.getElementById("app-parakeet"),
              i = document.createElement("div"),
              o = r.dataset.productId;
            o && (window.appparakeet_data = (null === (t = window) || void 0 === t || null === (n = t.appparakeet_data) || void 0 === n ? void 0 : n.filter((e => e.product_origin_id === o))) || []);
            null !== (e = window.appparakeet_data) && void 0 !== e && e.length && (r.append(i), De(gl(oE, {
              productId: r.dataset.productId
            }), i))
          }), 800)
        } catch (e) {}
      }));
      //**app-parakeet.js-end**//
    </script>
  </div><input name="product_id" type="hidden" value="78e576c1-249c-4b89-bffb-c02375747c5c"><input name="variant_id" type="hidden" value="4e316841-574e-494d-b142-695f6182d6c8"><input name="note" type="hidden">
  <div class="plugin__buy_on_others empty-hidden"></div>
</form>

<form>
  <div class="quick-shop-content rounded-global-small">
    <div class="quick-shop-inner-content">
      <spz-variants name="quick-shop-variant" id="quick-shop-variants" class="pointer-events-none" layout="container" template="quick-shop-variant-template" spz-if="${product_options &amp;&amp; product_options.length > 0}" manual=""
        @mouseout="${mouse_out_event}" interact="hover" interference="" ${mouse_over_event}=""></spz-variants>
      <button class="relative mt-5 lg:mt-6 button-primary flex items-center justify-center body-plus-2  type-text-font-family rounded-btn quick-shop_atc_btn" type="button" role="addToCart" data-track="click" data-track-content="add_to_cart"
        data-track-source="add_to_cart">
        <span role="content">${statusLan}</span>
        <spz-render id="quick-shop-btn-price" layout="container" template="quick-shop-button-price-template" manual=""></spz-render>
        <div class="loading items-center justify-center absolute inset-0" role="loading" show="">
          <div class="loading-bounce"></div>
        </div>
      </button>
    </div>
  </div>
</form>

<form>
  <div class="quick-shop-content rounded-global-small">
    <div class="quick-shop-inner-content">
      <spz-variants name="quick-shop-variant" id="quick-shop-variants" class="pointer-events-none" layout="container" template="quick-shop-variant-template" spz-if="${product_options &amp;&amp; product_options.length > 0}" manual=""
        @mouseout="${mouse_out_event}" interact="hover" interference="" ${mouse_over_event}=""></spz-variants>
      <button class="relative mt-5 lg:mt-6 button-primary flex items-center justify-center body-plus-2  type-text-font-family rounded-btn quick-shop_atc_btn" type="button" role="addToCart" data-track="click" data-track-content="add_to_cart"
        data-track-source="add_to_cart">
        <span role="content">${statusLan}</span>
        <spz-render id="quick-shop-btn-price" layout="container" template="quick-shop-button-price-template" manual=""></spz-render>
        <div class="loading items-center justify-center absolute inset-0" role="loading" show="">
          <div class="loading-bounce"></div>
        </div>
      </button>
    </div>
  </div>
</form>

POST //translate.googleapis.com/translate_voting?client=te

<form id="goog-gt-votingForm" action="//translate.googleapis.com/translate_voting?client=te" method="post" target="votingFrame" class="VIpgJd-yAWNEb-hvhgNd-aXYTce"><input type="text" name="sl" id="goog-gt-votingInputSrcLang"><input type="text"
    name="tl" id="goog-gt-votingInputTrgLang"><input type="text" name="query" id="goog-gt-votingInputSrcText"><input type="text" name="gtrans" id="goog-gt-votingInputTrgText"><input type="text" name="vote" id="goog-gt-votingInputVote"></form>

Text Content

${(function(){ const get_random_six_digits = () => { return
Math.random().toString().slice(-6) }; const wholesale_enabled = false; const
setting_product_image_display = "natural"; const product_image = data.image;
const secondary_image = data.secondImage; const image_width =
product_image.width; let image_height = product_image.height;
if(setting_product_image_display == '100%'){ image_height = image_width }else
if(setting_product_image_display == '133.33%'){ image_height = image_width *
1.3333; }; const product_image_hover_on = true && !!secondary_image.src; const
has_save_label = true && ((+data.compare_at_price) > (+data.price)); const
is_single_variant = data.variants.length == 1; const min_price_variant_href =
(data.min_price_variant && data.min_price_variant.available) ?
data.min_price_variant.url : data.url; const retail_price_max =
data.retail_price_max || data.compare_at_price_max; const THUMBNAILS_MAX_SIZE =
3; const thumbnails = data.thumbVariants.slice(0, THUMBNAILS_MAX_SIZE); const
image_wrap_id = 'image_wrap_' + get_random_six_digits(); const image_carousel_id
= 'image_carousel_' + get_random_six_digits(); const thumbnails_selector_id =
'thumbnails_selector_' + get_random_six_digits(); const form_id = 'form_' +
get_random_six_digits(); return `

${ data.available ? `${ (+data.compare_at_price > +data.price) ? `Save ${
data.off_ratio }% ` : '' }` : "Sold out" }


${DATA.TITLE}

${ data.price_min != data.price_max ? `From ` : ` ` }
+${data.remainInvisibleThumbCount} ` })()}

🎄🎄FREE SHIPPING ON ORDERS OVER $49🎄🎄




🎄🎄FREE SHIPPING ON ORDERS OVER $49🎄🎄


Powered by Google Übersetzer
English,Deutsch,Italiano,Français,Español,简体中文


 * Log in
 * Create an account

${data.data && data.data.count}

 * Home
 * 🎄Christmas items🎅
 * 🎅Christmas Blanket🎅
 * 🎅🏻Christmas Dining,Figurines,Serveware,Candleholders🎅🏻
 * 🍄Cutest Mushroom Lamp 🍄
 * 🎄Womens Shoes🎄
 * 🎅Lazy Sofa🎅
 * ❤️Cabinet❤️
 * More links
   ${(function(){ const formatLinks = (links) => { return links.map(link => {
   link.tag = tags[link.title.toUpperCase()] || {}; link.target_attr =
   link.target == '_blank' ? 'target="_blank"' : ''; link.href_attr = link.url ?
   `href="${link.url}"` : ''; if(link.children && link.children.length){
   link.children = formatLinks(link.children); } return link; }) }; const tags =
   "{}"; let linkList = [ { id: 55633175, title: "Home", url: "\/", target: "",
   levels: 0, product0: null || {}, children: [ ] }, { id: 55633177, title:
   "\ud83c\udf84Christmas items\ud83c\udf85", url:
   "\/collections\/\ud83c\udf84christmas-items\ud83c\udf85", target: "", levels:
   0, product0: null || {}, children: [ ] }, { id: 55633179, title:
   "\ud83c\udf85Christmas Blanket\ud83c\udf85", url:
   "\/collections\/\ud83c\udf85christmas-blanket\ud83c\udf85", target: "",
   levels: 0, product0: null || {}, children: [ ] }, { id: 55633181, title:
   "\ud83c\udf85\ud83c\udffbChristmas
   Dining,Figurines,Serveware,Candleholders\ud83c\udf85\ud83c\udffb", url:
   "\/collections\/\ud83c\udf85\ud83c\udffb", target: "", levels: 0, product0:
   null || {}, children: [ ] }, { id: 55633183, title: "\ud83c\udf44Cutest
   Mushroom Lamp \ud83c\udf44", url:
   "\/collections\/\ud83c\udf44cutest-mushroom-lamp-\ud83c\udf44", target: "",
   levels: 0, product0: null || {}, children: [ ] }, { id: 55633185, title:
   "\ud83c\udf84Womens Shoes\ud83c\udf84", url:
   "\/collections\/womens-shoes-sglh", target: "", levels: 0, product0: null ||
   {}, children: [ ] }, { id: 55633187, title: "\ud83c\udf85Lazy
   Sofa\ud83c\udf85", url: "\/collections\/lazy-sofa", target: "", levels: 0,
   product0: null || {}, children: [ ] }, { id: 55633189, title:
   "\u2764\ufe0fCabinet\u2764\ufe0f", url: "\/collections\/cabinet", target: "",
   levels: 0, product0: null || {}, children: [ ] }, ].slice(offset); linkList =
   formatLinks(linkList); const hasChild = linkList.some(link =>
   !!(link.children && link.children.length || link.product0.id)); return `
    * ${link.title} ${link.tag.label}
   
    * ${second_link.title} ${second_link.tag.label} ${third_links.title}
      ${third_links.tag.label}
   
   
    * ${link.title} ${link.tag.label}
   
   ` })()}
    * 🎅🏻Christmas Dining,Figurines,Serveware,Candleholders🎅🏻
    * 🍄Cutest Mushroom Lamp 🍄
    * 🎄Womens Shoes🎄
    * 🎅Lazy Sofa🎅
    * ❤️Cabinet❤️



English,Deutsch,Italiano,Français,Español,简体中文

 * Log in
 * Create an account

${data.data && data.data.count}


${(function(){ if (data === undefined || typeof data !== 'string' || data == '')
return ''; const keyword = encodeURIComponent(data); return `
View more
Your search for '${data}' did not yield any results.

` })()}

 * Home
 * 🎄Christmas items🎅
 * 🎅Christmas Blanket🎅
 * 🎅🏻Christmas Dining,Figurines,Serveware,Candleholders🎅🏻
 * 🍄Cutest Mushroom Lamp 🍄
 * 🎄Womens Shoes🎄
 * 🎅Lazy Sofa🎅
 * ❤️Cabinet❤️
   
   English,Deutsch,Italiano,Français,Español,简体中文
   

Log in
(function(){ let w = window.innerWidth; function setHeaderCssVar() { const
headerEle = document.getElementById('shoplaza-section-header'); if(!headerEle){
return }; document.body.style.setProperty('--window-height',
`${window.innerHeight}px`); document.body.style.setProperty('--header-height',
`${headerEle.clientHeight}px`);
document.body.style.setProperty('--header-scroll-hide-height-md',
`${headerEle.querySelector('.header__mobile
.header__scroll_hide').clientHeight}px`);
document.body.style.setProperty('--header-scroll-hide-height-pc',
`${headerEle.querySelector('.header__desktop
.header__scroll_hide').clientHeight}px`); } function handlResize() { if(w ==
window.innerWidth){return}; w = window.innerWidth; setHeaderCssVar(); };
function init(){ setHeaderCssVar(); window.removeEventListener('resize',
window._theme_header_listener) window._theme_header_listener = handlResize;
window.addEventListener('resize', window._theme_header_listener); } init();
})();

${data.index + 1}/9


3 TON LONG-REACH LOW-PROFILE PROFESSIONAL FLOOR JACK WITH RAPID PUMP

${function() { const variantData = data.variant ||
{"id":"4e316841-574e-494d-b142-695f6182d6c8","product_id":"78e576c1-249c-4b89-bffb-c02375747c5c","title":"Blue","weight_unit":"kg","inventory_quantity":-570,"sku":"sku2097625714777","barcode":"","position":1,"option1":"Blue","option2":"","option3":"","note":"","image":{"src":"\/\/img.fantaskycdn.com\/8dacb98ea213d8adf5631151c6e3f33d.jpeg","path":"8dacb98ea213d8adf5631151c6e3f33d.jpeg","width":1200,"height":1200,"alt":"","aspect_ratio":1},"wholesale_price":[{"price":39.99,"min_quantity":1}],"weight":"0","compare_at_price":"0","price":"39.99","retail_price":"0","available":true,"url":"\/products\/3-ton?variant=4e316841-574e-494d-b142-695f6182d6c8","available_quantity":999999999,"options":[{"name":"COLOR","value":"Blue"}],"off_ratio":0,"flashsale_info":[],"sales":293};
const saveType = "percentage"; const saveText = "Save {{saved_amount}}"; const
productLabelDiscountOn = true; return `
-
${saveText.replace('\{\{saved_amount\}\}', saveType == 'percentage' ?
variantData.off_ratio + '%' : `` )}
`; }()}
$39.99
293 sold

SPECIAL OFFER

Buy $70.00 more and save 12% off Buy $100.00 more and save 33% off Buy $150.00
more and save 55% off Buy $200.00 more and save 67% off Buy $250.00 more and
save 77% off
CLOSE
Buy $70.00 more and save 12% off Buy $100.00 more and save 33% off Buy $150.00
more and save 55% off Buy $200.00 more and save 67% off Buy $250.00 more and
save 77% off

Color ${function(){ const optName = "COLOR"; const optionValue =
data.originData.selectData ? data.originData.selectData[optName].value :
data.originData.value; const optionValueText = optionValue ? (': ' +
optionValue) : ''; return ` ${optionValueText} ` }()} : Blue
Blue
Black
Green
Orange
${function(){ const tipText = "Please select a {{ name
}}".replace(/\{\{\s+name\s+\}\}/g, data); return `
${tipText}
` }()}
Quantity

Add to cart
$39.99
${function(){ const wholesale_enabled = false; const qty = data.quantity || 1;
const currentSelectVariant = data.variant; const defaultVariant = (data.product
&& data.product.variants && data.product.variants[0]); const productVariant =
{"id":"4e316841-574e-494d-b142-695f6182d6c8","product_id":"78e576c1-249c-4b89-bffb-c02375747c5c","title":"Blue","weight_unit":"kg","inventory_quantity":-570,"sku":"sku2097625714777","barcode":"","position":1,"option1":"Blue","option2":"","option3":"","note":"","image":{"src":"\/\/img.fantaskycdn.com\/8dacb98ea213d8adf5631151c6e3f33d.jpeg","path":"8dacb98ea213d8adf5631151c6e3f33d.jpeg","width":1200,"height":1200,"alt":"","aspect_ratio":1},"wholesale_price":[{"price":39.99,"min_quantity":1}],"weight":"0","compare_at_price":"0","price":"39.99","retail_price":"0","available":true,"url":"\/products\/3-ton?variant=4e316841-574e-494d-b142-695f6182d6c8","available_quantity":999999999,"options":[{"name":"COLOR","value":"Blue"}],"off_ratio":0,"flashsale_info":[],"sales":293};
const variantData = currentSelectVariant || defaultVariant || productVariant;
const wholesale_price = variantData.wholesale_price || []; if(wholesale_enabled
&& wholesale_price.length > 0) { let wholesaleIndex =
wholesale_price.findIndex(item => { return item.min_quantity > qty; });
if(wholesaleIndex < 0){ wholesaleIndex = wholesale_price.length - 1; }else
if(wholesaleIndex > 0){ wholesaleIndex = wholesaleIndex - 1; } const
wholesalePrice = wholesale_price[wholesaleIndex] || ''; return `

` }else { return `

` } }()}

Buy now

Product was out of stock.
Product is unavailable.
${function(){ const variantData = data.variant ||
{"id":"4e316841-574e-494d-b142-695f6182d6c8","product_id":"78e576c1-249c-4b89-bffb-c02375747c5c","title":"Blue","weight_unit":"kg","inventory_quantity":-570,"sku":"sku2097625714777","barcode":"","position":1,"option1":"Blue","option2":"","option3":"","note":"","image":{"src":"\/\/img.fantaskycdn.com\/8dacb98ea213d8adf5631151c6e3f33d.jpeg","path":"8dacb98ea213d8adf5631151c6e3f33d.jpeg","width":1200,"height":1200,"alt":"","aspect_ratio":1},"wholesale_price":[{"price":39.99,"min_quantity":1}],"weight":"0","compare_at_price":"0","price":"39.99","retail_price":"0","available":true,"url":"\/products\/3-ton?variant=4e316841-574e-494d-b142-695f6182d6c8","available_quantity":999999999,"options":[{"name":"COLOR","value":"Blue"}],"off_ratio":0,"flashsale_info":[],"sales":293};
return `
Sku : ${variantData && variantData.sku}
Weight : ${variantData && variantData.weight}${variantData &&
variantData.weight_unit}
Barcode : ${variantData && variantData.barcode}
` }()}
Sku : sku2097625714777
${function() { const minInventory = parseInt('10'); const maxInventory =
parseInt('50'); const randomInventory = Math.round(Math.random() * (maxInventory
- minInventory)) + minInventory; const customText = "Only {stock} item(s) left
in stock!".replace(/\{stock\}/g, '' + randomInventory + ''); const barWidth =
(randomInventory / maxInventory) * 100 + '%'; return `
${customText}

`; }()}
Only 38 item(s) left in stock!

87 people are viewing this right now



Description
 * 🛒Click on “ADD TO CART” to get yours now!
 * ⏰The quantity is limited. After 300 units are sold, we will restore the
   original price to $259!



1.Fast refund>>100% Money Back Guarantee.
2. If you are not satisfied within 60 days, you can return it for free.
3. Shipping: We have warehouses in Canada, the United States, the United
Kingdom, and Australia, which can be shipped to your home within 3-12 days at
the earliest.

🎉🎉Why are our products so heavily discounted? 

 * This is an unclaimed amazon package. You can find the same original product
   on amazon for a much higher price.
 * Amazon loses hundreds of thousands of packages every month, and if these
   packages go unclaimed for 1 month, amazon will sell them to us at a very low
   price!


PRODUCT DESCRIPTION

This heavy duty 3 ton car jack gets vehicles almost two feet off the ground.
Long reach and extra-low profile reaches under most performance cars. Dual
piston RAPID PUMP® technology lifts most work loads in just 3-1/2 pumps.



 * Lift height of 3-1/3 in. to 24-1/4 in., ideal for low-profile vehicles to
   trucks and SUVs
 * Lift capacity of up to 6000 lb.
 * Dual piston hydraulic system
 * 100% precision-welded steel construction
 * High-strength, rust-resistant hardware
 * Ball bearing premium rear swivel casters for 360° mobility
 * Rotating, removable jack saddle adapts quickly to lift accessories
 * Professional quality modern design
 * Industrial strength powder coat finish



FAQ: 

Q:How long will it take to receive my order?

A: For USA customers delivery will take between 3 to 10 business days. For
international customers, delivery will take about 5-12 business days. As soon as
your order ships we’ll email you a tracking number. Please note due to COVID-19
there might be some shipping delays with the post office.

Q:What is your return policy?

A: We offer a 45 day money back guarantee. You are free to try it and see if it
helps you for 45 days. If it doesn’t work you can send it back to us for a full
refund!

These goods are excellent quality and are highly recommended to wholesalers and
retailers alike.

EASILY DOUBLE YOUR MONEY!!

ON SALE NOW FOR LIMITED TIME ONLY! All Current Items!

Demand is too large, please buy before it stocking out!!

Check Out What Our Buyers Are Saying

My purchasing on their site has continued to grow. I have been able to purchase
over $100,00 worth of goods and have resold this for double my money or more! I
pretty much NEVER write reviews but the product I received was so good that I
wanted to take the time to give back by writing a review.

— Sherrie L Purser

Having sourced merchandise since March 2023, I have purchased over 10 lots,
spending nearly $1650. Here can easily find the most suitable products for my
business, so I can pick it up quickly in order to turn around for a profits and
purchase again.

— Mark Margolies

Global Shipping

Please note that the transportation is insured and it takes 3-12 working days
worldwide. However, you may receive your items earlier. The tracking number will
always be sent, so you can track every step of it! Cool things are worth the
wait!

Our guarantee

We truly provide the most amazing, fashionable, and highest quality products in
the world. We will do our best to provide excellent customer service support to
assist everyone, because we attach great importance to absolutely zero-risk
customer satisfaction. We ensure that every customer is 100% satisfied in all
aspects through 24/7/365 fast support!





YOU MAY ALSO LIKE




RECENTLY VIEWED


© 2023 explosive About Us Contact Us Shipping Information Return Policy Privacy
Policy Terms of Service Intellectual property
View Cart
${function(){ const productData = data.product; let product_change_event = '',
mouse_over_event = ' '; mouse_out_event = ''; const product_options =
productData.options.filter(Boolean) || []; for (let opt of product_options) {
product_change_event = product_change_event +
`quick-shop-selected-variant-${opt.name}.rerender(data=event.selectedValues.${opt.name});`;
mouse_out_event = mouse_out_event +
`quick-shop-selected-variant-${opt.name}.rerender(data=event.selectData.${opt.name});`;
mouse_over_event = mouse_over_event +
`@${opt.name}Mouseover="quick-shop-selected-variant-${opt.name}.rerender(data=event);"`;
} const selectedVariant = productData.variants.find(v => v.available) ||
productData.variants[0]; const statusLan = ((selectedVariant &&
!selectedVariant.available) || (!selectedVariant && !productData.available)) ?
"Sold out" : "Add to cart"; return `
${statusLan}

` }()}

${function(){ const currentSelectVariant = data.variant; const defaultVariant =
(data.product && data.product.variants && data.product.variants[0]); const
variantData = currentSelectVariant || defaultVariant || data; const retail_price
= variantData.retail_price || 0; return `
Retail 
` }()} ${function(){ const wholesale_enabled = false; const qty = data.quantity
|| 1; const currentSelectVariant = data.variant; const defaultVariant =
(data.product && data.product.variants && data.product.variants[0]); const
productVariant =
{"id":"4e316841-574e-494d-b142-695f6182d6c8","product_id":"78e576c1-249c-4b89-bffb-c02375747c5c","title":"Blue","weight_unit":"kg","inventory_quantity":-570,"sku":"sku2097625714777","barcode":"","position":1,"option1":"Blue","option2":"","option3":"","note":"","image":{"src":"\/\/img.fantaskycdn.com\/8dacb98ea213d8adf5631151c6e3f33d.jpeg","path":"8dacb98ea213d8adf5631151c6e3f33d.jpeg","width":1200,"height":1200,"alt":"","aspect_ratio":1},"wholesale_price":[{"price":39.99,"min_quantity":1}],"weight":"0","compare_at_price":"0","price":"39.99","retail_price":"0","available":true,"url":"\/products\/3-ton?variant=4e316841-574e-494d-b142-695f6182d6c8","available_quantity":999999999,"options":[{"name":"COLOR","value":"Blue"}],"off_ratio":0,"flashsale_info":[],"sales":293};
const variantData = currentSelectVariant || defaultVariant || productVariant;
const wholesale_price = variantData.wholesale_price || []; if(wholesale_enabled
&& wholesale_price.length > 0) { let wholesaleIndex =
wholesale_price.findIndex(item => { return item.min_quantity > qty; });
if(wholesaleIndex < 0){ wholesaleIndex = wholesale_price.length - 1; }else
if(wholesaleIndex > 0){ wholesaleIndex = wholesaleIndex - 1; } const
wholesalePrice = wholesale_price[wholesaleIndex] || ''; return `

` }else { return `

` } }()}
${function() { let variantImageShowed = false; const currentProduct =
data.product; return (currentProduct.options || []).map((option, index) => {
const optionName = option.name || ''; const position = `option${index + 1}`; let
isThumbImage = false; if (currentProduct.need_variant_image &&
!variantImageShowed) { const variantNames = ["color"] || []; for (let i = 0, len
= variantNames.length; i < len; i++) { const name =
variantNames[i].toLowerCase(); if (name === optionName.toLowerCase()) {
isThumbImage = true; variantImageShowed = true; } } } const variantType =
"button"; const thumbStyle = "image_with_text"; return ` ${optionName}: 
${option.values.map((value, idx) => { const selected =
data.selectedValues[optionName] == value ? 'checked' : ''; let thumbImage =
null; if (isThumbImage) { const variants = currentProduct.variants; for (let i =
0, len = variants.length; i < len; i++) { const variant = variants[i]; if
(variant[position] == value && thumbImage == null) { thumbImage = variant.image;
break; } } } return `
${value}
` }).join('')}
${optionName}
${option.values.map(value => { const selected = data.selectedValues[optionName]
== value ? 'selected' : ''; return `${value}` }).join('')}
` }).join(''); }()}
${data.originData && data.originData.value || data.value}

View Cart
${function(){ const productData = data.product; let product_change_event = '',
mouse_over_event = ' '; mouse_out_event = ''; const product_options =
productData.options.filter(Boolean) || []; for (let opt of product_options) {
product_change_event = product_change_event +
`quick-shop-selected-variant-${opt.name}.rerender(data=event.selectedValues.${opt.name});`;
mouse_out_event = mouse_out_event +
`quick-shop-selected-variant-${opt.name}.rerender(data=event.selectData.${opt.name});`;
mouse_over_event = mouse_over_event +
`@${opt.name}Mouseover="quick-shop-selected-variant-${opt.name}.rerender(data=event);"`;
} const selectedVariant = productData.variants.find(v => v.available) ||
productData.variants[0]; const statusLan = ((selectedVariant &&
!selectedVariant.available) || (!selectedVariant && !productData.available)) ?
"Sold out" : "Add to cart"; return `
${statusLan}

` }()}

${function(){ const currentSelectVariant = data.variant; const defaultVariant =
(data.product && data.product.variants && data.product.variants[0]); const
variantData = currentSelectVariant || defaultVariant || data; const retail_price
= variantData.retail_price || 0; return `
Retail 
` }()} ${function(){ const wholesale_enabled = false; const qty = data.quantity
|| 1; const currentSelectVariant = data.variant; const defaultVariant =
(data.product && data.product.variants && data.product.variants[0]); const
productVariant =
{"id":"4e316841-574e-494d-b142-695f6182d6c8","product_id":"78e576c1-249c-4b89-bffb-c02375747c5c","title":"Blue","weight_unit":"kg","inventory_quantity":-570,"sku":"sku2097625714777","barcode":"","position":1,"option1":"Blue","option2":"","option3":"","note":"","image":{"src":"\/\/img.fantaskycdn.com\/8dacb98ea213d8adf5631151c6e3f33d.jpeg","path":"8dacb98ea213d8adf5631151c6e3f33d.jpeg","width":1200,"height":1200,"alt":"","aspect_ratio":1},"wholesale_price":[{"price":39.99,"min_quantity":1}],"weight":"0","compare_at_price":"0","price":"39.99","retail_price":"0","available":true,"url":"\/products\/3-ton?variant=4e316841-574e-494d-b142-695f6182d6c8","available_quantity":999999999,"options":[{"name":"COLOR","value":"Blue"}],"off_ratio":0,"flashsale_info":[],"sales":293};
const variantData = currentSelectVariant || defaultVariant || productVariant;
const wholesale_price = variantData.wholesale_price || []; if(wholesale_enabled
&& wholesale_price.length > 0) { let wholesaleIndex =
wholesale_price.findIndex(item => { return item.min_quantity > qty; });
if(wholesaleIndex < 0){ wholesaleIndex = wholesale_price.length - 1; }else
if(wholesaleIndex > 0){ wholesaleIndex = wholesaleIndex - 1; } const
wholesalePrice = wholesale_price[wholesaleIndex] || ''; return `

` }else { return `

` } }()}
${function() { let variantImageShowed = false; const currentProduct =
data.product; return (currentProduct.options || []).map((option, index) => {
const optionName = option.name || ''; const position = `option${index + 1}`; let
isThumbImage = false; if (currentProduct.need_variant_image &&
!variantImageShowed) { const variantNames = ["color"] || []; for (let i = 0, len
= variantNames.length; i < len; i++) { const name =
variantNames[i].toLowerCase(); if (name === optionName.toLowerCase()) {
isThumbImage = true; variantImageShowed = true; } } } const variantType =
"button"; const thumbStyle = "image_with_text"; return ` ${optionName}: 
${option.values.map((value, idx) => { const selected =
data.selectedValues[optionName] == value ? 'checked' : ''; let thumbImage =
null; if (isThumbImage) { const variants = currentProduct.variants; for (let i =
0, len = variants.length; i < len; i++) { const variant = variants[i]; if
(variant[position] == value && thumbImage == null) { thumbImage = variant.image;
break; } } } return `
${value}
` }).join('')}
${optionName}
${option.values.map(value => { const selected = data.selectedValues[optionName]
== value ? 'selected' : ''; return `${value}` }).join('')}
` }).join(''); }()}
${data.originData && data.originData.value || data.value}
111
GIFTS

POINTS

Buy $70.00 more and save 12% off

111

$0.00



1



Originaltext

Diese Übersetzung bewerten
Mit deinem Feedback können wir Google Übersetzer weiter verbessern