From d178431e20c021c2609f89b95bf32c95d2f3b236 Mon Sep 17 00:00:00 2001 From: Kelson Date: Sat, 1 Feb 2020 18:14:09 +0100 Subject: [PATCH 001/351] Github Kiwix Sponsoring page link --- .github/FUNDING.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml index 0244efe..f39dc2a 100644 --- a/.github/FUNDING.yml +++ b/.github/FUNDING.yml @@ -1,6 +1,6 @@ # These are supported funding model platforms -github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2] +github: kiwix # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2] patreon: # Replace with a single Patreon username open_collective: # Replace with a single Open Collective username ko_fi: # Replace with a single Ko-fi username @@ -9,4 +9,4 @@ community_bridge: # Replace with a single Community Bridge project-name e.g., cl liberapay: # Replace with a single Liberapay username issuehunt: # Replace with a single IssueHunt username otechie: # Replace with a single Otechie username -custom: https://kiwix.org/support-us/ +custom: # https://kiwix.org/support-us/ From 15cf636ff3a45c44dcbd053604450a2055c88b0b Mon Sep 17 00:00:00 2001 From: renaud gaudin Date: Wed, 19 Aug 2020 09:36:48 +0200 Subject: [PATCH 002/351] reset master branch for 2020 codebase --- Dockerfile | 3 + README.md | 10 + README.rst | 246 -- app.wsgi | 24 - app/assets/alertify.css | 1 - app/assets/alertify.js | 1 - app/assets/bootstrap.css | 7523 -------------------------------------- app/index.html | 84 - favicon.ico | Bin 9326 -> 0 bytes setup.py | 33 - zimit.ini | 62 - zimit/__init__.py | 25 - zimit/creator.py | 146 - zimit/mailer.py | 42 - zimit/utils.py | 35 - zimit/views.py | 63 - zimit/worker.py | 20 - 17 files changed, 13 insertions(+), 8305 deletions(-) create mode 100644 Dockerfile create mode 100644 README.md delete mode 100644 README.rst delete mode 100644 app.wsgi delete mode 100644 app/assets/alertify.css delete mode 100644 app/assets/alertify.js delete mode 100644 app/assets/bootstrap.css delete mode 100644 app/index.html delete mode 100644 favicon.ico delete mode 100644 setup.py delete mode 100644 zimit.ini delete mode 100644 zimit/__init__.py delete mode 100644 zimit/creator.py delete mode 100644 zimit/mailer.py delete mode 100644 zimit/utils.py delete mode 100644 zimit/views.py delete mode 100644 zimit/worker.py diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..5ff8c33 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,3 @@ +FROM debian:buster-slim + +CMD ["/bin/bash"] diff --git a/README.md b/README.md new file mode 100644 index 0000000..9122bc7 --- /dev/null +++ b/README.md @@ -0,0 +1,10 @@ +zimit +=== + +Create ZIM files out of HTTP websites + +# Previous version + +A first version of a generic HTTP scraper was created in 2016 during the [Wikimania Esino Lario Hackathon](https://wikimania2016.wikimedia.org/wiki/Programme/Kiwix-dedicated_Hackathon). + +That version is now considered outdated and [archived in `2016` branch](https://github.com/openzim/zimit/tree/2016). diff --git a/README.rst b/README.rst deleted file mode 100644 index 12babe2..0000000 --- a/README.rst +++ /dev/null @@ -1,246 +0,0 @@ -##################################### -Create ZIM files out of HTTP websites -##################################### - -This project provides an API and an user interface in order to convert any -website into a Zim file. - -Exposed API -########### - -All APIs are talking JSON over HTTP. As such, all parameters should be sent as -stringified JSON and the Content-Type should be set to "application/json". - -POST /website-zim -================= - -By posting to this endpoint, you are asking the system to start a new download -of a website and a conversion into a Zim format. - -Required parameters -------------------- - -- **url**: URL of the website to be crawled -- **title**: Title that will be used in the created Zim file -- **email**: Email address that will get notified when the creation of the file is over - -Optional parameters -------------------- - -- **language**: An `ISO 639-3 `_ code - representing the language -- **welcome**: the page that will be first shown in the Zim file -- **description**: The description that will be embedded in the Zim file -- **author**: The author of the content - -Return values -------------- - -- **job_id**: The job id is returned in JSON format. It can be used to know the - status of the process. - -Status codes ------------- - -- `400 Bad Request` will be returned in case you are not respecting the - expected inputs. In case of error, have a look at the body of the response: - it contains information about what is missing. -- `201 Created` will be returned if the process started. - -Exemple -------- - -:: - - $ http POST http://0.0.0.0:6543/website-url url="https://refugeeinfo.eu/" title="Refugee Info" email="alexis@notmyidea.org" - HTTP/1.1 201 Created - - { - "job": "5012abe3-bee2-4dd7-be87-39a88d76035d" - } - - -GET /status/{jobid} -=================== - -Retrieve the status of a job and displays the associated logs. - -Return values -------------- - -- **status**: The status of the job, it is one of 'queued', finished', - 'failed', 'started' and 'deferred'. -- **log**: The logs of the job. - -Status codes ------------- - -- `404 Not Found` will be returned in case the requested job does not exist. -- `200 OK` will be returned in any other case. - -Exemple -------- - -:: - - http GET http://0.0.0.0:6543/status/5012abe3-bee2-4dd7-be87-39a88d76035d - HTTP/1.1 200 OK - - { - "log": "", - "status": "finished" - } - - -Okay, so how do I install it on my server? -########################################## - -Currently, the best way to install it is by retrieving the sources from github - -:: - - $ git clone https://github.com/almet/zimit.git - $ cd zimit - -Create a virtual environment and install the project in it:: - - $ virtualenv venv - $ venv/bin/pip install -e . - -Then, run it how you want, for instance with pserve:: - - $ venv/bin/pserve zimit.ini - - -In a separate process, you also need to run the worker:: - - $ venv/bin/rqworker - - -And you're ready to go. To test it:: - - $ http POST http://0.0.0.0:6543/website-url url="https://refugeeinfo.eu/" title="Refugee Info" email="alexis@notmyidea.org" - - -Debian dependencies -#################### - -Installing the dependencies -=========================== - -:: - - sudo apt-get install httrack libzim-dev libmagic-dev liblzma-dev libz-dev build-essential libtool libgumbo-dev redis-server automake pkg-config - -Installing zimwriterfs -====================== - -:: - - git clone https://github.com/wikimedia/openzim.git - cd openzim/zimwriterfs - ./autogen.sh - ./configure - make - -Then upgrade the path to zimwriterfs executable in zimit.ini - -:: - - $ rqworker & pserve zimit.ini - -How to deploy? -############## - -There are multiple ways to deploy such service, so I'll describe how I do it -with my own best-practices. - -First of all, get all the dependencies and the code. I like to have everything -available in /home/www, so let's consider this will be the case here:: - - $ mkdir /home/www/zimit.notmyidea.org - $ cd /home/www/zimit.notmyidea.org - $ git clone https://github.com/almet/zimit.git - -Then, you can change the configuration file, by creating a new one:: - - $ cd zimit - $ cp zimit.ini local.ini - -From there, you need to update the configuration to point to the correct -binaries and locations. - -Nginx configuration -=================== - -:: - - # the upstream component nginx needs to connect to - upstream zimit_upstream { - server unix:///tmp/zimit.sock; - } - - # configuration of the server - server { - listen 80; - listen [::]:80; - server_name zimit.ideascube.org; - charset utf-8; - - client_max_body_size 200M; - - location /zims { - alias /home/ideascube/zimit.ideascube.org/zims/; - autoindex on; - } - - # Finally, send all non-media requests to the Pyramid server. - location / { - uwsgi_pass zimit_upstream; - include /var/ideascube/uwsgi_params; - } - } - - -UWSGI configuration -=================== - -:: - - [uwsgi] - uid = ideascube - gid = ideascube - chdir = /home/ideascube/zimit.ideascube.org/zimit/ - ini = /home/ideascube/zimit.ideascube.org/zimit/local.ini - # the virtualenv (full path) - home = /home/ideascube/zimit.ideascube.org/venv/ - - # process-related settings - # master - master = true - # maximum number of worker processes - processes = 4 - # the socket (use the full path to be safe - socket = /tmp/zimit.sock - # ... with appropriate permissions - may be needed - chmod-socket = 666 - # stats = /tmp/ideascube.stats.sock - # clear environment on exit - vacuum = true - plugins = python - - -supervisord configuration -========================= - -:: - - [program:zimit-worker] - command=/home/ideascube/zimit.ideascube.org/venv/bin/rqworker - directory=/home/ideascube/zimit.ideascube.org/zimit/ - user=www-data - autostart=true - autorestart=true - redirect_stderr=true - -That's it! diff --git a/app.wsgi b/app.wsgi deleted file mode 100644 index f66d9b8..0000000 --- a/app.wsgi +++ /dev/null @@ -1,24 +0,0 @@ -try: - import ConfigParser as configparser -except ImportError: - import configparser -import logging.config -import os - -from zimit import main - -here = os.path.dirname(__file__) - -ini_path = os.environ.get('ZIMIT_INI') -if ini_path is None: - ini_path = os.path.join(here, 'local.ini') - -# Set up logging -logging.config.fileConfig(ini_path) - -# Parse config and create WSGI app -config = configparser.ConfigParser() -config.read(ini_path) - -application = main(config.items('DEFAULT'), **dict(config.items('app:main' -))) diff --git a/app/assets/alertify.css b/app/assets/alertify.css deleted file mode 100644 index a49a7e6..0000000 --- a/app/assets/alertify.css +++ /dev/null @@ -1 +0,0 @@ -.alertify-logs>*{padding:12px 24px;color:#fff;box-shadow:0 2px 5px 0 rgba(0,0,0,.2);border-radius:1px}.alertify-logs>*,.alertify-logs>.default{background:rgba(0,0,0,.8)}.alertify-logs>.error{background:rgba(244,67,54,.8)}.alertify-logs>.success{background:rgba(76,175,80,.9)}.alertify{position:fixed;background-color:rgba(0,0,0,.3);left:0;right:0;top:0;bottom:0;width:100%;height:100%;z-index:1}.alertify.hide{opacity:0;pointer-events:none}.alertify,.alertify.show{box-sizing:border-box;transition:all .33s cubic-bezier(.25,.8,.25,1)}.alertify,.alertify *{box-sizing:border-box}.alertify .dialog{padding:12px}.alertify .alert,.alertify .dialog{width:100%;margin:0 auto;position:relative;top:50%;transform:translateY(-50%)}.alertify .alert>*,.alertify .dialog>*{width:400px;max-width:95%;margin:0 auto;text-align:center;padding:12px;background:#fff;box-shadow:0 2px 4px -1px rgba(0,0,0,.14),0 4px 5px 0 rgba(0,0,0,.098),0 1px 10px 0 rgba(0,0,0,.084)}.alertify .alert .msg,.alertify .dialog .msg{padding:12px;margin-bottom:12px;margin:0;text-align:left}.alertify .alert input:not(.form-control),.alertify .dialog input:not(.form-control){margin-bottom:15px;width:100%;font-size:100%;padding:12px}.alertify .alert input:not(.form-control):focus,.alertify .dialog input:not(.form-control):focus{outline-offset:-2px}.alertify .alert nav,.alertify .dialog nav{text-align:right}.alertify .alert nav button:not(.btn):not(.pure-button):not(.md-button):not(.mdl-button),.alertify .dialog nav button:not(.btn):not(.pure-button):not(.md-button):not(.mdl-button){background:transparent;box-sizing:border-box;color:rgba(0,0,0,.87);position:relative;outline:0;border:0;display:inline-block;-ms-flex-align:center;-ms-grid-row-align:center;align-items:center;padding:0 6px;margin:6px 8px;line-height:36px;min-height:36px;white-space:nowrap;min-width:88px;text-align:center;text-transform:uppercase;font-size:14px;text-decoration:none;cursor:pointer;border:1px solid transparent;border-radius:2px}.alertify .alert nav button:not(.btn):not(.pure-button):not(.md-button):not(.mdl-button):active,.alertify .alert nav button:not(.btn):not(.pure-button):not(.md-button):not(.mdl-button):hover,.alertify .dialog nav button:not(.btn):not(.pure-button):not(.md-button):not(.mdl-button):active,.alertify .dialog nav button:not(.btn):not(.pure-button):not(.md-button):not(.mdl-button):hover{background-color:rgba(0,0,0,.05)}.alertify .alert nav button:not(.btn):not(.pure-button):not(.md-button):not(.mdl-button):focus,.alertify .dialog nav button:not(.btn):not(.pure-button):not(.md-button):not(.mdl-button):focus{border:1px solid rgba(0,0,0,.1)}.alertify .alert nav button.btn,.alertify .dialog nav button.btn{margin:6px 4px}.alertify-logs{position:fixed;z-index:1}.alertify-logs.bottom,.alertify-logs:not(.top){bottom:16px}.alertify-logs.left,.alertify-logs:not(.right){left:16px}.alertify-logs.left>*,.alertify-logs:not(.right)>*{float:left;transform:translateZ(0);height:auto}.alertify-logs.left>.show,.alertify-logs:not(.right)>.show{left:0}.alertify-logs.left>*,.alertify-logs.left>.hide,.alertify-logs:not(.right)>*,.alertify-logs:not(.right)>.hide{left:-110%}.alertify-logs.right{right:16px}.alertify-logs.right>*{float:right;transform:translateZ(0)}.alertify-logs.right>.show{right:0;opacity:1}.alertify-logs.right>*,.alertify-logs.right>.hide{right:-110%;opacity:0}.alertify-logs.top{top:0}.alertify-logs>*{box-sizing:border-box;transition:all .4s cubic-bezier(.25,.8,.25,1);position:relative;clear:both;backface-visibility:hidden;perspective:1000;max-height:0;margin:0;padding:0;overflow:hidden;opacity:0;pointer-events:none}.alertify-logs>.show{margin-top:12px;opacity:1;max-height:1000px;padding:12px;pointer-events:auto} \ No newline at end of file diff --git a/app/assets/alertify.js b/app/assets/alertify.js deleted file mode 100644 index bbd9136..0000000 --- a/app/assets/alertify.js +++ /dev/null @@ -1 +0,0 @@ -!function(){"use strict";function t(){var t={parent:document.body,version:"1.0.11",defaultOkLabel:"Ok",okLabel:"Ok",defaultCancelLabel:"Cancel",cancelLabel:"Cancel",defaultMaxLogItems:2,maxLogItems:2,promptValue:"",promptPlaceholder:"",closeLogOnClick:!1,closeLogOnClickDefault:!1,delay:5e3,defaultDelay:5e3,logContainerClass:"alertify-logs",logContainerDefaultClass:"alertify-logs",dialogs:{buttons:{holder:"",ok:"",cancel:""},input:"",message:"

{{message}}

",log:"
{{message}}
"},defaultDialogs:{buttons:{holder:"",ok:"",cancel:""},input:"",message:"

{{message}}

",log:"
{{message}}
"},build:function(t){var e=this.dialogs.buttons.ok,o="
"+this.dialogs.message.replace("{{message}}",t.message);return"confirm"!==t.type&&"prompt"!==t.type||(e=this.dialogs.buttons.cancel+this.dialogs.buttons.ok),"prompt"===t.type&&(o+=this.dialogs.input),o=(o+this.dialogs.buttons.holder+"
").replace("{{buttons}}",e).replace("{{ok}}",this.okLabel).replace("{{cancel}}",this.cancelLabel)},setCloseLogOnClick:function(t){this.closeLogOnClick=!!t},close:function(t,e){this.closeLogOnClick&&t.addEventListener("click",function(){o(t)}),e=e&&!isNaN(+e)?+e:this.delay,0>e?o(t):e>0&&setTimeout(function(){o(t)},e)},dialog:function(t,e,o,n){return this.setup({type:e,message:t,onOkay:o,onCancel:n})},log:function(t,e,o){var n=document.querySelectorAll(".alertify-logs > div");if(n){var i=n.length-this.maxLogItems;if(i>=0)for(var a=0,l=i+1;l>a;a++)this.close(n[a],-1)}this.notify(t,e,o)},setLogPosition:function(t){this.logContainerClass="alertify-logs "+t},setupLogContainer:function(){var t=document.querySelector(".alertify-logs"),e=this.logContainerClass;return t||(t=document.createElement("div"),t.className=e,this.parent.appendChild(t)),t.className!==e&&(t.className=e),t},notify:function(e,o,n){var i=this.setupLogContainer(),a=document.createElement("div");a.className=o||"default",t.logTemplateMethod?a.innerHTML=t.logTemplateMethod(e):a.innerHTML=e,"function"==typeof n&&a.addEventListener("click",n),i.appendChild(a),setTimeout(function(){a.className+=" show"},10),this.close(a,this.delay)},setup:function(t){function e(e){"function"!=typeof e&&(e=function(){}),i&&i.addEventListener("click",function(i){t.onOkay&&"function"==typeof t.onOkay&&(l?t.onOkay(l.value,i):t.onOkay(i)),e(l?{buttonClicked:"ok",inputValue:l.value,event:i}:{buttonClicked:"ok",event:i}),o(n)}),a&&a.addEventListener("click",function(i){t.onCancel&&"function"==typeof t.onCancel&&t.onCancel(i),e({buttonClicked:"cancel",event:i}),o(n)}),l&&l.addEventListener("keyup",function(t){13===t.which&&i.click()})}var n=document.createElement("div");n.className="alertify hide",n.innerHTML=this.build(t);var i=n.querySelector(".ok"),a=n.querySelector(".cancel"),l=n.querySelector("input"),s=n.querySelector("label");l&&("string"==typeof this.promptPlaceholder&&(s?s.textContent=this.promptPlaceholder:l.placeholder=this.promptPlaceholder),"string"==typeof this.promptValue&&(l.value=this.promptValue));var r;return"function"==typeof Promise?r=new Promise(e):e(),this.parent.appendChild(n),setTimeout(function(){n.classList.remove("hide"),l&&t.type&&"prompt"===t.type?(l.select(),l.focus()):i&&i.focus()},100),r},okBtn:function(t){return this.okLabel=t,this},setDelay:function(t){return t=t||0,this.delay=isNaN(t)?this.defaultDelay:parseInt(t,10),this},cancelBtn:function(t){return this.cancelLabel=t,this},setMaxLogItems:function(t){this.maxLogItems=parseInt(t||this.defaultMaxLogItems)},theme:function(t){switch(t.toLowerCase()){case"bootstrap":this.dialogs.buttons.ok="",this.dialogs.buttons.cancel="",this.dialogs.input="";break;case"purecss":this.dialogs.buttons.ok="",this.dialogs.buttons.cancel="";break;case"mdl":case"material-design-light":this.dialogs.buttons.ok="",this.dialogs.buttons.cancel="",this.dialogs.input="
";break;case"angular-material":this.dialogs.buttons.ok="",this.dialogs.buttons.cancel="",this.dialogs.input="
";break;case"default":default:this.dialogs.buttons.ok=this.defaultDialogs.buttons.ok,this.dialogs.buttons.cancel=this.defaultDialogs.buttons.cancel,this.dialogs.input=this.defaultDialogs.input}},reset:function(){this.parent=document.body,this.theme("default"),this.okBtn(this.defaultOkLabel),this.cancelBtn(this.defaultCancelLabel),this.setMaxLogItems(),this.promptValue="",this.promptPlaceholder="",this.delay=this.defaultDelay,this.setCloseLogOnClick(this.closeLogOnClickDefault),this.setLogPosition("bottom left"),this.logTemplateMethod=null},injectCSS:function(){if(!document.querySelector("#alertifyCSS")){var t=document.getElementsByTagName("head")[0],e=document.createElement("style");e.type="text/css",e.id="alertifyCSS",e.innerHTML=".alertify-logs>*{padding:12px 24px;color:#fff;box-shadow:0 2px 5px 0 rgba(0,0,0,.2);border-radius:1px}.alertify-logs>*,.alertify-logs>.default{background:rgba(0,0,0,.8)}.alertify-logs>.error{background:rgba(244,67,54,.8)}.alertify-logs>.success{background:rgba(76,175,80,.9)}.alertify{position:fixed;background-color:rgba(0,0,0,.3);left:0;right:0;top:0;bottom:0;width:100%;height:100%;z-index:1}.alertify.hide{opacity:0;pointer-events:none}.alertify,.alertify.show{box-sizing:border-box;transition:all .33s cubic-bezier(.25,.8,.25,1)}.alertify,.alertify *{box-sizing:border-box}.alertify .dialog{padding:12px}.alertify .alert,.alertify .dialog{width:100%;margin:0 auto;position:relative;top:50%;transform:translateY(-50%)}.alertify .alert>*,.alertify .dialog>*{width:400px;max-width:95%;margin:0 auto;text-align:center;padding:12px;background:#fff;box-shadow:0 2px 4px -1px rgba(0,0,0,.14),0 4px 5px 0 rgba(0,0,0,.098),0 1px 10px 0 rgba(0,0,0,.084)}.alertify .alert .msg,.alertify .dialog .msg{padding:12px;margin-bottom:12px;margin:0;text-align:left}.alertify .alert input:not(.form-control),.alertify .dialog input:not(.form-control){margin-bottom:15px;width:100%;font-size:100%;padding:12px}.alertify .alert input:not(.form-control):focus,.alertify .dialog input:not(.form-control):focus{outline-offset:-2px}.alertify .alert nav,.alertify .dialog nav{text-align:right}.alertify .alert nav button:not(.btn):not(.pure-button):not(.md-button):not(.mdl-button),.alertify .dialog nav button:not(.btn):not(.pure-button):not(.md-button):not(.mdl-button){background:transparent;box-sizing:border-box;color:rgba(0,0,0,.87);position:relative;outline:0;border:0;display:inline-block;-ms-flex-align:center;-ms-grid-row-align:center;align-items:center;padding:0 6px;margin:6px 8px;line-height:36px;min-height:36px;white-space:nowrap;min-width:88px;text-align:center;text-transform:uppercase;font-size:14px;text-decoration:none;cursor:pointer;border:1px solid transparent;border-radius:2px}.alertify .alert nav button:not(.btn):not(.pure-button):not(.md-button):not(.mdl-button):active,.alertify .alert nav button:not(.btn):not(.pure-button):not(.md-button):not(.mdl-button):hover,.alertify .dialog nav button:not(.btn):not(.pure-button):not(.md-button):not(.mdl-button):active,.alertify .dialog nav button:not(.btn):not(.pure-button):not(.md-button):not(.mdl-button):hover{background-color:rgba(0,0,0,.05)}.alertify .alert nav button:not(.btn):not(.pure-button):not(.md-button):not(.mdl-button):focus,.alertify .dialog nav button:not(.btn):not(.pure-button):not(.md-button):not(.mdl-button):focus{border:1px solid rgba(0,0,0,.1)}.alertify .alert nav button.btn,.alertify .dialog nav button.btn{margin:6px 4px}.alertify-logs{position:fixed;z-index:1}.alertify-logs.bottom,.alertify-logs:not(.top){bottom:16px}.alertify-logs.left,.alertify-logs:not(.right){left:16px}.alertify-logs.left>*,.alertify-logs:not(.right)>*{float:left;transform:translateZ(0);height:auto}.alertify-logs.left>.show,.alertify-logs:not(.right)>.show{left:0}.alertify-logs.left>*,.alertify-logs.left>.hide,.alertify-logs:not(.right)>*,.alertify-logs:not(.right)>.hide{left:-110%}.alertify-logs.right{right:16px}.alertify-logs.right>*{float:right;transform:translateZ(0)}.alertify-logs.right>.show{right:0;opacity:1}.alertify-logs.right>*,.alertify-logs.right>.hide{right:-110%;opacity:0}.alertify-logs.top{top:0}.alertify-logs>*{box-sizing:border-box;transition:all .4s cubic-bezier(.25,.8,.25,1);position:relative;clear:both;backface-visibility:hidden;perspective:1000;max-height:0;margin:0;padding:0;overflow:hidden;opacity:0;pointer-events:none}.alertify-logs>.show{margin-top:12px;opacity:1;max-height:1000px;padding:12px;pointer-events:auto}",t.insertBefore(e,t.firstChild)}},removeCSS:function(){var t=document.querySelector("#alertifyCSS");t&&t.parentNode&&t.parentNode.removeChild(t)}};return t.injectCSS(),{_$$alertify:t,parent:function(e){t.parent=e},reset:function(){return t.reset(),this},alert:function(e,o,n){return t.dialog(e,"alert",o,n)||this},confirm:function(e,o,n){return t.dialog(e,"confirm",o,n)||this},prompt:function(e,o,n){return t.dialog(e,"prompt",o,n)||this},log:function(e,o){return t.log(e,"default",o),this},theme:function(e){return t.theme(e),this},success:function(e,o){return t.log(e,"success",o),this},error:function(e,o){return t.log(e,"error",o),this},cancelBtn:function(e){return t.cancelBtn(e),this},okBtn:function(e){return t.okBtn(e),this},delay:function(e){return t.setDelay(e),this},placeholder:function(e){return t.promptPlaceholder=e,this},defaultValue:function(e){return t.promptValue=e,this},maxLogItems:function(e){return t.setMaxLogItems(e),this},closeLogOnClick:function(e){return t.setCloseLogOnClick(!!e),this},logPosition:function(e){return t.setLogPosition(e||""),this},setLogTemplate:function(e){return t.logTemplateMethod=e,this},clearLogs:function(){return t.setupLogContainer().innerHTML="",this},version:t.version}}var e=500,o=function(t){if(t){var o=function(){t&&t.parentNode&&t.parentNode.removeChild(t)};t.classList.remove("show"),t.classList.add("hide"),t.addEventListener("transitionend",o),setTimeout(o,e)}};if("undefined"!=typeof module&&module&&module.exports){module.exports=function(){return new t};var n=new t;for(var i in n)module.exports[i]=n[i]}else"function"==typeof define&&define.amd?define(function(){return new t}):window.alertify=new t}(); \ No newline at end of file diff --git a/app/assets/bootstrap.css b/app/assets/bootstrap.css deleted file mode 100644 index f5c0e02..0000000 --- a/app/assets/bootstrap.css +++ /dev/null @@ -1,7523 +0,0 @@ -@import url("https://fonts.googleapis.com/css?family=Roboto:300,400,500,700"); -/*! - * bootswatch v3.3.6 - * Homepage: http://bootswatch.com - * Copyright 2012-2016 Thomas Park - * Licensed under MIT - * Based on Bootstrap -*/ -/*! - * Bootstrap v3.3.6 (http://getbootstrap.com) - * Copyright 2011-2015 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - */ -/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */ -html { - font-family: sans-serif; - -ms-text-size-adjust: 100%; - -webkit-text-size-adjust: 100%; -} -body { - margin: 0; -} -article, -aside, -details, -figcaption, -figure, -footer, -header, -hgroup, -main, -menu, -nav, -section, -summary { - display: block; -} -audio, -canvas, -progress, -video { - display: inline-block; - vertical-align: baseline; -} -audio:not([controls]) { - display: none; - height: 0; -} -[hidden], -template { - display: none; -} -a { - background-color: transparent; -} -a:active, -a:hover { - outline: 0; -} -abbr[title] { - border-bottom: 1px dotted; -} -b, -strong { - font-weight: bold; -} -dfn { - font-style: italic; -} -h1 { - font-size: 2em; - margin: 0.67em 0; -} -mark { - background: #ff0; - color: #000; -} -small { - font-size: 80%; -} -sub, -sup { - font-size: 75%; - line-height: 0; - position: relative; - vertical-align: baseline; -} -sup { - top: -0.5em; -} -sub { - bottom: -0.25em; -} -img { - border: 0; -} -svg:not(:root) { - overflow: hidden; -} -figure { - margin: 1em 40px; -} -hr { - -webkit-box-sizing: content-box; - -moz-box-sizing: content-box; - box-sizing: content-box; - height: 0; -} -pre { - overflow: auto; -} -code, -kbd, -pre, -samp { - font-family: monospace, monospace; - font-size: 1em; -} -button, -input, -optgroup, -select, -textarea { - color: inherit; - font: inherit; - margin: 0; -} -button { - overflow: visible; -} -button, -select { - text-transform: none; -} -button, -html input[type="button"], -input[type="reset"], -input[type="submit"] { - -webkit-appearance: button; - cursor: pointer; -} -button[disabled], -html input[disabled] { - cursor: default; -} -button::-moz-focus-inner, -input::-moz-focus-inner { - border: 0; - padding: 0; -} -input { - line-height: normal; -} -input[type="checkbox"], -input[type="radio"] { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - padding: 0; -} -input[type="number"]::-webkit-inner-spin-button, -input[type="number"]::-webkit-outer-spin-button { - height: auto; -} -input[type="search"] { - -webkit-appearance: textfield; - -webkit-box-sizing: content-box; - -moz-box-sizing: content-box; - box-sizing: content-box; -} -input[type="search"]::-webkit-search-cancel-button, -input[type="search"]::-webkit-search-decoration { - -webkit-appearance: none; -} -fieldset { - border: 1px solid #c0c0c0; - margin: 0 2px; - padding: 0.35em 0.625em 0.75em; -} -legend { - border: 0; - padding: 0; -} -textarea { - overflow: auto; -} -optgroup { - font-weight: bold; -} -table { - border-collapse: collapse; - border-spacing: 0; -} -td, -th { - padding: 0; -} -/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */ -@media print { - *, - *:before, - *:after { - background: transparent !important; - color: #000 !important; - -webkit-box-shadow: none !important; - box-shadow: none !important; - text-shadow: none !important; - } - a, - a:visited { - text-decoration: underline; - } - a[href]:after { - content: " (" attr(href) ")"; - } - abbr[title]:after { - content: " (" attr(title) ")"; - } - a[href^="#"]:after, - a[href^="javascript:"]:after { - content: ""; - } - pre, - blockquote { - border: 1px solid #999; - page-break-inside: avoid; - } - thead { - display: table-header-group; - } - tr, - img { - page-break-inside: avoid; - } - img { - max-width: 100% !important; - } - p, - h2, - h3 { - orphans: 3; - widows: 3; - } - h2, - h3 { - page-break-after: avoid; - } - .navbar { - display: none; - } - .btn > .caret, - .dropup > .btn > .caret { - border-top-color: #000 !important; - } - .label { - border: 1px solid #000; - } - .table { - border-collapse: collapse !important; - } - .table td, - .table th { - background-color: #fff !important; - } - .table-bordered th, - .table-bordered td { - border: 1px solid #ddd !important; - } -} -@font-face { - font-family: 'Glyphicons Halflings'; - src: url('../fonts/glyphicons-halflings-regular.eot'); - src: url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('../fonts/glyphicons-halflings-regular.woff2') format('woff2'), url('../fonts/glyphicons-halflings-regular.woff') format('woff'), url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg'); -} -.glyphicon { - position: relative; - top: 1px; - display: inline-block; - font-family: 'Glyphicons Halflings'; - font-style: normal; - font-weight: normal; - line-height: 1; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} -.glyphicon-asterisk:before { - content: "\002a"; -} -.glyphicon-plus:before { - content: "\002b"; -} -.glyphicon-euro:before, -.glyphicon-eur:before { - content: "\20ac"; -} -.glyphicon-minus:before { - content: "\2212"; -} -.glyphicon-cloud:before { - content: "\2601"; -} -.glyphicon-envelope:before { - content: "\2709"; -} -.glyphicon-pencil:before { - content: "\270f"; -} -.glyphicon-glass:before { - content: "\e001"; -} -.glyphicon-music:before { - content: "\e002"; -} -.glyphicon-search:before { - content: "\e003"; -} -.glyphicon-heart:before { - content: "\e005"; -} -.glyphicon-star:before { - content: "\e006"; -} -.glyphicon-star-empty:before { - content: "\e007"; -} -.glyphicon-user:before { - content: "\e008"; -} -.glyphicon-film:before { - content: "\e009"; -} -.glyphicon-th-large:before { - content: "\e010"; -} -.glyphicon-th:before { - content: "\e011"; -} -.glyphicon-th-list:before { - content: "\e012"; -} -.glyphicon-ok:before { - content: "\e013"; -} -.glyphicon-remove:before { - content: "\e014"; -} -.glyphicon-zoom-in:before { - content: "\e015"; -} -.glyphicon-zoom-out:before { - content: "\e016"; -} -.glyphicon-off:before { - content: "\e017"; -} -.glyphicon-signal:before { - content: "\e018"; -} -.glyphicon-cog:before { - content: "\e019"; -} -.glyphicon-trash:before { - content: "\e020"; -} -.glyphicon-home:before { - content: "\e021"; -} -.glyphicon-file:before { - content: "\e022"; -} -.glyphicon-time:before { - content: "\e023"; -} -.glyphicon-road:before { - content: "\e024"; -} -.glyphicon-download-alt:before { - content: "\e025"; -} -.glyphicon-download:before { - content: "\e026"; -} -.glyphicon-upload:before { - content: "\e027"; -} -.glyphicon-inbox:before { - content: "\e028"; -} -.glyphicon-play-circle:before { - content: "\e029"; -} -.glyphicon-repeat:before { - content: "\e030"; -} -.glyphicon-refresh:before { - content: "\e031"; -} -.glyphicon-list-alt:before { - content: "\e032"; -} -.glyphicon-lock:before { - content: "\e033"; -} -.glyphicon-flag:before { - content: "\e034"; -} -.glyphicon-headphones:before { - content: "\e035"; -} -.glyphicon-volume-off:before { - content: "\e036"; -} -.glyphicon-volume-down:before { - content: "\e037"; -} -.glyphicon-volume-up:before { - content: "\e038"; -} -.glyphicon-qrcode:before { - content: "\e039"; -} -.glyphicon-barcode:before { - content: "\e040"; -} -.glyphicon-tag:before { - content: "\e041"; -} -.glyphicon-tags:before { - content: "\e042"; -} -.glyphicon-book:before { - content: "\e043"; -} -.glyphicon-bookmark:before { - content: "\e044"; -} -.glyphicon-print:before { - content: "\e045"; -} -.glyphicon-camera:before { - content: "\e046"; -} -.glyphicon-font:before { - content: "\e047"; -} -.glyphicon-bold:before { - content: "\e048"; -} -.glyphicon-italic:before { - content: "\e049"; -} -.glyphicon-text-height:before { - content: "\e050"; -} -.glyphicon-text-width:before { - content: "\e051"; -} -.glyphicon-align-left:before { - content: "\e052"; -} -.glyphicon-align-center:before { - content: "\e053"; -} -.glyphicon-align-right:before { - content: "\e054"; -} -.glyphicon-align-justify:before { - content: "\e055"; -} -.glyphicon-list:before { - content: "\e056"; -} -.glyphicon-indent-left:before { - content: "\e057"; -} -.glyphicon-indent-right:before { - content: "\e058"; -} -.glyphicon-facetime-video:before { - content: "\e059"; -} -.glyphicon-picture:before { - content: "\e060"; -} -.glyphicon-map-marker:before { - content: "\e062"; -} -.glyphicon-adjust:before { - content: "\e063"; -} -.glyphicon-tint:before { - content: "\e064"; -} -.glyphicon-edit:before { - content: "\e065"; -} -.glyphicon-share:before { - content: "\e066"; -} -.glyphicon-check:before { - content: "\e067"; -} -.glyphicon-move:before { - content: "\e068"; -} -.glyphicon-step-backward:before { - content: "\e069"; -} -.glyphicon-fast-backward:before { - content: "\e070"; -} -.glyphicon-backward:before { - content: "\e071"; -} -.glyphicon-play:before { - content: "\e072"; -} -.glyphicon-pause:before { - content: "\e073"; -} -.glyphicon-stop:before { - content: "\e074"; -} -.glyphicon-forward:before { - content: "\e075"; -} -.glyphicon-fast-forward:before { - content: "\e076"; -} -.glyphicon-step-forward:before { - content: "\e077"; -} -.glyphicon-eject:before { - content: "\e078"; -} -.glyphicon-chevron-left:before { - content: "\e079"; -} -.glyphicon-chevron-right:before { - content: "\e080"; -} -.glyphicon-plus-sign:before { - content: "\e081"; -} -.glyphicon-minus-sign:before { - content: "\e082"; -} -.glyphicon-remove-sign:before { - content: "\e083"; -} -.glyphicon-ok-sign:before { - content: "\e084"; -} -.glyphicon-question-sign:before { - content: "\e085"; -} -.glyphicon-info-sign:before { - content: "\e086"; -} -.glyphicon-screenshot:before { - content: "\e087"; -} -.glyphicon-remove-circle:before { - content: "\e088"; -} -.glyphicon-ok-circle:before { - content: "\e089"; -} -.glyphicon-ban-circle:before { - content: "\e090"; -} -.glyphicon-arrow-left:before { - content: "\e091"; -} -.glyphicon-arrow-right:before { - content: "\e092"; -} -.glyphicon-arrow-up:before { - content: "\e093"; -} -.glyphicon-arrow-down:before { - content: "\e094"; -} -.glyphicon-share-alt:before { - content: "\e095"; -} -.glyphicon-resize-full:before { - content: "\e096"; -} -.glyphicon-resize-small:before { - content: "\e097"; -} -.glyphicon-exclamation-sign:before { - content: "\e101"; -} -.glyphicon-gift:before { - content: "\e102"; -} -.glyphicon-leaf:before { - content: "\e103"; -} -.glyphicon-fire:before { - content: "\e104"; -} -.glyphicon-eye-open:before { - content: "\e105"; -} -.glyphicon-eye-close:before { - content: "\e106"; -} -.glyphicon-warning-sign:before { - content: "\e107"; -} -.glyphicon-plane:before { - content: "\e108"; -} -.glyphicon-calendar:before { - content: "\e109"; -} -.glyphicon-random:before { - content: "\e110"; -} -.glyphicon-comment:before { - content: "\e111"; -} -.glyphicon-magnet:before { - content: "\e112"; -} -.glyphicon-chevron-up:before { - content: "\e113"; -} -.glyphicon-chevron-down:before { - content: "\e114"; -} -.glyphicon-retweet:before { - content: "\e115"; -} -.glyphicon-shopping-cart:before { - content: "\e116"; -} -.glyphicon-folder-close:before { - content: "\e117"; -} -.glyphicon-folder-open:before { - content: "\e118"; -} -.glyphicon-resize-vertical:before { - content: "\e119"; -} -.glyphicon-resize-horizontal:before { - content: "\e120"; -} -.glyphicon-hdd:before { - content: "\e121"; -} -.glyphicon-bullhorn:before { - content: "\e122"; -} -.glyphicon-bell:before { - content: "\e123"; -} -.glyphicon-certificate:before { - content: "\e124"; -} -.glyphicon-thumbs-up:before { - content: "\e125"; -} -.glyphicon-thumbs-down:before { - content: "\e126"; -} -.glyphicon-hand-right:before { - content: "\e127"; -} -.glyphicon-hand-left:before { - content: "\e128"; -} -.glyphicon-hand-up:before { - content: "\e129"; -} -.glyphicon-hand-down:before { - content: "\e130"; -} -.glyphicon-circle-arrow-right:before { - content: "\e131"; -} -.glyphicon-circle-arrow-left:before { - content: "\e132"; -} -.glyphicon-circle-arrow-up:before { - content: "\e133"; -} -.glyphicon-circle-arrow-down:before { - content: "\e134"; -} -.glyphicon-globe:before { - content: "\e135"; -} -.glyphicon-wrench:before { - content: "\e136"; -} -.glyphicon-tasks:before { - content: "\e137"; -} -.glyphicon-filter:before { - content: "\e138"; -} -.glyphicon-briefcase:before { - content: "\e139"; -} -.glyphicon-fullscreen:before { - content: "\e140"; -} -.glyphicon-dashboard:before { - content: "\e141"; -} -.glyphicon-paperclip:before { - content: "\e142"; -} -.glyphicon-heart-empty:before { - content: "\e143"; -} -.glyphicon-link:before { - content: "\e144"; -} -.glyphicon-phone:before { - content: "\e145"; -} -.glyphicon-pushpin:before { - content: "\e146"; -} -.glyphicon-usd:before { - content: "\e148"; -} -.glyphicon-gbp:before { - content: "\e149"; -} -.glyphicon-sort:before { - content: "\e150"; -} -.glyphicon-sort-by-alphabet:before { - content: "\e151"; -} -.glyphicon-sort-by-alphabet-alt:before { - content: "\e152"; -} -.glyphicon-sort-by-order:before { - content: "\e153"; -} -.glyphicon-sort-by-order-alt:before { - content: "\e154"; -} -.glyphicon-sort-by-attributes:before { - content: "\e155"; -} -.glyphicon-sort-by-attributes-alt:before { - content: "\e156"; -} -.glyphicon-unchecked:before { - content: "\e157"; -} -.glyphicon-expand:before { - content: "\e158"; -} -.glyphicon-collapse-down:before { - content: "\e159"; -} -.glyphicon-collapse-up:before { - content: "\e160"; -} -.glyphicon-log-in:before { - content: "\e161"; -} -.glyphicon-flash:before { - content: "\e162"; -} -.glyphicon-log-out:before { - content: "\e163"; -} -.glyphicon-new-window:before { - content: "\e164"; -} -.glyphicon-record:before { - content: "\e165"; -} -.glyphicon-save:before { - content: "\e166"; -} -.glyphicon-open:before { - content: "\e167"; -} -.glyphicon-saved:before { - content: "\e168"; -} -.glyphicon-import:before { - content: "\e169"; -} -.glyphicon-export:before { - content: "\e170"; -} -.glyphicon-send:before { - content: "\e171"; -} -.glyphicon-floppy-disk:before { - content: "\e172"; -} -.glyphicon-floppy-saved:before { - content: "\e173"; -} -.glyphicon-floppy-remove:before { - content: "\e174"; -} -.glyphicon-floppy-save:before { - content: "\e175"; -} -.glyphicon-floppy-open:before { - content: "\e176"; -} -.glyphicon-credit-card:before { - content: "\e177"; -} -.glyphicon-transfer:before { - content: "\e178"; -} -.glyphicon-cutlery:before { - content: "\e179"; -} -.glyphicon-header:before { - content: "\e180"; -} -.glyphicon-compressed:before { - content: "\e181"; -} -.glyphicon-earphone:before { - content: "\e182"; -} -.glyphicon-phone-alt:before { - content: "\e183"; -} -.glyphicon-tower:before { - content: "\e184"; -} -.glyphicon-stats:before { - content: "\e185"; -} -.glyphicon-sd-video:before { - content: "\e186"; -} -.glyphicon-hd-video:before { - content: "\e187"; -} -.glyphicon-subtitles:before { - content: "\e188"; -} -.glyphicon-sound-stereo:before { - content: "\e189"; -} -.glyphicon-sound-dolby:before { - content: "\e190"; -} -.glyphicon-sound-5-1:before { - content: "\e191"; -} -.glyphicon-sound-6-1:before { - content: "\e192"; -} -.glyphicon-sound-7-1:before { - content: "\e193"; -} -.glyphicon-copyright-mark:before { - content: "\e194"; -} -.glyphicon-registration-mark:before { - content: "\e195"; -} -.glyphicon-cloud-download:before { - content: "\e197"; -} -.glyphicon-cloud-upload:before { - content: "\e198"; -} -.glyphicon-tree-conifer:before { - content: "\e199"; -} -.glyphicon-tree-deciduous:before { - content: "\e200"; -} -.glyphicon-cd:before { - content: "\e201"; -} -.glyphicon-save-file:before { - content: "\e202"; -} -.glyphicon-open-file:before { - content: "\e203"; -} -.glyphicon-level-up:before { - content: "\e204"; -} -.glyphicon-copy:before { - content: "\e205"; -} -.glyphicon-paste:before { - content: "\e206"; -} -.glyphicon-alert:before { - content: "\e209"; -} -.glyphicon-equalizer:before { - content: "\e210"; -} -.glyphicon-king:before { - content: "\e211"; -} -.glyphicon-queen:before { - content: "\e212"; -} -.glyphicon-pawn:before { - content: "\e213"; -} -.glyphicon-bishop:before { - content: "\e214"; -} -.glyphicon-knight:before { - content: "\e215"; -} -.glyphicon-baby-formula:before { - content: "\e216"; -} -.glyphicon-tent:before { - content: "\26fa"; -} -.glyphicon-blackboard:before { - content: "\e218"; -} -.glyphicon-bed:before { - content: "\e219"; -} -.glyphicon-apple:before { - content: "\f8ff"; -} -.glyphicon-erase:before { - content: "\e221"; -} -.glyphicon-hourglass:before { - content: "\231b"; -} -.glyphicon-lamp:before { - content: "\e223"; -} -.glyphicon-duplicate:before { - content: "\e224"; -} -.glyphicon-piggy-bank:before { - content: "\e225"; -} -.glyphicon-scissors:before { - content: "\e226"; -} -.glyphicon-bitcoin:before { - content: "\e227"; -} -.glyphicon-btc:before { - content: "\e227"; -} -.glyphicon-xbt:before { - content: "\e227"; -} -.glyphicon-yen:before { - content: "\00a5"; -} -.glyphicon-jpy:before { - content: "\00a5"; -} -.glyphicon-ruble:before { - content: "\20bd"; -} -.glyphicon-rub:before { - content: "\20bd"; -} -.glyphicon-scale:before { - content: "\e230"; -} -.glyphicon-ice-lolly:before { - content: "\e231"; -} -.glyphicon-ice-lolly-tasted:before { - content: "\e232"; -} -.glyphicon-education:before { - content: "\e233"; -} -.glyphicon-option-horizontal:before { - content: "\e234"; -} -.glyphicon-option-vertical:before { - content: "\e235"; -} -.glyphicon-menu-hamburger:before { - content: "\e236"; -} -.glyphicon-modal-window:before { - content: "\e237"; -} -.glyphicon-oil:before { - content: "\e238"; -} -.glyphicon-grain:before { - content: "\e239"; -} -.glyphicon-sunglasses:before { - content: "\e240"; -} -.glyphicon-text-size:before { - content: "\e241"; -} -.glyphicon-text-color:before { - content: "\e242"; -} -.glyphicon-text-background:before { - content: "\e243"; -} -.glyphicon-object-align-top:before { - content: "\e244"; -} -.glyphicon-object-align-bottom:before { - content: "\e245"; -} -.glyphicon-object-align-horizontal:before { - content: "\e246"; -} -.glyphicon-object-align-left:before { - content: "\e247"; -} -.glyphicon-object-align-vertical:before { - content: "\e248"; -} -.glyphicon-object-align-right:before { - content: "\e249"; -} -.glyphicon-triangle-right:before { - content: "\e250"; -} -.glyphicon-triangle-left:before { - content: "\e251"; -} -.glyphicon-triangle-bottom:before { - content: "\e252"; -} -.glyphicon-triangle-top:before { - content: "\e253"; -} -.glyphicon-console:before { - content: "\e254"; -} -.glyphicon-superscript:before { - content: "\e255"; -} -.glyphicon-subscript:before { - content: "\e256"; -} -.glyphicon-menu-left:before { - content: "\e257"; -} -.glyphicon-menu-right:before { - content: "\e258"; -} -.glyphicon-menu-down:before { - content: "\e259"; -} -.glyphicon-menu-up:before { - content: "\e260"; -} -* { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} -*:before, -*:after { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} -html { - font-size: 10px; - -webkit-tap-highlight-color: rgba(0, 0, 0, 0); -} -body { - font-family: "Roboto", "Helvetica Neue", Helvetica, Arial, sans-serif; - font-size: 13px; - line-height: 1.846; - color: #666666; - background-color: #ffffff; -} -input, -button, -select, -textarea { - font-family: inherit; - font-size: inherit; - line-height: inherit; -} -a { - color: #2196f3; - text-decoration: none; -} -a:hover, -a:focus { - color: #0a6ebd; - text-decoration: underline; -} -a:focus { - outline: thin dotted; - outline: 5px auto -webkit-focus-ring-color; - outline-offset: -2px; -} -figure { - margin: 0; -} -img { - vertical-align: middle; -} -.img-responsive, -.thumbnail > img, -.thumbnail a > img, -.carousel-inner > .item > img, -.carousel-inner > .item > a > img { - display: block; - max-width: 100%; - height: auto; -} -.img-rounded { - border-radius: 3px; -} -.img-thumbnail { - padding: 4px; - line-height: 1.846; - background-color: #ffffff; - border: 1px solid #dddddd; - border-radius: 3px; - -webkit-transition: all 0.2s ease-in-out; - -o-transition: all 0.2s ease-in-out; - transition: all 0.2s ease-in-out; - display: inline-block; - max-width: 100%; - height: auto; -} -.img-circle { - border-radius: 50%; -} -hr { - margin-top: 23px; - margin-bottom: 23px; - border: 0; - border-top: 1px solid #eeeeee; -} -.sr-only { - position: absolute; - width: 1px; - height: 1px; - margin: -1px; - padding: 0; - overflow: hidden; - clip: rect(0, 0, 0, 0); - border: 0; -} -.sr-only-focusable:active, -.sr-only-focusable:focus { - position: static; - width: auto; - height: auto; - margin: 0; - overflow: visible; - clip: auto; -} -[role="button"] { - cursor: pointer; -} -h1, -h2, -h3, -h4, -h5, -h6, -.h1, -.h2, -.h3, -.h4, -.h5, -.h6 { - font-family: inherit; - font-weight: 400; - line-height: 1.1; - color: #444444; -} -h1 small, -h2 small, -h3 small, -h4 small, -h5 small, -h6 small, -.h1 small, -.h2 small, -.h3 small, -.h4 small, -.h5 small, -.h6 small, -h1 .small, -h2 .small, -h3 .small, -h4 .small, -h5 .small, -h6 .small, -.h1 .small, -.h2 .small, -.h3 .small, -.h4 .small, -.h5 .small, -.h6 .small { - font-weight: normal; - line-height: 1; - color: #bbbbbb; -} -h1, -.h1, -h2, -.h2, -h3, -.h3 { - margin-top: 23px; - margin-bottom: 11.5px; -} -h1 small, -.h1 small, -h2 small, -.h2 small, -h3 small, -.h3 small, -h1 .small, -.h1 .small, -h2 .small, -.h2 .small, -h3 .small, -.h3 .small { - font-size: 65%; -} -h4, -.h4, -h5, -.h5, -h6, -.h6 { - margin-top: 11.5px; - margin-bottom: 11.5px; -} -h4 small, -.h4 small, -h5 small, -.h5 small, -h6 small, -.h6 small, -h4 .small, -.h4 .small, -h5 .small, -.h5 .small, -h6 .small, -.h6 .small { - font-size: 75%; -} -h1, -.h1 { - font-size: 56px; -} -h2, -.h2 { - font-size: 45px; -} -h3, -.h3 { - font-size: 34px; -} -h4, -.h4 { - font-size: 24px; -} -h5, -.h5 { - font-size: 20px; -} -h6, -.h6 { - font-size: 14px; -} -p { - margin: 0 0 11.5px; -} -.lead { - margin-bottom: 23px; - font-size: 14px; - font-weight: 300; - line-height: 1.4; -} -@media (min-width: 768px) { - .lead { - font-size: 19.5px; - } -} -small, -.small { - font-size: 92%; -} -mark, -.mark { - background-color: #ffe0b2; - padding: .2em; -} -.text-left { - text-align: left; -} -.text-right { - text-align: right; -} -.text-center { - text-align: center; -} -.text-justify { - text-align: justify; -} -.text-nowrap { - white-space: nowrap; -} -.text-lowercase { - text-transform: lowercase; -} -.text-uppercase { - text-transform: uppercase; -} -.text-capitalize { - text-transform: capitalize; -} -.text-muted { - color: #bbbbbb; -} -.text-primary { - color: #2196f3; -} -a.text-primary:hover, -a.text-primary:focus { - color: #0c7cd5; -} -.text-success { - color: #4caf50; -} -a.text-success:hover, -a.text-success:focus { - color: #3d8b40; -} -.text-info { - color: #9c27b0; -} -a.text-info:hover, -a.text-info:focus { - color: #771e86; -} -.text-warning { - color: #ff9800; -} -a.text-warning:hover, -a.text-warning:focus { - color: #cc7a00; -} -.text-danger { - color: #e51c23; -} -a.text-danger:hover, -a.text-danger:focus { - color: #b9151b; -} -.bg-primary { - color: #fff; - background-color: #2196f3; -} -a.bg-primary:hover, -a.bg-primary:focus { - background-color: #0c7cd5; -} -.bg-success { - background-color: #dff0d8; -} -a.bg-success:hover, -a.bg-success:focus { - background-color: #c1e2b3; -} -.bg-info { - background-color: #e1bee7; -} -a.bg-info:hover, -a.bg-info:focus { - background-color: #d099d9; -} -.bg-warning { - background-color: #ffe0b2; -} -a.bg-warning:hover, -a.bg-warning:focus { - background-color: #ffcb7f; -} -.bg-danger { - background-color: #f9bdbb; -} -a.bg-danger:hover, -a.bg-danger:focus { - background-color: #f5908c; -} -.page-header { - padding-bottom: 10.5px; - margin: 46px 0 23px; - border-bottom: 1px solid #eeeeee; -} -ul, -ol { - margin-top: 0; - margin-bottom: 11.5px; -} -ul ul, -ol ul, -ul ol, -ol ol { - margin-bottom: 0; -} -.list-unstyled { - padding-left: 0; - list-style: none; -} -.list-inline { - padding-left: 0; - list-style: none; - margin-left: -5px; -} -.list-inline > li { - display: inline-block; - padding-left: 5px; - padding-right: 5px; -} -dl { - margin-top: 0; - margin-bottom: 23px; -} -dt, -dd { - line-height: 1.846; -} -dt { - font-weight: bold; -} -dd { - margin-left: 0; -} -@media (min-width: 768px) { - .dl-horizontal dt { - float: left; - width: 160px; - clear: left; - text-align: right; - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; - } - .dl-horizontal dd { - margin-left: 180px; - } -} -abbr[title], -abbr[data-original-title] { - cursor: help; - border-bottom: 1px dotted #bbbbbb; -} -.initialism { - font-size: 90%; - text-transform: uppercase; -} -blockquote { - padding: 11.5px 23px; - margin: 0 0 23px; - font-size: 16.25px; - border-left: 5px solid #eeeeee; -} -blockquote p:last-child, -blockquote ul:last-child, -blockquote ol:last-child { - margin-bottom: 0; -} -blockquote footer, -blockquote small, -blockquote .small { - display: block; - font-size: 80%; - line-height: 1.846; - color: #bbbbbb; -} -blockquote footer:before, -blockquote small:before, -blockquote .small:before { - content: '\2014 \00A0'; -} -.blockquote-reverse, -blockquote.pull-right { - padding-right: 15px; - padding-left: 0; - border-right: 5px solid #eeeeee; - border-left: 0; - text-align: right; -} -.blockquote-reverse footer:before, -blockquote.pull-right footer:before, -.blockquote-reverse small:before, -blockquote.pull-right small:before, -.blockquote-reverse .small:before, -blockquote.pull-right .small:before { - content: ''; -} -.blockquote-reverse footer:after, -blockquote.pull-right footer:after, -.blockquote-reverse small:after, -blockquote.pull-right small:after, -.blockquote-reverse .small:after, -blockquote.pull-right .small:after { - content: '\00A0 \2014'; -} -address { - margin-bottom: 23px; - font-style: normal; - line-height: 1.846; -} -code, -kbd, -pre, -samp { - font-family: Menlo, Monaco, Consolas, "Courier New", monospace; -} -code { - padding: 2px 4px; - font-size: 90%; - color: #c7254e; - background-color: #f9f2f4; - border-radius: 3px; -} -kbd { - padding: 2px 4px; - font-size: 90%; - color: #ffffff; - background-color: #333333; - border-radius: 3px; - -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.25); - box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.25); -} -kbd kbd { - padding: 0; - font-size: 100%; - font-weight: bold; - -webkit-box-shadow: none; - box-shadow: none; -} -pre { - display: block; - padding: 11px; - margin: 0 0 11.5px; - font-size: 12px; - line-height: 1.846; - word-break: break-all; - word-wrap: break-word; - color: #212121; - background-color: #f5f5f5; - border: 1px solid #cccccc; - border-radius: 3px; -} -pre code { - padding: 0; - font-size: inherit; - color: inherit; - white-space: pre-wrap; - background-color: transparent; - border-radius: 0; -} -.pre-scrollable { - max-height: 340px; - overflow-y: scroll; -} -.container { - margin-right: auto; - margin-left: auto; - padding-left: 15px; - padding-right: 15px; -} -@media (min-width: 768px) { - .container { - width: 750px; - } -} -@media (min-width: 992px) { - .container { - width: 970px; - } -} -@media (min-width: 1200px) { - .container { - width: 1170px; - } -} -.container-fluid { - margin-right: auto; - margin-left: auto; - padding-left: 15px; - padding-right: 15px; -} -.row { - margin-left: -15px; - margin-right: -15px; -} -.col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12 { - position: relative; - min-height: 1px; - padding-left: 15px; - padding-right: 15px; -} -.col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12 { - float: left; -} -.col-xs-12 { - width: 100%; -} -.col-xs-11 { - width: 91.66666667%; -} -.col-xs-10 { - width: 83.33333333%; -} -.col-xs-9 { - width: 75%; -} -.col-xs-8 { - width: 66.66666667%; -} -.col-xs-7 { - width: 58.33333333%; -} -.col-xs-6 { - width: 50%; -} -.col-xs-5 { - width: 41.66666667%; -} -.col-xs-4 { - width: 33.33333333%; -} -.col-xs-3 { - width: 25%; -} -.col-xs-2 { - width: 16.66666667%; -} -.col-xs-1 { - width: 8.33333333%; -} -.col-xs-pull-12 { - right: 100%; -} -.col-xs-pull-11 { - right: 91.66666667%; -} -.col-xs-pull-10 { - right: 83.33333333%; -} -.col-xs-pull-9 { - right: 75%; -} -.col-xs-pull-8 { - right: 66.66666667%; -} -.col-xs-pull-7 { - right: 58.33333333%; -} -.col-xs-pull-6 { - right: 50%; -} -.col-xs-pull-5 { - right: 41.66666667%; -} -.col-xs-pull-4 { - right: 33.33333333%; -} -.col-xs-pull-3 { - right: 25%; -} -.col-xs-pull-2 { - right: 16.66666667%; -} -.col-xs-pull-1 { - right: 8.33333333%; -} -.col-xs-pull-0 { - right: auto; -} -.col-xs-push-12 { - left: 100%; -} -.col-xs-push-11 { - left: 91.66666667%; -} -.col-xs-push-10 { - left: 83.33333333%; -} -.col-xs-push-9 { - left: 75%; -} -.col-xs-push-8 { - left: 66.66666667%; -} -.col-xs-push-7 { - left: 58.33333333%; -} -.col-xs-push-6 { - left: 50%; -} -.col-xs-push-5 { - left: 41.66666667%; -} -.col-xs-push-4 { - left: 33.33333333%; -} -.col-xs-push-3 { - left: 25%; -} -.col-xs-push-2 { - left: 16.66666667%; -} -.col-xs-push-1 { - left: 8.33333333%; -} -.col-xs-push-0 { - left: auto; -} -.col-xs-offset-12 { - margin-left: 100%; -} -.col-xs-offset-11 { - margin-left: 91.66666667%; -} -.col-xs-offset-10 { - margin-left: 83.33333333%; -} -.col-xs-offset-9 { - margin-left: 75%; -} -.col-xs-offset-8 { - margin-left: 66.66666667%; -} -.col-xs-offset-7 { - margin-left: 58.33333333%; -} -.col-xs-offset-6 { - margin-left: 50%; -} -.col-xs-offset-5 { - margin-left: 41.66666667%; -} -.col-xs-offset-4 { - margin-left: 33.33333333%; -} -.col-xs-offset-3 { - margin-left: 25%; -} -.col-xs-offset-2 { - margin-left: 16.66666667%; -} -.col-xs-offset-1 { - margin-left: 8.33333333%; -} -.col-xs-offset-0 { - margin-left: 0%; -} -@media (min-width: 768px) { - .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12 { - float: left; - } - .col-sm-12 { - width: 100%; - } - .col-sm-11 { - width: 91.66666667%; - } - .col-sm-10 { - width: 83.33333333%; - } - .col-sm-9 { - width: 75%; - } - .col-sm-8 { - width: 66.66666667%; - } - .col-sm-7 { - width: 58.33333333%; - } - .col-sm-6 { - width: 50%; - } - .col-sm-5 { - width: 41.66666667%; - } - .col-sm-4 { - width: 33.33333333%; - } - .col-sm-3 { - width: 25%; - } - .col-sm-2 { - width: 16.66666667%; - } - .col-sm-1 { - width: 8.33333333%; - } - .col-sm-pull-12 { - right: 100%; - } - .col-sm-pull-11 { - right: 91.66666667%; - } - .col-sm-pull-10 { - right: 83.33333333%; - } - .col-sm-pull-9 { - right: 75%; - } - .col-sm-pull-8 { - right: 66.66666667%; - } - .col-sm-pull-7 { - right: 58.33333333%; - } - .col-sm-pull-6 { - right: 50%; - } - .col-sm-pull-5 { - right: 41.66666667%; - } - .col-sm-pull-4 { - right: 33.33333333%; - } - .col-sm-pull-3 { - right: 25%; - } - .col-sm-pull-2 { - right: 16.66666667%; - } - .col-sm-pull-1 { - right: 8.33333333%; - } - .col-sm-pull-0 { - right: auto; - } - .col-sm-push-12 { - left: 100%; - } - .col-sm-push-11 { - left: 91.66666667%; - } - .col-sm-push-10 { - left: 83.33333333%; - } - .col-sm-push-9 { - left: 75%; - } - .col-sm-push-8 { - left: 66.66666667%; - } - .col-sm-push-7 { - left: 58.33333333%; - } - .col-sm-push-6 { - left: 50%; - } - .col-sm-push-5 { - left: 41.66666667%; - } - .col-sm-push-4 { - left: 33.33333333%; - } - .col-sm-push-3 { - left: 25%; - } - .col-sm-push-2 { - left: 16.66666667%; - } - .col-sm-push-1 { - left: 8.33333333%; - } - .col-sm-push-0 { - left: auto; - } - .col-sm-offset-12 { - margin-left: 100%; - } - .col-sm-offset-11 { - margin-left: 91.66666667%; - } - .col-sm-offset-10 { - margin-left: 83.33333333%; - } - .col-sm-offset-9 { - margin-left: 75%; - } - .col-sm-offset-8 { - margin-left: 66.66666667%; - } - .col-sm-offset-7 { - margin-left: 58.33333333%; - } - .col-sm-offset-6 { - margin-left: 50%; - } - .col-sm-offset-5 { - margin-left: 41.66666667%; - } - .col-sm-offset-4 { - margin-left: 33.33333333%; - } - .col-sm-offset-3 { - margin-left: 25%; - } - .col-sm-offset-2 { - margin-left: 16.66666667%; - } - .col-sm-offset-1 { - margin-left: 8.33333333%; - } - .col-sm-offset-0 { - margin-left: 0%; - } -} -@media (min-width: 992px) { - .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12 { - float: left; - } - .col-md-12 { - width: 100%; - } - .col-md-11 { - width: 91.66666667%; - } - .col-md-10 { - width: 83.33333333%; - } - .col-md-9 { - width: 75%; - } - .col-md-8 { - width: 66.66666667%; - } - .col-md-7 { - width: 58.33333333%; - } - .col-md-6 { - width: 50%; - } - .col-md-5 { - width: 41.66666667%; - } - .col-md-4 { - width: 33.33333333%; - } - .col-md-3 { - width: 25%; - } - .col-md-2 { - width: 16.66666667%; - } - .col-md-1 { - width: 8.33333333%; - } - .col-md-pull-12 { - right: 100%; - } - .col-md-pull-11 { - right: 91.66666667%; - } - .col-md-pull-10 { - right: 83.33333333%; - } - .col-md-pull-9 { - right: 75%; - } - .col-md-pull-8 { - right: 66.66666667%; - } - .col-md-pull-7 { - right: 58.33333333%; - } - .col-md-pull-6 { - right: 50%; - } - .col-md-pull-5 { - right: 41.66666667%; - } - .col-md-pull-4 { - right: 33.33333333%; - } - .col-md-pull-3 { - right: 25%; - } - .col-md-pull-2 { - right: 16.66666667%; - } - .col-md-pull-1 { - right: 8.33333333%; - } - .col-md-pull-0 { - right: auto; - } - .col-md-push-12 { - left: 100%; - } - .col-md-push-11 { - left: 91.66666667%; - } - .col-md-push-10 { - left: 83.33333333%; - } - .col-md-push-9 { - left: 75%; - } - .col-md-push-8 { - left: 66.66666667%; - } - .col-md-push-7 { - left: 58.33333333%; - } - .col-md-push-6 { - left: 50%; - } - .col-md-push-5 { - left: 41.66666667%; - } - .col-md-push-4 { - left: 33.33333333%; - } - .col-md-push-3 { - left: 25%; - } - .col-md-push-2 { - left: 16.66666667%; - } - .col-md-push-1 { - left: 8.33333333%; - } - .col-md-push-0 { - left: auto; - } - .col-md-offset-12 { - margin-left: 100%; - } - .col-md-offset-11 { - margin-left: 91.66666667%; - } - .col-md-offset-10 { - margin-left: 83.33333333%; - } - .col-md-offset-9 { - margin-left: 75%; - } - .col-md-offset-8 { - margin-left: 66.66666667%; - } - .col-md-offset-7 { - margin-left: 58.33333333%; - } - .col-md-offset-6 { - margin-left: 50%; - } - .col-md-offset-5 { - margin-left: 41.66666667%; - } - .col-md-offset-4 { - margin-left: 33.33333333%; - } - .col-md-offset-3 { - margin-left: 25%; - } - .col-md-offset-2 { - margin-left: 16.66666667%; - } - .col-md-offset-1 { - margin-left: 8.33333333%; - } - .col-md-offset-0 { - margin-left: 0%; - } -} -@media (min-width: 1200px) { - .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12 { - float: left; - } - .col-lg-12 { - width: 100%; - } - .col-lg-11 { - width: 91.66666667%; - } - .col-lg-10 { - width: 83.33333333%; - } - .col-lg-9 { - width: 75%; - } - .col-lg-8 { - width: 66.66666667%; - } - .col-lg-7 { - width: 58.33333333%; - } - .col-lg-6 { - width: 50%; - } - .col-lg-5 { - width: 41.66666667%; - } - .col-lg-4 { - width: 33.33333333%; - } - .col-lg-3 { - width: 25%; - } - .col-lg-2 { - width: 16.66666667%; - } - .col-lg-1 { - width: 8.33333333%; - } - .col-lg-pull-12 { - right: 100%; - } - .col-lg-pull-11 { - right: 91.66666667%; - } - .col-lg-pull-10 { - right: 83.33333333%; - } - .col-lg-pull-9 { - right: 75%; - } - .col-lg-pull-8 { - right: 66.66666667%; - } - .col-lg-pull-7 { - right: 58.33333333%; - } - .col-lg-pull-6 { - right: 50%; - } - .col-lg-pull-5 { - right: 41.66666667%; - } - .col-lg-pull-4 { - right: 33.33333333%; - } - .col-lg-pull-3 { - right: 25%; - } - .col-lg-pull-2 { - right: 16.66666667%; - } - .col-lg-pull-1 { - right: 8.33333333%; - } - .col-lg-pull-0 { - right: auto; - } - .col-lg-push-12 { - left: 100%; - } - .col-lg-push-11 { - left: 91.66666667%; - } - .col-lg-push-10 { - left: 83.33333333%; - } - .col-lg-push-9 { - left: 75%; - } - .col-lg-push-8 { - left: 66.66666667%; - } - .col-lg-push-7 { - left: 58.33333333%; - } - .col-lg-push-6 { - left: 50%; - } - .col-lg-push-5 { - left: 41.66666667%; - } - .col-lg-push-4 { - left: 33.33333333%; - } - .col-lg-push-3 { - left: 25%; - } - .col-lg-push-2 { - left: 16.66666667%; - } - .col-lg-push-1 { - left: 8.33333333%; - } - .col-lg-push-0 { - left: auto; - } - .col-lg-offset-12 { - margin-left: 100%; - } - .col-lg-offset-11 { - margin-left: 91.66666667%; - } - .col-lg-offset-10 { - margin-left: 83.33333333%; - } - .col-lg-offset-9 { - margin-left: 75%; - } - .col-lg-offset-8 { - margin-left: 66.66666667%; - } - .col-lg-offset-7 { - margin-left: 58.33333333%; - } - .col-lg-offset-6 { - margin-left: 50%; - } - .col-lg-offset-5 { - margin-left: 41.66666667%; - } - .col-lg-offset-4 { - margin-left: 33.33333333%; - } - .col-lg-offset-3 { - margin-left: 25%; - } - .col-lg-offset-2 { - margin-left: 16.66666667%; - } - .col-lg-offset-1 { - margin-left: 8.33333333%; - } - .col-lg-offset-0 { - margin-left: 0%; - } -} -table { - background-color: transparent; -} -caption { - padding-top: 8px; - padding-bottom: 8px; - color: #bbbbbb; - text-align: left; -} -th { - text-align: left; -} -.table { - width: 100%; - max-width: 100%; - margin-bottom: 23px; -} -.table > thead > tr > th, -.table > tbody > tr > th, -.table > tfoot > tr > th, -.table > thead > tr > td, -.table > tbody > tr > td, -.table > tfoot > tr > td { - padding: 8px; - line-height: 1.846; - vertical-align: top; - border-top: 1px solid #dddddd; -} -.table > thead > tr > th { - vertical-align: bottom; - border-bottom: 2px solid #dddddd; -} -.table > caption + thead > tr:first-child > th, -.table > colgroup + thead > tr:first-child > th, -.table > thead:first-child > tr:first-child > th, -.table > caption + thead > tr:first-child > td, -.table > colgroup + thead > tr:first-child > td, -.table > thead:first-child > tr:first-child > td { - border-top: 0; -} -.table > tbody + tbody { - border-top: 2px solid #dddddd; -} -.table .table { - background-color: #ffffff; -} -.table-condensed > thead > tr > th, -.table-condensed > tbody > tr > th, -.table-condensed > tfoot > tr > th, -.table-condensed > thead > tr > td, -.table-condensed > tbody > tr > td, -.table-condensed > tfoot > tr > td { - padding: 5px; -} -.table-bordered { - border: 1px solid #dddddd; -} -.table-bordered > thead > tr > th, -.table-bordered > tbody > tr > th, -.table-bordered > tfoot > tr > th, -.table-bordered > thead > tr > td, -.table-bordered > tbody > tr > td, -.table-bordered > tfoot > tr > td { - border: 1px solid #dddddd; -} -.table-bordered > thead > tr > th, -.table-bordered > thead > tr > td { - border-bottom-width: 2px; -} -.table-striped > tbody > tr:nth-of-type(odd) { - background-color: #f9f9f9; -} -.table-hover > tbody > tr:hover { - background-color: #f5f5f5; -} -table col[class*="col-"] { - position: static; - float: none; - display: table-column; -} -table td[class*="col-"], -table th[class*="col-"] { - position: static; - float: none; - display: table-cell; -} -.table > thead > tr > td.active, -.table > tbody > tr > td.active, -.table > tfoot > tr > td.active, -.table > thead > tr > th.active, -.table > tbody > tr > th.active, -.table > tfoot > tr > th.active, -.table > thead > tr.active > td, -.table > tbody > tr.active > td, -.table > tfoot > tr.active > td, -.table > thead > tr.active > th, -.table > tbody > tr.active > th, -.table > tfoot > tr.active > th { - background-color: #f5f5f5; -} -.table-hover > tbody > tr > td.active:hover, -.table-hover > tbody > tr > th.active:hover, -.table-hover > tbody > tr.active:hover > td, -.table-hover > tbody > tr:hover > .active, -.table-hover > tbody > tr.active:hover > th { - background-color: #e8e8e8; -} -.table > thead > tr > td.success, -.table > tbody > tr > td.success, -.table > tfoot > tr > td.success, -.table > thead > tr > th.success, -.table > tbody > tr > th.success, -.table > tfoot > tr > th.success, -.table > thead > tr.success > td, -.table > tbody > tr.success > td, -.table > tfoot > tr.success > td, -.table > thead > tr.success > th, -.table > tbody > tr.success > th, -.table > tfoot > tr.success > th { - background-color: #dff0d8; -} -.table-hover > tbody > tr > td.success:hover, -.table-hover > tbody > tr > th.success:hover, -.table-hover > tbody > tr.success:hover > td, -.table-hover > tbody > tr:hover > .success, -.table-hover > tbody > tr.success:hover > th { - background-color: #d0e9c6; -} -.table > thead > tr > td.info, -.table > tbody > tr > td.info, -.table > tfoot > tr > td.info, -.table > thead > tr > th.info, -.table > tbody > tr > th.info, -.table > tfoot > tr > th.info, -.table > thead > tr.info > td, -.table > tbody > tr.info > td, -.table > tfoot > tr.info > td, -.table > thead > tr.info > th, -.table > tbody > tr.info > th, -.table > tfoot > tr.info > th { - background-color: #e1bee7; -} -.table-hover > tbody > tr > td.info:hover, -.table-hover > tbody > tr > th.info:hover, -.table-hover > tbody > tr.info:hover > td, -.table-hover > tbody > tr:hover > .info, -.table-hover > tbody > tr.info:hover > th { - background-color: #d8abe0; -} -.table > thead > tr > td.warning, -.table > tbody > tr > td.warning, -.table > tfoot > tr > td.warning, -.table > thead > tr > th.warning, -.table > tbody > tr > th.warning, -.table > tfoot > tr > th.warning, -.table > thead > tr.warning > td, -.table > tbody > tr.warning > td, -.table > tfoot > tr.warning > td, -.table > thead > tr.warning > th, -.table > tbody > tr.warning > th, -.table > tfoot > tr.warning > th { - background-color: #ffe0b2; -} -.table-hover > tbody > tr > td.warning:hover, -.table-hover > tbody > tr > th.warning:hover, -.table-hover > tbody > tr.warning:hover > td, -.table-hover > tbody > tr:hover > .warning, -.table-hover > tbody > tr.warning:hover > th { - background-color: #ffd699; -} -.table > thead > tr > td.danger, -.table > tbody > tr > td.danger, -.table > tfoot > tr > td.danger, -.table > thead > tr > th.danger, -.table > tbody > tr > th.danger, -.table > tfoot > tr > th.danger, -.table > thead > tr.danger > td, -.table > tbody > tr.danger > td, -.table > tfoot > tr.danger > td, -.table > thead > tr.danger > th, -.table > tbody > tr.danger > th, -.table > tfoot > tr.danger > th { - background-color: #f9bdbb; -} -.table-hover > tbody > tr > td.danger:hover, -.table-hover > tbody > tr > th.danger:hover, -.table-hover > tbody > tr.danger:hover > td, -.table-hover > tbody > tr:hover > .danger, -.table-hover > tbody > tr.danger:hover > th { - background-color: #f7a6a4; -} -.table-responsive { - overflow-x: auto; - min-height: 0.01%; -} -@media screen and (max-width: 767px) { - .table-responsive { - width: 100%; - margin-bottom: 17.25px; - overflow-y: hidden; - -ms-overflow-style: -ms-autohiding-scrollbar; - border: 1px solid #dddddd; - } - .table-responsive > .table { - margin-bottom: 0; - } - .table-responsive > .table > thead > tr > th, - .table-responsive > .table > tbody > tr > th, - .table-responsive > .table > tfoot > tr > th, - .table-responsive > .table > thead > tr > td, - .table-responsive > .table > tbody > tr > td, - .table-responsive > .table > tfoot > tr > td { - white-space: nowrap; - } - .table-responsive > .table-bordered { - border: 0; - } - .table-responsive > .table-bordered > thead > tr > th:first-child, - .table-responsive > .table-bordered > tbody > tr > th:first-child, - .table-responsive > .table-bordered > tfoot > tr > th:first-child, - .table-responsive > .table-bordered > thead > tr > td:first-child, - .table-responsive > .table-bordered > tbody > tr > td:first-child, - .table-responsive > .table-bordered > tfoot > tr > td:first-child { - border-left: 0; - } - .table-responsive > .table-bordered > thead > tr > th:last-child, - .table-responsive > .table-bordered > tbody > tr > th:last-child, - .table-responsive > .table-bordered > tfoot > tr > th:last-child, - .table-responsive > .table-bordered > thead > tr > td:last-child, - .table-responsive > .table-bordered > tbody > tr > td:last-child, - .table-responsive > .table-bordered > tfoot > tr > td:last-child { - border-right: 0; - } - .table-responsive > .table-bordered > tbody > tr:last-child > th, - .table-responsive > .table-bordered > tfoot > tr:last-child > th, - .table-responsive > .table-bordered > tbody > tr:last-child > td, - .table-responsive > .table-bordered > tfoot > tr:last-child > td { - border-bottom: 0; - } -} -fieldset { - padding: 0; - margin: 0; - border: 0; - min-width: 0; -} -legend { - display: block; - width: 100%; - padding: 0; - margin-bottom: 23px; - font-size: 19.5px; - line-height: inherit; - color: #212121; - border: 0; - border-bottom: 1px solid #e5e5e5; -} -label { - display: inline-block; - max-width: 100%; - margin-bottom: 5px; - font-weight: bold; -} -input[type="search"] { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} -input[type="radio"], -input[type="checkbox"] { - margin: 4px 0 0; - margin-top: 1px \9; - line-height: normal; -} -input[type="file"] { - display: block; -} -input[type="range"] { - display: block; - width: 100%; -} -select[multiple], -select[size] { - height: auto; -} -input[type="file"]:focus, -input[type="radio"]:focus, -input[type="checkbox"]:focus { - outline: thin dotted; - outline: 5px auto -webkit-focus-ring-color; - outline-offset: -2px; -} -output { - display: block; - padding-top: 7px; - font-size: 13px; - line-height: 1.846; - color: #666666; -} -.form-control { - display: block; - width: 100%; - height: 37px; - padding: 6px 16px; - font-size: 13px; - line-height: 1.846; - color: #666666; - background-color: transparent; - background-image: none; - border: 1px solid transparent; - border-radius: 3px; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - -webkit-transition: border-color ease-in-out .15s, -webkit-box-shadow ease-in-out .15s; - -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; - transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; -} -.form-control:focus { - border-color: #66afe9; - outline: 0; - -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6); - box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6); -} -.form-control::-moz-placeholder { - color: #bbbbbb; - opacity: 1; -} -.form-control:-ms-input-placeholder { - color: #bbbbbb; -} -.form-control::-webkit-input-placeholder { - color: #bbbbbb; -} -.form-control::-ms-expand { - border: 0; - background-color: transparent; -} -.form-control[disabled], -.form-control[readonly], -fieldset[disabled] .form-control { - background-color: transparent; - opacity: 1; -} -.form-control[disabled], -fieldset[disabled] .form-control { - cursor: not-allowed; -} -textarea.form-control { - height: auto; -} -input[type="search"] { - -webkit-appearance: none; -} -@media screen and (-webkit-min-device-pixel-ratio: 0) { - input[type="date"].form-control, - input[type="time"].form-control, - input[type="datetime-local"].form-control, - input[type="month"].form-control { - line-height: 37px; - } - input[type="date"].input-sm, - input[type="time"].input-sm, - input[type="datetime-local"].input-sm, - input[type="month"].input-sm, - .input-group-sm input[type="date"], - .input-group-sm input[type="time"], - .input-group-sm input[type="datetime-local"], - .input-group-sm input[type="month"] { - line-height: 30px; - } - input[type="date"].input-lg, - input[type="time"].input-lg, - input[type="datetime-local"].input-lg, - input[type="month"].input-lg, - .input-group-lg input[type="date"], - .input-group-lg input[type="time"], - .input-group-lg input[type="datetime-local"], - .input-group-lg input[type="month"] { - line-height: 45px; - } -} -.form-group { - margin-bottom: 15px; -} -.radio, -.checkbox { - position: relative; - display: block; - margin-top: 10px; - margin-bottom: 10px; -} -.radio label, -.checkbox label { - min-height: 23px; - padding-left: 20px; - margin-bottom: 0; - font-weight: normal; - cursor: pointer; -} -.radio input[type="radio"], -.radio-inline input[type="radio"], -.checkbox input[type="checkbox"], -.checkbox-inline input[type="checkbox"] { - position: absolute; - margin-left: -20px; - margin-top: 4px \9; -} -.radio + .radio, -.checkbox + .checkbox { - margin-top: -5px; -} -.radio-inline, -.checkbox-inline { - position: relative; - display: inline-block; - padding-left: 20px; - margin-bottom: 0; - vertical-align: middle; - font-weight: normal; - cursor: pointer; -} -.radio-inline + .radio-inline, -.checkbox-inline + .checkbox-inline { - margin-top: 0; - margin-left: 10px; -} -input[type="radio"][disabled], -input[type="checkbox"][disabled], -input[type="radio"].disabled, -input[type="checkbox"].disabled, -fieldset[disabled] input[type="radio"], -fieldset[disabled] input[type="checkbox"] { - cursor: not-allowed; -} -.radio-inline.disabled, -.checkbox-inline.disabled, -fieldset[disabled] .radio-inline, -fieldset[disabled] .checkbox-inline { - cursor: not-allowed; -} -.radio.disabled label, -.checkbox.disabled label, -fieldset[disabled] .radio label, -fieldset[disabled] .checkbox label { - cursor: not-allowed; -} -.form-control-static { - padding-top: 7px; - padding-bottom: 7px; - margin-bottom: 0; - min-height: 36px; -} -.form-control-static.input-lg, -.form-control-static.input-sm { - padding-left: 0; - padding-right: 0; -} -.input-sm { - height: 30px; - padding: 5px 10px; - font-size: 12px; - line-height: 1.5; - border-radius: 3px; -} -select.input-sm { - height: 30px; - line-height: 30px; -} -textarea.input-sm, -select[multiple].input-sm { - height: auto; -} -.form-group-sm .form-control { - height: 30px; - padding: 5px 10px; - font-size: 12px; - line-height: 1.5; - border-radius: 3px; -} -.form-group-sm select.form-control { - height: 30px; - line-height: 30px; -} -.form-group-sm textarea.form-control, -.form-group-sm select[multiple].form-control { - height: auto; -} -.form-group-sm .form-control-static { - height: 30px; - min-height: 35px; - padding: 6px 10px; - font-size: 12px; - line-height: 1.5; -} -.input-lg { - height: 45px; - padding: 10px 16px; - font-size: 17px; - line-height: 1.3333333; - border-radius: 3px; -} -select.input-lg { - height: 45px; - line-height: 45px; -} -textarea.input-lg, -select[multiple].input-lg { - height: auto; -} -.form-group-lg .form-control { - height: 45px; - padding: 10px 16px; - font-size: 17px; - line-height: 1.3333333; - border-radius: 3px; -} -.form-group-lg select.form-control { - height: 45px; - line-height: 45px; -} -.form-group-lg textarea.form-control, -.form-group-lg select[multiple].form-control { - height: auto; -} -.form-group-lg .form-control-static { - height: 45px; - min-height: 40px; - padding: 11px 16px; - font-size: 17px; - line-height: 1.3333333; -} -.has-feedback { - position: relative; -} -.has-feedback .form-control { - padding-right: 46.25px; -} -.form-control-feedback { - position: absolute; - top: 0; - right: 0; - z-index: 2; - display: block; - width: 37px; - height: 37px; - line-height: 37px; - text-align: center; - pointer-events: none; -} -.input-lg + .form-control-feedback, -.input-group-lg + .form-control-feedback, -.form-group-lg .form-control + .form-control-feedback { - width: 45px; - height: 45px; - line-height: 45px; -} -.input-sm + .form-control-feedback, -.input-group-sm + .form-control-feedback, -.form-group-sm .form-control + .form-control-feedback { - width: 30px; - height: 30px; - line-height: 30px; -} -.has-success .help-block, -.has-success .control-label, -.has-success .radio, -.has-success .checkbox, -.has-success .radio-inline, -.has-success .checkbox-inline, -.has-success.radio label, -.has-success.checkbox label, -.has-success.radio-inline label, -.has-success.checkbox-inline label { - color: #4caf50; -} -.has-success .form-control { - border-color: #4caf50; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); -} -.has-success .form-control:focus { - border-color: #3d8b40; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #92cf94; - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #92cf94; -} -.has-success .input-group-addon { - color: #4caf50; - border-color: #4caf50; - background-color: #dff0d8; -} -.has-success .form-control-feedback { - color: #4caf50; -} -.has-warning .help-block, -.has-warning .control-label, -.has-warning .radio, -.has-warning .checkbox, -.has-warning .radio-inline, -.has-warning .checkbox-inline, -.has-warning.radio label, -.has-warning.checkbox label, -.has-warning.radio-inline label, -.has-warning.checkbox-inline label { - color: #ff9800; -} -.has-warning .form-control { - border-color: #ff9800; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); -} -.has-warning .form-control:focus { - border-color: #cc7a00; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ffc166; - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ffc166; -} -.has-warning .input-group-addon { - color: #ff9800; - border-color: #ff9800; - background-color: #ffe0b2; -} -.has-warning .form-control-feedback { - color: #ff9800; -} -.has-error .help-block, -.has-error .control-label, -.has-error .radio, -.has-error .checkbox, -.has-error .radio-inline, -.has-error .checkbox-inline, -.has-error.radio label, -.has-error.checkbox label, -.has-error.radio-inline label, -.has-error.checkbox-inline label { - color: #e51c23; -} -.has-error .form-control { - border-color: #e51c23; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); -} -.has-error .form-control:focus { - border-color: #b9151b; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ef787c; - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ef787c; -} -.has-error .input-group-addon { - color: #e51c23; - border-color: #e51c23; - background-color: #f9bdbb; -} -.has-error .form-control-feedback { - color: #e51c23; -} -.has-feedback label ~ .form-control-feedback { - top: 28px; -} -.has-feedback label.sr-only ~ .form-control-feedback { - top: 0; -} -.help-block { - display: block; - margin-top: 5px; - margin-bottom: 10px; - color: #a6a6a6; -} -@media (min-width: 768px) { - .form-inline .form-group { - display: inline-block; - margin-bottom: 0; - vertical-align: middle; - } - .form-inline .form-control { - display: inline-block; - width: auto; - vertical-align: middle; - } - .form-inline .form-control-static { - display: inline-block; - } - .form-inline .input-group { - display: inline-table; - vertical-align: middle; - } - .form-inline .input-group .input-group-addon, - .form-inline .input-group .input-group-btn, - .form-inline .input-group .form-control { - width: auto; - } - .form-inline .input-group > .form-control { - width: 100%; - } - .form-inline .control-label { - margin-bottom: 0; - vertical-align: middle; - } - .form-inline .radio, - .form-inline .checkbox { - display: inline-block; - margin-top: 0; - margin-bottom: 0; - vertical-align: middle; - } - .form-inline .radio label, - .form-inline .checkbox label { - padding-left: 0; - } - .form-inline .radio input[type="radio"], - .form-inline .checkbox input[type="checkbox"] { - position: relative; - margin-left: 0; - } - .form-inline .has-feedback .form-control-feedback { - top: 0; - } -} -.form-horizontal .radio, -.form-horizontal .checkbox, -.form-horizontal .radio-inline, -.form-horizontal .checkbox-inline { - margin-top: 0; - margin-bottom: 0; - padding-top: 7px; -} -.form-horizontal .radio, -.form-horizontal .checkbox { - min-height: 30px; -} -.form-horizontal .form-group { - margin-left: -15px; - margin-right: -15px; -} -@media (min-width: 768px) { - .form-horizontal .control-label { - text-align: right; - margin-bottom: 0; - padding-top: 7px; - } -} -.form-horizontal .has-feedback .form-control-feedback { - right: 15px; -} -@media (min-width: 768px) { - .form-horizontal .form-group-lg .control-label { - padding-top: 11px; - font-size: 17px; - } -} -@media (min-width: 768px) { - .form-horizontal .form-group-sm .control-label { - padding-top: 6px; - font-size: 12px; - } -} -.btn { - display: inline-block; - margin-bottom: 0; - font-weight: normal; - text-align: center; - vertical-align: middle; - -ms-touch-action: manipulation; - touch-action: manipulation; - cursor: pointer; - background-image: none; - border: 1px solid transparent; - white-space: nowrap; - padding: 6px 16px; - font-size: 13px; - line-height: 1.846; - border-radius: 3px; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} -.btn:focus, -.btn:active:focus, -.btn.active:focus, -.btn.focus, -.btn:active.focus, -.btn.active.focus { - outline: thin dotted; - outline: 5px auto -webkit-focus-ring-color; - outline-offset: -2px; -} -.btn:hover, -.btn:focus, -.btn.focus { - color: #444444; - text-decoration: none; -} -.btn:active, -.btn.active { - outline: 0; - background-image: none; - -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); - box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); -} -.btn.disabled, -.btn[disabled], -fieldset[disabled] .btn { - cursor: not-allowed; - opacity: 0.65; - filter: alpha(opacity=65); - -webkit-box-shadow: none; - box-shadow: none; -} -a.btn.disabled, -fieldset[disabled] a.btn { - pointer-events: none; -} -.btn-default { - color: #444444; - background-color: #ffffff; - border-color: transparent; -} -.btn-default:focus, -.btn-default.focus { - color: #444444; - background-color: #e6e6e6; - border-color: rgba(0, 0, 0, 0); -} -.btn-default:hover { - color: #444444; - background-color: #e6e6e6; - border-color: rgba(0, 0, 0, 0); -} -.btn-default:active, -.btn-default.active, -.open > .dropdown-toggle.btn-default { - color: #444444; - background-color: #e6e6e6; - border-color: rgba(0, 0, 0, 0); -} -.btn-default:active:hover, -.btn-default.active:hover, -.open > .dropdown-toggle.btn-default:hover, -.btn-default:active:focus, -.btn-default.active:focus, -.open > .dropdown-toggle.btn-default:focus, -.btn-default:active.focus, -.btn-default.active.focus, -.open > .dropdown-toggle.btn-default.focus { - color: #444444; - background-color: #d4d4d4; - border-color: rgba(0, 0, 0, 0); -} -.btn-default:active, -.btn-default.active, -.open > .dropdown-toggle.btn-default { - background-image: none; -} -.btn-default.disabled:hover, -.btn-default[disabled]:hover, -fieldset[disabled] .btn-default:hover, -.btn-default.disabled:focus, -.btn-default[disabled]:focus, -fieldset[disabled] .btn-default:focus, -.btn-default.disabled.focus, -.btn-default[disabled].focus, -fieldset[disabled] .btn-default.focus { - background-color: #ffffff; - border-color: transparent; -} -.btn-default .badge { - color: #ffffff; - background-color: #444444; -} -.btn-primary { - color: #ffffff; - background-color: #2196f3; - border-color: transparent; -} -.btn-primary:focus, -.btn-primary.focus { - color: #ffffff; - background-color: #0c7cd5; - border-color: rgba(0, 0, 0, 0); -} -.btn-primary:hover { - color: #ffffff; - background-color: #0c7cd5; - border-color: rgba(0, 0, 0, 0); -} -.btn-primary:active, -.btn-primary.active, -.open > .dropdown-toggle.btn-primary { - color: #ffffff; - background-color: #0c7cd5; - border-color: rgba(0, 0, 0, 0); -} -.btn-primary:active:hover, -.btn-primary.active:hover, -.open > .dropdown-toggle.btn-primary:hover, -.btn-primary:active:focus, -.btn-primary.active:focus, -.open > .dropdown-toggle.btn-primary:focus, -.btn-primary:active.focus, -.btn-primary.active.focus, -.open > .dropdown-toggle.btn-primary.focus { - color: #ffffff; - background-color: #0a68b4; - border-color: rgba(0, 0, 0, 0); -} -.btn-primary:active, -.btn-primary.active, -.open > .dropdown-toggle.btn-primary { - background-image: none; -} -.btn-primary.disabled:hover, -.btn-primary[disabled]:hover, -fieldset[disabled] .btn-primary:hover, -.btn-primary.disabled:focus, -.btn-primary[disabled]:focus, -fieldset[disabled] .btn-primary:focus, -.btn-primary.disabled.focus, -.btn-primary[disabled].focus, -fieldset[disabled] .btn-primary.focus { - background-color: #2196f3; - border-color: transparent; -} -.btn-primary .badge { - color: #2196f3; - background-color: #ffffff; -} -.btn-success { - color: #ffffff; - background-color: #4caf50; - border-color: transparent; -} -.btn-success:focus, -.btn-success.focus { - color: #ffffff; - background-color: #3d8b40; - border-color: rgba(0, 0, 0, 0); -} -.btn-success:hover { - color: #ffffff; - background-color: #3d8b40; - border-color: rgba(0, 0, 0, 0); -} -.btn-success:active, -.btn-success.active, -.open > .dropdown-toggle.btn-success { - color: #ffffff; - background-color: #3d8b40; - border-color: rgba(0, 0, 0, 0); -} -.btn-success:active:hover, -.btn-success.active:hover, -.open > .dropdown-toggle.btn-success:hover, -.btn-success:active:focus, -.btn-success.active:focus, -.open > .dropdown-toggle.btn-success:focus, -.btn-success:active.focus, -.btn-success.active.focus, -.open > .dropdown-toggle.btn-success.focus { - color: #ffffff; - background-color: #327334; - border-color: rgba(0, 0, 0, 0); -} -.btn-success:active, -.btn-success.active, -.open > .dropdown-toggle.btn-success { - background-image: none; -} -.btn-success.disabled:hover, -.btn-success[disabled]:hover, -fieldset[disabled] .btn-success:hover, -.btn-success.disabled:focus, -.btn-success[disabled]:focus, -fieldset[disabled] .btn-success:focus, -.btn-success.disabled.focus, -.btn-success[disabled].focus, -fieldset[disabled] .btn-success.focus { - background-color: #4caf50; - border-color: transparent; -} -.btn-success .badge { - color: #4caf50; - background-color: #ffffff; -} -.btn-info { - color: #ffffff; - background-color: #9c27b0; - border-color: transparent; -} -.btn-info:focus, -.btn-info.focus { - color: #ffffff; - background-color: #771e86; - border-color: rgba(0, 0, 0, 0); -} -.btn-info:hover { - color: #ffffff; - background-color: #771e86; - border-color: rgba(0, 0, 0, 0); -} -.btn-info:active, -.btn-info.active, -.open > .dropdown-toggle.btn-info { - color: #ffffff; - background-color: #771e86; - border-color: rgba(0, 0, 0, 0); -} -.btn-info:active:hover, -.btn-info.active:hover, -.open > .dropdown-toggle.btn-info:hover, -.btn-info:active:focus, -.btn-info.active:focus, -.open > .dropdown-toggle.btn-info:focus, -.btn-info:active.focus, -.btn-info.active.focus, -.open > .dropdown-toggle.btn-info.focus { - color: #ffffff; - background-color: #5d1769; - border-color: rgba(0, 0, 0, 0); -} -.btn-info:active, -.btn-info.active, -.open > .dropdown-toggle.btn-info { - background-image: none; -} -.btn-info.disabled:hover, -.btn-info[disabled]:hover, -fieldset[disabled] .btn-info:hover, -.btn-info.disabled:focus, -.btn-info[disabled]:focus, -fieldset[disabled] .btn-info:focus, -.btn-info.disabled.focus, -.btn-info[disabled].focus, -fieldset[disabled] .btn-info.focus { - background-color: #9c27b0; - border-color: transparent; -} -.btn-info .badge { - color: #9c27b0; - background-color: #ffffff; -} -.btn-warning { - color: #ffffff; - background-color: #ff9800; - border-color: transparent; -} -.btn-warning:focus, -.btn-warning.focus { - color: #ffffff; - background-color: #cc7a00; - border-color: rgba(0, 0, 0, 0); -} -.btn-warning:hover { - color: #ffffff; - background-color: #cc7a00; - border-color: rgba(0, 0, 0, 0); -} -.btn-warning:active, -.btn-warning.active, -.open > .dropdown-toggle.btn-warning { - color: #ffffff; - background-color: #cc7a00; - border-color: rgba(0, 0, 0, 0); -} -.btn-warning:active:hover, -.btn-warning.active:hover, -.open > .dropdown-toggle.btn-warning:hover, -.btn-warning:active:focus, -.btn-warning.active:focus, -.open > .dropdown-toggle.btn-warning:focus, -.btn-warning:active.focus, -.btn-warning.active.focus, -.open > .dropdown-toggle.btn-warning.focus { - color: #ffffff; - background-color: #a86400; - border-color: rgba(0, 0, 0, 0); -} -.btn-warning:active, -.btn-warning.active, -.open > .dropdown-toggle.btn-warning { - background-image: none; -} -.btn-warning.disabled:hover, -.btn-warning[disabled]:hover, -fieldset[disabled] .btn-warning:hover, -.btn-warning.disabled:focus, -.btn-warning[disabled]:focus, -fieldset[disabled] .btn-warning:focus, -.btn-warning.disabled.focus, -.btn-warning[disabled].focus, -fieldset[disabled] .btn-warning.focus { - background-color: #ff9800; - border-color: transparent; -} -.btn-warning .badge { - color: #ff9800; - background-color: #ffffff; -} -.btn-danger { - color: #ffffff; - background-color: #e51c23; - border-color: transparent; -} -.btn-danger:focus, -.btn-danger.focus { - color: #ffffff; - background-color: #b9151b; - border-color: rgba(0, 0, 0, 0); -} -.btn-danger:hover { - color: #ffffff; - background-color: #b9151b; - border-color: rgba(0, 0, 0, 0); -} -.btn-danger:active, -.btn-danger.active, -.open > .dropdown-toggle.btn-danger { - color: #ffffff; - background-color: #b9151b; - border-color: rgba(0, 0, 0, 0); -} -.btn-danger:active:hover, -.btn-danger.active:hover, -.open > .dropdown-toggle.btn-danger:hover, -.btn-danger:active:focus, -.btn-danger.active:focus, -.open > .dropdown-toggle.btn-danger:focus, -.btn-danger:active.focus, -.btn-danger.active.focus, -.open > .dropdown-toggle.btn-danger.focus { - color: #ffffff; - background-color: #991216; - border-color: rgba(0, 0, 0, 0); -} -.btn-danger:active, -.btn-danger.active, -.open > .dropdown-toggle.btn-danger { - background-image: none; -} -.btn-danger.disabled:hover, -.btn-danger[disabled]:hover, -fieldset[disabled] .btn-danger:hover, -.btn-danger.disabled:focus, -.btn-danger[disabled]:focus, -fieldset[disabled] .btn-danger:focus, -.btn-danger.disabled.focus, -.btn-danger[disabled].focus, -fieldset[disabled] .btn-danger.focus { - background-color: #e51c23; - border-color: transparent; -} -.btn-danger .badge { - color: #e51c23; - background-color: #ffffff; -} -.btn-link { - color: #2196f3; - font-weight: normal; - border-radius: 0; -} -.btn-link, -.btn-link:active, -.btn-link.active, -.btn-link[disabled], -fieldset[disabled] .btn-link { - background-color: transparent; - -webkit-box-shadow: none; - box-shadow: none; -} -.btn-link, -.btn-link:hover, -.btn-link:focus, -.btn-link:active { - border-color: transparent; -} -.btn-link:hover, -.btn-link:focus { - color: #0a6ebd; - text-decoration: underline; - background-color: transparent; -} -.btn-link[disabled]:hover, -fieldset[disabled] .btn-link:hover, -.btn-link[disabled]:focus, -fieldset[disabled] .btn-link:focus { - color: #bbbbbb; - text-decoration: none; -} -.btn-lg, -.btn-group-lg > .btn { - padding: 10px 16px; - font-size: 17px; - line-height: 1.3333333; - border-radius: 3px; -} -.btn-sm, -.btn-group-sm > .btn { - padding: 5px 10px; - font-size: 12px; - line-height: 1.5; - border-radius: 3px; -} -.btn-xs, -.btn-group-xs > .btn { - padding: 1px 5px; - font-size: 12px; - line-height: 1.5; - border-radius: 3px; -} -.btn-block { - display: block; - width: 100%; -} -.btn-block + .btn-block { - margin-top: 5px; -} -input[type="submit"].btn-block, -input[type="reset"].btn-block, -input[type="button"].btn-block { - width: 100%; -} -.fade { - opacity: 0; - -webkit-transition: opacity 0.15s linear; - -o-transition: opacity 0.15s linear; - transition: opacity 0.15s linear; -} -.fade.in { - opacity: 1; -} -.collapse { - display: none; -} -.collapse.in { - display: block; -} -tr.collapse.in { - display: table-row; -} -tbody.collapse.in { - display: table-row-group; -} -.collapsing { - position: relative; - height: 0; - overflow: hidden; - -webkit-transition-property: height, visibility; - -o-transition-property: height, visibility; - transition-property: height, visibility; - -webkit-transition-duration: 0.35s; - -o-transition-duration: 0.35s; - transition-duration: 0.35s; - -webkit-transition-timing-function: ease; - -o-transition-timing-function: ease; - transition-timing-function: ease; -} -.caret { - display: inline-block; - width: 0; - height: 0; - margin-left: 2px; - vertical-align: middle; - border-top: 4px dashed; - border-top: 4px solid \9; - border-right: 4px solid transparent; - border-left: 4px solid transparent; -} -.dropup, -.dropdown { - position: relative; -} -.dropdown-toggle:focus { - outline: 0; -} -.dropdown-menu { - position: absolute; - top: 100%; - left: 0; - z-index: 1000; - display: none; - float: left; - min-width: 160px; - padding: 5px 0; - margin: 2px 0 0; - list-style: none; - font-size: 13px; - text-align: left; - background-color: #ffffff; - border: 1px solid #cccccc; - border: 1px solid rgba(0, 0, 0, 0.15); - border-radius: 3px; - -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175); - box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175); - -webkit-background-clip: padding-box; - background-clip: padding-box; -} -.dropdown-menu.pull-right { - right: 0; - left: auto; -} -.dropdown-menu .divider { - height: 1px; - margin: 10.5px 0; - overflow: hidden; - background-color: #e5e5e5; -} -.dropdown-menu > li > a { - display: block; - padding: 3px 20px; - clear: both; - font-weight: normal; - line-height: 1.846; - color: #666666; - white-space: nowrap; -} -.dropdown-menu > li > a:hover, -.dropdown-menu > li > a:focus { - text-decoration: none; - color: #141414; - background-color: #eeeeee; -} -.dropdown-menu > .active > a, -.dropdown-menu > .active > a:hover, -.dropdown-menu > .active > a:focus { - color: #ffffff; - text-decoration: none; - outline: 0; - background-color: #2196f3; -} -.dropdown-menu > .disabled > a, -.dropdown-menu > .disabled > a:hover, -.dropdown-menu > .disabled > a:focus { - color: #bbbbbb; -} -.dropdown-menu > .disabled > a:hover, -.dropdown-menu > .disabled > a:focus { - text-decoration: none; - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); - cursor: not-allowed; -} -.open > .dropdown-menu { - display: block; -} -.open > a { - outline: 0; -} -.dropdown-menu-right { - left: auto; - right: 0; -} -.dropdown-menu-left { - left: 0; - right: auto; -} -.dropdown-header { - display: block; - padding: 3px 20px; - font-size: 12px; - line-height: 1.846; - color: #bbbbbb; - white-space: nowrap; -} -.dropdown-backdrop { - position: fixed; - left: 0; - right: 0; - bottom: 0; - top: 0; - z-index: 990; -} -.pull-right > .dropdown-menu { - right: 0; - left: auto; -} -.dropup .caret, -.navbar-fixed-bottom .dropdown .caret { - border-top: 0; - border-bottom: 4px dashed; - border-bottom: 4px solid \9; - content: ""; -} -.dropup .dropdown-menu, -.navbar-fixed-bottom .dropdown .dropdown-menu { - top: auto; - bottom: 100%; - margin-bottom: 2px; -} -@media (min-width: 768px) { - .navbar-right .dropdown-menu { - left: auto; - right: 0; - } - .navbar-right .dropdown-menu-left { - left: 0; - right: auto; - } -} -.btn-group, -.btn-group-vertical { - position: relative; - display: inline-block; - vertical-align: middle; -} -.btn-group > .btn, -.btn-group-vertical > .btn { - position: relative; - float: left; -} -.btn-group > .btn:hover, -.btn-group-vertical > .btn:hover, -.btn-group > .btn:focus, -.btn-group-vertical > .btn:focus, -.btn-group > .btn:active, -.btn-group-vertical > .btn:active, -.btn-group > .btn.active, -.btn-group-vertical > .btn.active { - z-index: 2; -} -.btn-group .btn + .btn, -.btn-group .btn + .btn-group, -.btn-group .btn-group + .btn, -.btn-group .btn-group + .btn-group { - margin-left: -1px; -} -.btn-toolbar { - margin-left: -5px; -} -.btn-toolbar .btn, -.btn-toolbar .btn-group, -.btn-toolbar .input-group { - float: left; -} -.btn-toolbar > .btn, -.btn-toolbar > .btn-group, -.btn-toolbar > .input-group { - margin-left: 5px; -} -.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) { - border-radius: 0; -} -.btn-group > .btn:first-child { - margin-left: 0; -} -.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) { - border-bottom-right-radius: 0; - border-top-right-radius: 0; -} -.btn-group > .btn:last-child:not(:first-child), -.btn-group > .dropdown-toggle:not(:first-child) { - border-bottom-left-radius: 0; - border-top-left-radius: 0; -} -.btn-group > .btn-group { - float: left; -} -.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn { - border-radius: 0; -} -.btn-group > .btn-group:first-child:not(:last-child) > .btn:last-child, -.btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle { - border-bottom-right-radius: 0; - border-top-right-radius: 0; -} -.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child { - border-bottom-left-radius: 0; - border-top-left-radius: 0; -} -.btn-group .dropdown-toggle:active, -.btn-group.open .dropdown-toggle { - outline: 0; -} -.btn-group > .btn + .dropdown-toggle { - padding-left: 8px; - padding-right: 8px; -} -.btn-group > .btn-lg + .dropdown-toggle { - padding-left: 12px; - padding-right: 12px; -} -.btn-group.open .dropdown-toggle { - -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); - box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); -} -.btn-group.open .dropdown-toggle.btn-link { - -webkit-box-shadow: none; - box-shadow: none; -} -.btn .caret { - margin-left: 0; -} -.btn-lg .caret { - border-width: 5px 5px 0; - border-bottom-width: 0; -} -.dropup .btn-lg .caret { - border-width: 0 5px 5px; -} -.btn-group-vertical > .btn, -.btn-group-vertical > .btn-group, -.btn-group-vertical > .btn-group > .btn { - display: block; - float: none; - width: 100%; - max-width: 100%; -} -.btn-group-vertical > .btn-group > .btn { - float: none; -} -.btn-group-vertical > .btn + .btn, -.btn-group-vertical > .btn + .btn-group, -.btn-group-vertical > .btn-group + .btn, -.btn-group-vertical > .btn-group + .btn-group { - margin-top: -1px; - margin-left: 0; -} -.btn-group-vertical > .btn:not(:first-child):not(:last-child) { - border-radius: 0; -} -.btn-group-vertical > .btn:first-child:not(:last-child) { - border-top-right-radius: 3px; - border-top-left-radius: 3px; - border-bottom-right-radius: 0; - border-bottom-left-radius: 0; -} -.btn-group-vertical > .btn:last-child:not(:first-child) { - border-top-right-radius: 0; - border-top-left-radius: 0; - border-bottom-right-radius: 3px; - border-bottom-left-radius: 3px; -} -.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn { - border-radius: 0; -} -.btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child, -.btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle { - border-bottom-right-radius: 0; - border-bottom-left-radius: 0; -} -.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child { - border-top-right-radius: 0; - border-top-left-radius: 0; -} -.btn-group-justified { - display: table; - width: 100%; - table-layout: fixed; - border-collapse: separate; -} -.btn-group-justified > .btn, -.btn-group-justified > .btn-group { - float: none; - display: table-cell; - width: 1%; -} -.btn-group-justified > .btn-group .btn { - width: 100%; -} -.btn-group-justified > .btn-group .dropdown-menu { - left: auto; -} -[data-toggle="buttons"] > .btn input[type="radio"], -[data-toggle="buttons"] > .btn-group > .btn input[type="radio"], -[data-toggle="buttons"] > .btn input[type="checkbox"], -[data-toggle="buttons"] > .btn-group > .btn input[type="checkbox"] { - position: absolute; - clip: rect(0, 0, 0, 0); - pointer-events: none; -} -.input-group { - position: relative; - display: table; - border-collapse: separate; -} -.input-group[class*="col-"] { - float: none; - padding-left: 0; - padding-right: 0; -} -.input-group .form-control { - position: relative; - z-index: 2; - float: left; - width: 100%; - margin-bottom: 0; -} -.input-group .form-control:focus { - z-index: 3; -} -.input-group-lg > .form-control, -.input-group-lg > .input-group-addon, -.input-group-lg > .input-group-btn > .btn { - height: 45px; - padding: 10px 16px; - font-size: 17px; - line-height: 1.3333333; - border-radius: 3px; -} -select.input-group-lg > .form-control, -select.input-group-lg > .input-group-addon, -select.input-group-lg > .input-group-btn > .btn { - height: 45px; - line-height: 45px; -} -textarea.input-group-lg > .form-control, -textarea.input-group-lg > .input-group-addon, -textarea.input-group-lg > .input-group-btn > .btn, -select[multiple].input-group-lg > .form-control, -select[multiple].input-group-lg > .input-group-addon, -select[multiple].input-group-lg > .input-group-btn > .btn { - height: auto; -} -.input-group-sm > .form-control, -.input-group-sm > .input-group-addon, -.input-group-sm > .input-group-btn > .btn { - height: 30px; - padding: 5px 10px; - font-size: 12px; - line-height: 1.5; - border-radius: 3px; -} -select.input-group-sm > .form-control, -select.input-group-sm > .input-group-addon, -select.input-group-sm > .input-group-btn > .btn { - height: 30px; - line-height: 30px; -} -textarea.input-group-sm > .form-control, -textarea.input-group-sm > .input-group-addon, -textarea.input-group-sm > .input-group-btn > .btn, -select[multiple].input-group-sm > .form-control, -select[multiple].input-group-sm > .input-group-addon, -select[multiple].input-group-sm > .input-group-btn > .btn { - height: auto; -} -.input-group-addon, -.input-group-btn, -.input-group .form-control { - display: table-cell; -} -.input-group-addon:not(:first-child):not(:last-child), -.input-group-btn:not(:first-child):not(:last-child), -.input-group .form-control:not(:first-child):not(:last-child) { - border-radius: 0; -} -.input-group-addon, -.input-group-btn { - width: 1%; - white-space: nowrap; - vertical-align: middle; -} -.input-group-addon { - padding: 6px 16px; - font-size: 13px; - font-weight: normal; - line-height: 1; - color: #666666; - text-align: center; - background-color: transparent; - border: 1px solid transparent; - border-radius: 3px; -} -.input-group-addon.input-sm { - padding: 5px 10px; - font-size: 12px; - border-radius: 3px; -} -.input-group-addon.input-lg { - padding: 10px 16px; - font-size: 17px; - border-radius: 3px; -} -.input-group-addon input[type="radio"], -.input-group-addon input[type="checkbox"] { - margin-top: 0; -} -.input-group .form-control:first-child, -.input-group-addon:first-child, -.input-group-btn:first-child > .btn, -.input-group-btn:first-child > .btn-group > .btn, -.input-group-btn:first-child > .dropdown-toggle, -.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle), -.input-group-btn:last-child > .btn-group:not(:last-child) > .btn { - border-bottom-right-radius: 0; - border-top-right-radius: 0; -} -.input-group-addon:first-child { - border-right: 0; -} -.input-group .form-control:last-child, -.input-group-addon:last-child, -.input-group-btn:last-child > .btn, -.input-group-btn:last-child > .btn-group > .btn, -.input-group-btn:last-child > .dropdown-toggle, -.input-group-btn:first-child > .btn:not(:first-child), -.input-group-btn:first-child > .btn-group:not(:first-child) > .btn { - border-bottom-left-radius: 0; - border-top-left-radius: 0; -} -.input-group-addon:last-child { - border-left: 0; -} -.input-group-btn { - position: relative; - font-size: 0; - white-space: nowrap; -} -.input-group-btn > .btn { - position: relative; -} -.input-group-btn > .btn + .btn { - margin-left: -1px; -} -.input-group-btn > .btn:hover, -.input-group-btn > .btn:focus, -.input-group-btn > .btn:active { - z-index: 2; -} -.input-group-btn:first-child > .btn, -.input-group-btn:first-child > .btn-group { - margin-right: -1px; -} -.input-group-btn:last-child > .btn, -.input-group-btn:last-child > .btn-group { - z-index: 2; - margin-left: -1px; -} -.nav { - margin-bottom: 0; - padding-left: 0; - list-style: none; -} -.nav > li { - position: relative; - display: block; -} -.nav > li > a { - position: relative; - display: block; - padding: 10px 15px; -} -.nav > li > a:hover, -.nav > li > a:focus { - text-decoration: none; - background-color: #eeeeee; -} -.nav > li.disabled > a { - color: #bbbbbb; -} -.nav > li.disabled > a:hover, -.nav > li.disabled > a:focus { - color: #bbbbbb; - text-decoration: none; - background-color: transparent; - cursor: not-allowed; -} -.nav .open > a, -.nav .open > a:hover, -.nav .open > a:focus { - background-color: #eeeeee; - border-color: #2196f3; -} -.nav .nav-divider { - height: 1px; - margin: 10.5px 0; - overflow: hidden; - background-color: #e5e5e5; -} -.nav > li > a > img { - max-width: none; -} -.nav-tabs { - border-bottom: 1px solid transparent; -} -.nav-tabs > li { - float: left; - margin-bottom: -1px; -} -.nav-tabs > li > a { - margin-right: 2px; - line-height: 1.846; - border: 1px solid transparent; - border-radius: 3px 3px 0 0; -} -.nav-tabs > li > a:hover { - border-color: #eeeeee #eeeeee transparent; -} -.nav-tabs > li.active > a, -.nav-tabs > li.active > a:hover, -.nav-tabs > li.active > a:focus { - color: #666666; - background-color: transparent; - border: 1px solid transparent; - border-bottom-color: transparent; - cursor: default; -} -.nav-tabs.nav-justified { - width: 100%; - border-bottom: 0; -} -.nav-tabs.nav-justified > li { - float: none; -} -.nav-tabs.nav-justified > li > a { - text-align: center; - margin-bottom: 5px; -} -.nav-tabs.nav-justified > .dropdown .dropdown-menu { - top: auto; - left: auto; -} -@media (min-width: 768px) { - .nav-tabs.nav-justified > li { - display: table-cell; - width: 1%; - } - .nav-tabs.nav-justified > li > a { - margin-bottom: 0; - } -} -.nav-tabs.nav-justified > li > a { - margin-right: 0; - border-radius: 3px; -} -.nav-tabs.nav-justified > .active > a, -.nav-tabs.nav-justified > .active > a:hover, -.nav-tabs.nav-justified > .active > a:focus { - border: 1px solid transparent; -} -@media (min-width: 768px) { - .nav-tabs.nav-justified > li > a { - border-bottom: 1px solid transparent; - border-radius: 3px 3px 0 0; - } - .nav-tabs.nav-justified > .active > a, - .nav-tabs.nav-justified > .active > a:hover, - .nav-tabs.nav-justified > .active > a:focus { - border-bottom-color: #ffffff; - } -} -.nav-pills > li { - float: left; -} -.nav-pills > li > a { - border-radius: 3px; -} -.nav-pills > li + li { - margin-left: 2px; -} -.nav-pills > li.active > a, -.nav-pills > li.active > a:hover, -.nav-pills > li.active > a:focus { - color: #ffffff; - background-color: #2196f3; -} -.nav-stacked > li { - float: none; -} -.nav-stacked > li + li { - margin-top: 2px; - margin-left: 0; -} -.nav-justified { - width: 100%; -} -.nav-justified > li { - float: none; -} -.nav-justified > li > a { - text-align: center; - margin-bottom: 5px; -} -.nav-justified > .dropdown .dropdown-menu { - top: auto; - left: auto; -} -@media (min-width: 768px) { - .nav-justified > li { - display: table-cell; - width: 1%; - } - .nav-justified > li > a { - margin-bottom: 0; - } -} -.nav-tabs-justified { - border-bottom: 0; -} -.nav-tabs-justified > li > a { - margin-right: 0; - border-radius: 3px; -} -.nav-tabs-justified > .active > a, -.nav-tabs-justified > .active > a:hover, -.nav-tabs-justified > .active > a:focus { - border: 1px solid transparent; -} -@media (min-width: 768px) { - .nav-tabs-justified > li > a { - border-bottom: 1px solid transparent; - border-radius: 3px 3px 0 0; - } - .nav-tabs-justified > .active > a, - .nav-tabs-justified > .active > a:hover, - .nav-tabs-justified > .active > a:focus { - border-bottom-color: #ffffff; - } -} -.tab-content > .tab-pane { - display: none; -} -.tab-content > .active { - display: block; -} -.nav-tabs .dropdown-menu { - margin-top: -1px; - border-top-right-radius: 0; - border-top-left-radius: 0; -} -.navbar { - position: relative; - min-height: 64px; - margin-bottom: 23px; - border: 1px solid transparent; -} -@media (min-width: 768px) { - .navbar { - border-radius: 3px; - } -} -@media (min-width: 768px) { - .navbar-header { - float: left; - } -} -.navbar-collapse { - overflow-x: visible; - padding-right: 15px; - padding-left: 15px; - border-top: 1px solid transparent; - -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1); - box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1); - -webkit-overflow-scrolling: touch; -} -.navbar-collapse.in { - overflow-y: auto; -} -@media (min-width: 768px) { - .navbar-collapse { - width: auto; - border-top: 0; - -webkit-box-shadow: none; - box-shadow: none; - } - .navbar-collapse.collapse { - display: block !important; - height: auto !important; - padding-bottom: 0; - overflow: visible !important; - } - .navbar-collapse.in { - overflow-y: visible; - } - .navbar-fixed-top .navbar-collapse, - .navbar-static-top .navbar-collapse, - .navbar-fixed-bottom .navbar-collapse { - padding-left: 0; - padding-right: 0; - } -} -.navbar-fixed-top .navbar-collapse, -.navbar-fixed-bottom .navbar-collapse { - max-height: 340px; -} -@media (max-device-width: 480px) and (orientation: landscape) { - .navbar-fixed-top .navbar-collapse, - .navbar-fixed-bottom .navbar-collapse { - max-height: 200px; - } -} -.container > .navbar-header, -.container-fluid > .navbar-header, -.container > .navbar-collapse, -.container-fluid > .navbar-collapse { - margin-right: -15px; - margin-left: -15px; -} -@media (min-width: 768px) { - .container > .navbar-header, - .container-fluid > .navbar-header, - .container > .navbar-collapse, - .container-fluid > .navbar-collapse { - margin-right: 0; - margin-left: 0; - } -} -.navbar-static-top { - z-index: 1000; - border-width: 0 0 1px; -} -@media (min-width: 768px) { - .navbar-static-top { - border-radius: 0; - } -} -.navbar-fixed-top, -.navbar-fixed-bottom { - position: fixed; - right: 0; - left: 0; - z-index: 1030; -} -@media (min-width: 768px) { - .navbar-fixed-top, - .navbar-fixed-bottom { - border-radius: 0; - } -} -.navbar-fixed-top { - top: 0; - border-width: 0 0 1px; -} -.navbar-fixed-bottom { - bottom: 0; - margin-bottom: 0; - border-width: 1px 0 0; -} -.navbar-brand { - float: left; - padding: 20.5px 15px; - font-size: 17px; - line-height: 23px; - height: 64px; -} -.navbar-brand:hover, -.navbar-brand:focus { - text-decoration: none; -} -.navbar-brand > img { - display: block; -} -@media (min-width: 768px) { - .navbar > .container .navbar-brand, - .navbar > .container-fluid .navbar-brand { - margin-left: -15px; - } -} -.navbar-toggle { - position: relative; - float: right; - margin-right: 15px; - padding: 9px 10px; - margin-top: 15px; - margin-bottom: 15px; - background-color: transparent; - background-image: none; - border: 1px solid transparent; - border-radius: 3px; -} -.navbar-toggle:focus { - outline: 0; -} -.navbar-toggle .icon-bar { - display: block; - width: 22px; - height: 2px; - border-radius: 1px; -} -.navbar-toggle .icon-bar + .icon-bar { - margin-top: 4px; -} -@media (min-width: 768px) { - .navbar-toggle { - display: none; - } -} -.navbar-nav { - margin: 10.25px -15px; -} -.navbar-nav > li > a { - padding-top: 10px; - padding-bottom: 10px; - line-height: 23px; -} -@media (max-width: 767px) { - .navbar-nav .open .dropdown-menu { - position: static; - float: none; - width: auto; - margin-top: 0; - background-color: transparent; - border: 0; - -webkit-box-shadow: none; - box-shadow: none; - } - .navbar-nav .open .dropdown-menu > li > a, - .navbar-nav .open .dropdown-menu .dropdown-header { - padding: 5px 15px 5px 25px; - } - .navbar-nav .open .dropdown-menu > li > a { - line-height: 23px; - } - .navbar-nav .open .dropdown-menu > li > a:hover, - .navbar-nav .open .dropdown-menu > li > a:focus { - background-image: none; - } -} -@media (min-width: 768px) { - .navbar-nav { - float: left; - margin: 0; - } - .navbar-nav > li { - float: left; - } - .navbar-nav > li > a { - padding-top: 20.5px; - padding-bottom: 20.5px; - } -} -.navbar-form { - margin-left: -15px; - margin-right: -15px; - padding: 10px 15px; - border-top: 1px solid transparent; - border-bottom: 1px solid transparent; - -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1); - box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1); - margin-top: 13.5px; - margin-bottom: 13.5px; -} -@media (min-width: 768px) { - .navbar-form .form-group { - display: inline-block; - margin-bottom: 0; - vertical-align: middle; - } - .navbar-form .form-control { - display: inline-block; - width: auto; - vertical-align: middle; - } - .navbar-form .form-control-static { - display: inline-block; - } - .navbar-form .input-group { - display: inline-table; - vertical-align: middle; - } - .navbar-form .input-group .input-group-addon, - .navbar-form .input-group .input-group-btn, - .navbar-form .input-group .form-control { - width: auto; - } - .navbar-form .input-group > .form-control { - width: 100%; - } - .navbar-form .control-label { - margin-bottom: 0; - vertical-align: middle; - } - .navbar-form .radio, - .navbar-form .checkbox { - display: inline-block; - margin-top: 0; - margin-bottom: 0; - vertical-align: middle; - } - .navbar-form .radio label, - .navbar-form .checkbox label { - padding-left: 0; - } - .navbar-form .radio input[type="radio"], - .navbar-form .checkbox input[type="checkbox"] { - position: relative; - margin-left: 0; - } - .navbar-form .has-feedback .form-control-feedback { - top: 0; - } -} -@media (max-width: 767px) { - .navbar-form .form-group { - margin-bottom: 5px; - } - .navbar-form .form-group:last-child { - margin-bottom: 0; - } -} -@media (min-width: 768px) { - .navbar-form { - width: auto; - border: 0; - margin-left: 0; - margin-right: 0; - padding-top: 0; - padding-bottom: 0; - -webkit-box-shadow: none; - box-shadow: none; - } -} -.navbar-nav > li > .dropdown-menu { - margin-top: 0; - border-top-right-radius: 0; - border-top-left-radius: 0; -} -.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu { - margin-bottom: 0; - border-top-right-radius: 3px; - border-top-left-radius: 3px; - border-bottom-right-radius: 0; - border-bottom-left-radius: 0; -} -.navbar-btn { - margin-top: 13.5px; - margin-bottom: 13.5px; -} -.navbar-btn.btn-sm { - margin-top: 17px; - margin-bottom: 17px; -} -.navbar-btn.btn-xs { - margin-top: 21px; - margin-bottom: 21px; -} -.navbar-text { - margin-top: 20.5px; - margin-bottom: 20.5px; -} -@media (min-width: 768px) { - .navbar-text { - float: left; - margin-left: 15px; - margin-right: 15px; - } -} -@media (min-width: 768px) { - .navbar-left { - float: left !important; - } - .navbar-right { - float: right !important; - margin-right: -15px; - } - .navbar-right ~ .navbar-right { - margin-right: 0; - } -} -.navbar-default { - background-color: #ffffff; - border-color: transparent; -} -.navbar-default .navbar-brand { - color: #666666; -} -.navbar-default .navbar-brand:hover, -.navbar-default .navbar-brand:focus { - color: #212121; - background-color: transparent; -} -.navbar-default .navbar-text { - color: #bbbbbb; -} -.navbar-default .navbar-nav > li > a { - color: #666666; -} -.navbar-default .navbar-nav > li > a:hover, -.navbar-default .navbar-nav > li > a:focus { - color: #212121; - background-color: transparent; -} -.navbar-default .navbar-nav > .active > a, -.navbar-default .navbar-nav > .active > a:hover, -.navbar-default .navbar-nav > .active > a:focus { - color: #212121; - background-color: #eeeeee; -} -.navbar-default .navbar-nav > .disabled > a, -.navbar-default .navbar-nav > .disabled > a:hover, -.navbar-default .navbar-nav > .disabled > a:focus { - color: #cccccc; - background-color: transparent; -} -.navbar-default .navbar-toggle { - border-color: transparent; -} -.navbar-default .navbar-toggle:hover, -.navbar-default .navbar-toggle:focus { - background-color: transparent; -} -.navbar-default .navbar-toggle .icon-bar { - background-color: rgba(0, 0, 0, 0.5); -} -.navbar-default .navbar-collapse, -.navbar-default .navbar-form { - border-color: transparent; -} -.navbar-default .navbar-nav > .open > a, -.navbar-default .navbar-nav > .open > a:hover, -.navbar-default .navbar-nav > .open > a:focus { - background-color: #eeeeee; - color: #212121; -} -@media (max-width: 767px) { - .navbar-default .navbar-nav .open .dropdown-menu > li > a { - color: #666666; - } - .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover, - .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus { - color: #212121; - background-color: transparent; - } - .navbar-default .navbar-nav .open .dropdown-menu > .active > a, - .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover, - .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus { - color: #212121; - background-color: #eeeeee; - } - .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a, - .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover, - .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus { - color: #cccccc; - background-color: transparent; - } -} -.navbar-default .navbar-link { - color: #666666; -} -.navbar-default .navbar-link:hover { - color: #212121; -} -.navbar-default .btn-link { - color: #666666; -} -.navbar-default .btn-link:hover, -.navbar-default .btn-link:focus { - color: #212121; -} -.navbar-default .btn-link[disabled]:hover, -fieldset[disabled] .navbar-default .btn-link:hover, -.navbar-default .btn-link[disabled]:focus, -fieldset[disabled] .navbar-default .btn-link:focus { - color: #cccccc; -} -.navbar-inverse { - background-color: #2196f3; - border-color: transparent; -} -.navbar-inverse .navbar-brand { - color: #b2dbfb; -} -.navbar-inverse .navbar-brand:hover, -.navbar-inverse .navbar-brand:focus { - color: #ffffff; - background-color: transparent; -} -.navbar-inverse .navbar-text { - color: #bbbbbb; -} -.navbar-inverse .navbar-nav > li > a { - color: #b2dbfb; -} -.navbar-inverse .navbar-nav > li > a:hover, -.navbar-inverse .navbar-nav > li > a:focus { - color: #ffffff; - background-color: transparent; -} -.navbar-inverse .navbar-nav > .active > a, -.navbar-inverse .navbar-nav > .active > a:hover, -.navbar-inverse .navbar-nav > .active > a:focus { - color: #ffffff; - background-color: #0c7cd5; -} -.navbar-inverse .navbar-nav > .disabled > a, -.navbar-inverse .navbar-nav > .disabled > a:hover, -.navbar-inverse .navbar-nav > .disabled > a:focus { - color: #444444; - background-color: transparent; -} -.navbar-inverse .navbar-toggle { - border-color: transparent; -} -.navbar-inverse .navbar-toggle:hover, -.navbar-inverse .navbar-toggle:focus { - background-color: transparent; -} -.navbar-inverse .navbar-toggle .icon-bar { - background-color: rgba(0, 0, 0, 0.5); -} -.navbar-inverse .navbar-collapse, -.navbar-inverse .navbar-form { - border-color: #0c84e4; -} -.navbar-inverse .navbar-nav > .open > a, -.navbar-inverse .navbar-nav > .open > a:hover, -.navbar-inverse .navbar-nav > .open > a:focus { - background-color: #0c7cd5; - color: #ffffff; -} -@media (max-width: 767px) { - .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header { - border-color: transparent; - } - .navbar-inverse .navbar-nav .open .dropdown-menu .divider { - background-color: transparent; - } - .navbar-inverse .navbar-nav .open .dropdown-menu > li > a { - color: #b2dbfb; - } - .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover, - .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus { - color: #ffffff; - background-color: transparent; - } - .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a, - .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover, - .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus { - color: #ffffff; - background-color: #0c7cd5; - } - .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a, - .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover, - .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus { - color: #444444; - background-color: transparent; - } -} -.navbar-inverse .navbar-link { - color: #b2dbfb; -} -.navbar-inverse .navbar-link:hover { - color: #ffffff; -} -.navbar-inverse .btn-link { - color: #b2dbfb; -} -.navbar-inverse .btn-link:hover, -.navbar-inverse .btn-link:focus { - color: #ffffff; -} -.navbar-inverse .btn-link[disabled]:hover, -fieldset[disabled] .navbar-inverse .btn-link:hover, -.navbar-inverse .btn-link[disabled]:focus, -fieldset[disabled] .navbar-inverse .btn-link:focus { - color: #444444; -} -.breadcrumb { - padding: 8px 15px; - margin-bottom: 23px; - list-style: none; - background-color: #f5f5f5; - border-radius: 3px; -} -.breadcrumb > li { - display: inline-block; -} -.breadcrumb > li + li:before { - content: "/\00a0"; - padding: 0 5px; - color: #cccccc; -} -.breadcrumb > .active { - color: #bbbbbb; -} -.pagination { - display: inline-block; - padding-left: 0; - margin: 23px 0; - border-radius: 3px; -} -.pagination > li { - display: inline; -} -.pagination > li > a, -.pagination > li > span { - position: relative; - float: left; - padding: 6px 16px; - line-height: 1.846; - text-decoration: none; - color: #2196f3; - background-color: #ffffff; - border: 1px solid #dddddd; - margin-left: -1px; -} -.pagination > li:first-child > a, -.pagination > li:first-child > span { - margin-left: 0; - border-bottom-left-radius: 3px; - border-top-left-radius: 3px; -} -.pagination > li:last-child > a, -.pagination > li:last-child > span { - border-bottom-right-radius: 3px; - border-top-right-radius: 3px; -} -.pagination > li > a:hover, -.pagination > li > span:hover, -.pagination > li > a:focus, -.pagination > li > span:focus { - z-index: 2; - color: #0a6ebd; - background-color: #eeeeee; - border-color: #dddddd; -} -.pagination > .active > a, -.pagination > .active > span, -.pagination > .active > a:hover, -.pagination > .active > span:hover, -.pagination > .active > a:focus, -.pagination > .active > span:focus { - z-index: 3; - color: #ffffff; - background-color: #2196f3; - border-color: #2196f3; - cursor: default; -} -.pagination > .disabled > span, -.pagination > .disabled > span:hover, -.pagination > .disabled > span:focus, -.pagination > .disabled > a, -.pagination > .disabled > a:hover, -.pagination > .disabled > a:focus { - color: #bbbbbb; - background-color: #ffffff; - border-color: #dddddd; - cursor: not-allowed; -} -.pagination-lg > li > a, -.pagination-lg > li > span { - padding: 10px 16px; - font-size: 17px; - line-height: 1.3333333; -} -.pagination-lg > li:first-child > a, -.pagination-lg > li:first-child > span { - border-bottom-left-radius: 3px; - border-top-left-radius: 3px; -} -.pagination-lg > li:last-child > a, -.pagination-lg > li:last-child > span { - border-bottom-right-radius: 3px; - border-top-right-radius: 3px; -} -.pagination-sm > li > a, -.pagination-sm > li > span { - padding: 5px 10px; - font-size: 12px; - line-height: 1.5; -} -.pagination-sm > li:first-child > a, -.pagination-sm > li:first-child > span { - border-bottom-left-radius: 3px; - border-top-left-radius: 3px; -} -.pagination-sm > li:last-child > a, -.pagination-sm > li:last-child > span { - border-bottom-right-radius: 3px; - border-top-right-radius: 3px; -} -.pager { - padding-left: 0; - margin: 23px 0; - list-style: none; - text-align: center; -} -.pager li { - display: inline; -} -.pager li > a, -.pager li > span { - display: inline-block; - padding: 5px 14px; - background-color: #ffffff; - border: 1px solid #dddddd; - border-radius: 15px; -} -.pager li > a:hover, -.pager li > a:focus { - text-decoration: none; - background-color: #eeeeee; -} -.pager .next > a, -.pager .next > span { - float: right; -} -.pager .previous > a, -.pager .previous > span { - float: left; -} -.pager .disabled > a, -.pager .disabled > a:hover, -.pager .disabled > a:focus, -.pager .disabled > span { - color: #bbbbbb; - background-color: #ffffff; - cursor: not-allowed; -} -.label { - display: inline; - padding: .2em .6em .3em; - font-size: 75%; - font-weight: bold; - line-height: 1; - color: #ffffff; - text-align: center; - white-space: nowrap; - vertical-align: baseline; - border-radius: .25em; -} -a.label:hover, -a.label:focus { - color: #ffffff; - text-decoration: none; - cursor: pointer; -} -.label:empty { - display: none; -} -.btn .label { - position: relative; - top: -1px; -} -.label-default { - background-color: #bbbbbb; -} -.label-default[href]:hover, -.label-default[href]:focus { - background-color: #a2a2a2; -} -.label-primary { - background-color: #2196f3; -} -.label-primary[href]:hover, -.label-primary[href]:focus { - background-color: #0c7cd5; -} -.label-success { - background-color: #4caf50; -} -.label-success[href]:hover, -.label-success[href]:focus { - background-color: #3d8b40; -} -.label-info { - background-color: #9c27b0; -} -.label-info[href]:hover, -.label-info[href]:focus { - background-color: #771e86; -} -.label-warning { - background-color: #ff9800; -} -.label-warning[href]:hover, -.label-warning[href]:focus { - background-color: #cc7a00; -} -.label-danger { - background-color: #e51c23; -} -.label-danger[href]:hover, -.label-danger[href]:focus { - background-color: #b9151b; -} -.badge { - display: inline-block; - min-width: 10px; - padding: 3px 7px; - font-size: 12px; - font-weight: normal; - color: #ffffff; - line-height: 1; - vertical-align: middle; - white-space: nowrap; - text-align: center; - background-color: #bbbbbb; - border-radius: 10px; -} -.badge:empty { - display: none; -} -.btn .badge { - position: relative; - top: -1px; -} -.btn-xs .badge, -.btn-group-xs > .btn .badge { - top: 0; - padding: 1px 5px; -} -a.badge:hover, -a.badge:focus { - color: #ffffff; - text-decoration: none; - cursor: pointer; -} -.list-group-item.active > .badge, -.nav-pills > .active > a > .badge { - color: #2196f3; - background-color: #ffffff; -} -.list-group-item > .badge { - float: right; -} -.list-group-item > .badge + .badge { - margin-right: 5px; -} -.nav-pills > li > a > .badge { - margin-left: 3px; -} -.jumbotron { - padding-top: 30px; - padding-bottom: 30px; - margin-bottom: 30px; - color: inherit; - background-color: #f9f9f9; -} -.jumbotron h1, -.jumbotron .h1 { - color: #444444; -} -.jumbotron p { - margin-bottom: 15px; - font-size: 20px; - font-weight: 200; -} -.jumbotron > hr { - border-top-color: #e0e0e0; -} -.container .jumbotron, -.container-fluid .jumbotron { - border-radius: 3px; - padding-left: 15px; - padding-right: 15px; -} -.jumbotron .container { - max-width: 100%; -} -@media screen and (min-width: 768px) { - .jumbotron { - padding-top: 48px; - padding-bottom: 48px; - } - .container .jumbotron, - .container-fluid .jumbotron { - padding-left: 60px; - padding-right: 60px; - } - .jumbotron h1, - .jumbotron .h1 { - font-size: 59px; - } -} -.thumbnail { - display: block; - padding: 4px; - margin-bottom: 23px; - line-height: 1.846; - background-color: #ffffff; - border: 1px solid #dddddd; - border-radius: 3px; - -webkit-transition: border 0.2s ease-in-out; - -o-transition: border 0.2s ease-in-out; - transition: border 0.2s ease-in-out; -} -.thumbnail > img, -.thumbnail a > img { - margin-left: auto; - margin-right: auto; -} -a.thumbnail:hover, -a.thumbnail:focus, -a.thumbnail.active { - border-color: #2196f3; -} -.thumbnail .caption { - padding: 9px; - color: #666666; -} -.alert { - padding: 15px; - margin-bottom: 23px; - border: 1px solid transparent; - border-radius: 3px; -} -.alert h4 { - margin-top: 0; - color: inherit; -} -.alert .alert-link { - font-weight: bold; -} -.alert > p, -.alert > ul { - margin-bottom: 0; -} -.alert > p + p { - margin-top: 5px; -} -.alert-dismissable, -.alert-dismissible { - padding-right: 35px; -} -.alert-dismissable .close, -.alert-dismissible .close { - position: relative; - top: -2px; - right: -21px; - color: inherit; -} -.alert-success { - background-color: #dff0d8; - border-color: #d6e9c6; - color: #4caf50; -} -.alert-success hr { - border-top-color: #c9e2b3; -} -.alert-success .alert-link { - color: #3d8b40; -} -.alert-info { - background-color: #e1bee7; - border-color: #cba4dd; - color: #9c27b0; -} -.alert-info hr { - border-top-color: #c191d6; -} -.alert-info .alert-link { - color: #771e86; -} -.alert-warning { - background-color: #ffe0b2; - border-color: #ffc599; - color: #ff9800; -} -.alert-warning hr { - border-top-color: #ffb67f; -} -.alert-warning .alert-link { - color: #cc7a00; -} -.alert-danger { - background-color: #f9bdbb; - border-color: #f7a4af; - color: #e51c23; -} -.alert-danger hr { - border-top-color: #f58c9a; -} -.alert-danger .alert-link { - color: #b9151b; -} -@-webkit-keyframes progress-bar-stripes { - from { - background-position: 40px 0; - } - to { - background-position: 0 0; - } -} -@-o-keyframes progress-bar-stripes { - from { - background-position: 40px 0; - } - to { - background-position: 0 0; - } -} -@keyframes progress-bar-stripes { - from { - background-position: 40px 0; - } - to { - background-position: 0 0; - } -} -.progress { - overflow: hidden; - height: 23px; - margin-bottom: 23px; - background-color: #f5f5f5; - border-radius: 3px; - -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); - box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); -} -.progress-bar { - float: left; - width: 0%; - height: 100%; - font-size: 12px; - line-height: 23px; - color: #ffffff; - text-align: center; - background-color: #2196f3; - -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); - box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); - -webkit-transition: width 0.6s ease; - -o-transition: width 0.6s ease; - transition: width 0.6s ease; -} -.progress-striped .progress-bar, -.progress-bar-striped { - background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - -webkit-background-size: 40px 40px; - background-size: 40px 40px; -} -.progress.active .progress-bar, -.progress-bar.active { - -webkit-animation: progress-bar-stripes 2s linear infinite; - -o-animation: progress-bar-stripes 2s linear infinite; - animation: progress-bar-stripes 2s linear infinite; -} -.progress-bar-success { - background-color: #4caf50; -} -.progress-striped .progress-bar-success { - background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); -} -.progress-bar-info { - background-color: #9c27b0; -} -.progress-striped .progress-bar-info { - background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); -} -.progress-bar-warning { - background-color: #ff9800; -} -.progress-striped .progress-bar-warning { - background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); -} -.progress-bar-danger { - background-color: #e51c23; -} -.progress-striped .progress-bar-danger { - background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); -} -.media { - margin-top: 15px; -} -.media:first-child { - margin-top: 0; -} -.media, -.media-body { - zoom: 1; - overflow: hidden; -} -.media-body { - width: 10000px; -} -.media-object { - display: block; -} -.media-object.img-thumbnail { - max-width: none; -} -.media-right, -.media > .pull-right { - padding-left: 10px; -} -.media-left, -.media > .pull-left { - padding-right: 10px; -} -.media-left, -.media-right, -.media-body { - display: table-cell; - vertical-align: top; -} -.media-middle { - vertical-align: middle; -} -.media-bottom { - vertical-align: bottom; -} -.media-heading { - margin-top: 0; - margin-bottom: 5px; -} -.media-list { - padding-left: 0; - list-style: none; -} -.list-group { - margin-bottom: 20px; - padding-left: 0; -} -.list-group-item { - position: relative; - display: block; - padding: 10px 15px; - margin-bottom: -1px; - background-color: #ffffff; - border: 1px solid #dddddd; -} -.list-group-item:first-child { - border-top-right-radius: 3px; - border-top-left-radius: 3px; -} -.list-group-item:last-child { - margin-bottom: 0; - border-bottom-right-radius: 3px; - border-bottom-left-radius: 3px; -} -a.list-group-item, -button.list-group-item { - color: #555555; -} -a.list-group-item .list-group-item-heading, -button.list-group-item .list-group-item-heading { - color: #333333; -} -a.list-group-item:hover, -button.list-group-item:hover, -a.list-group-item:focus, -button.list-group-item:focus { - text-decoration: none; - color: #555555; - background-color: #f5f5f5; -} -button.list-group-item { - width: 100%; - text-align: left; -} -.list-group-item.disabled, -.list-group-item.disabled:hover, -.list-group-item.disabled:focus { - background-color: #eeeeee; - color: #bbbbbb; - cursor: not-allowed; -} -.list-group-item.disabled .list-group-item-heading, -.list-group-item.disabled:hover .list-group-item-heading, -.list-group-item.disabled:focus .list-group-item-heading { - color: inherit; -} -.list-group-item.disabled .list-group-item-text, -.list-group-item.disabled:hover .list-group-item-text, -.list-group-item.disabled:focus .list-group-item-text { - color: #bbbbbb; -} -.list-group-item.active, -.list-group-item.active:hover, -.list-group-item.active:focus { - z-index: 2; - color: #ffffff; - background-color: #2196f3; - border-color: #2196f3; -} -.list-group-item.active .list-group-item-heading, -.list-group-item.active:hover .list-group-item-heading, -.list-group-item.active:focus .list-group-item-heading, -.list-group-item.active .list-group-item-heading > small, -.list-group-item.active:hover .list-group-item-heading > small, -.list-group-item.active:focus .list-group-item-heading > small, -.list-group-item.active .list-group-item-heading > .small, -.list-group-item.active:hover .list-group-item-heading > .small, -.list-group-item.active:focus .list-group-item-heading > .small { - color: inherit; -} -.list-group-item.active .list-group-item-text, -.list-group-item.active:hover .list-group-item-text, -.list-group-item.active:focus .list-group-item-text { - color: #e3f2fd; -} -.list-group-item-success { - color: #4caf50; - background-color: #dff0d8; -} -a.list-group-item-success, -button.list-group-item-success { - color: #4caf50; -} -a.list-group-item-success .list-group-item-heading, -button.list-group-item-success .list-group-item-heading { - color: inherit; -} -a.list-group-item-success:hover, -button.list-group-item-success:hover, -a.list-group-item-success:focus, -button.list-group-item-success:focus { - color: #4caf50; - background-color: #d0e9c6; -} -a.list-group-item-success.active, -button.list-group-item-success.active, -a.list-group-item-success.active:hover, -button.list-group-item-success.active:hover, -a.list-group-item-success.active:focus, -button.list-group-item-success.active:focus { - color: #fff; - background-color: #4caf50; - border-color: #4caf50; -} -.list-group-item-info { - color: #9c27b0; - background-color: #e1bee7; -} -a.list-group-item-info, -button.list-group-item-info { - color: #9c27b0; -} -a.list-group-item-info .list-group-item-heading, -button.list-group-item-info .list-group-item-heading { - color: inherit; -} -a.list-group-item-info:hover, -button.list-group-item-info:hover, -a.list-group-item-info:focus, -button.list-group-item-info:focus { - color: #9c27b0; - background-color: #d8abe0; -} -a.list-group-item-info.active, -button.list-group-item-info.active, -a.list-group-item-info.active:hover, -button.list-group-item-info.active:hover, -a.list-group-item-info.active:focus, -button.list-group-item-info.active:focus { - color: #fff; - background-color: #9c27b0; - border-color: #9c27b0; -} -.list-group-item-warning { - color: #ff9800; - background-color: #ffe0b2; -} -a.list-group-item-warning, -button.list-group-item-warning { - color: #ff9800; -} -a.list-group-item-warning .list-group-item-heading, -button.list-group-item-warning .list-group-item-heading { - color: inherit; -} -a.list-group-item-warning:hover, -button.list-group-item-warning:hover, -a.list-group-item-warning:focus, -button.list-group-item-warning:focus { - color: #ff9800; - background-color: #ffd699; -} -a.list-group-item-warning.active, -button.list-group-item-warning.active, -a.list-group-item-warning.active:hover, -button.list-group-item-warning.active:hover, -a.list-group-item-warning.active:focus, -button.list-group-item-warning.active:focus { - color: #fff; - background-color: #ff9800; - border-color: #ff9800; -} -.list-group-item-danger { - color: #e51c23; - background-color: #f9bdbb; -} -a.list-group-item-danger, -button.list-group-item-danger { - color: #e51c23; -} -a.list-group-item-danger .list-group-item-heading, -button.list-group-item-danger .list-group-item-heading { - color: inherit; -} -a.list-group-item-danger:hover, -button.list-group-item-danger:hover, -a.list-group-item-danger:focus, -button.list-group-item-danger:focus { - color: #e51c23; - background-color: #f7a6a4; -} -a.list-group-item-danger.active, -button.list-group-item-danger.active, -a.list-group-item-danger.active:hover, -button.list-group-item-danger.active:hover, -a.list-group-item-danger.active:focus, -button.list-group-item-danger.active:focus { - color: #fff; - background-color: #e51c23; - border-color: #e51c23; -} -.list-group-item-heading { - margin-top: 0; - margin-bottom: 5px; -} -.list-group-item-text { - margin-bottom: 0; - line-height: 1.3; -} -.panel { - margin-bottom: 23px; - background-color: #ffffff; - border: 1px solid transparent; - border-radius: 3px; - -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05); - box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05); -} -.panel-body { - padding: 15px; -} -.panel-heading { - padding: 10px 15px; - border-bottom: 1px solid transparent; - border-top-right-radius: 2px; - border-top-left-radius: 2px; -} -.panel-heading > .dropdown .dropdown-toggle { - color: inherit; -} -.panel-title { - margin-top: 0; - margin-bottom: 0; - font-size: 15px; - color: inherit; -} -.panel-title > a, -.panel-title > small, -.panel-title > .small, -.panel-title > small > a, -.panel-title > .small > a { - color: inherit; -} -.panel-footer { - padding: 10px 15px; - background-color: #f5f5f5; - border-top: 1px solid #dddddd; - border-bottom-right-radius: 2px; - border-bottom-left-radius: 2px; -} -.panel > .list-group, -.panel > .panel-collapse > .list-group { - margin-bottom: 0; -} -.panel > .list-group .list-group-item, -.panel > .panel-collapse > .list-group .list-group-item { - border-width: 1px 0; - border-radius: 0; -} -.panel > .list-group:first-child .list-group-item:first-child, -.panel > .panel-collapse > .list-group:first-child .list-group-item:first-child { - border-top: 0; - border-top-right-radius: 2px; - border-top-left-radius: 2px; -} -.panel > .list-group:last-child .list-group-item:last-child, -.panel > .panel-collapse > .list-group:last-child .list-group-item:last-child { - border-bottom: 0; - border-bottom-right-radius: 2px; - border-bottom-left-radius: 2px; -} -.panel > .panel-heading + .panel-collapse > .list-group .list-group-item:first-child { - border-top-right-radius: 0; - border-top-left-radius: 0; -} -.panel-heading + .list-group .list-group-item:first-child { - border-top-width: 0; -} -.list-group + .panel-footer { - border-top-width: 0; -} -.panel > .table, -.panel > .table-responsive > .table, -.panel > .panel-collapse > .table { - margin-bottom: 0; -} -.panel > .table caption, -.panel > .table-responsive > .table caption, -.panel > .panel-collapse > .table caption { - padding-left: 15px; - padding-right: 15px; -} -.panel > .table:first-child, -.panel > .table-responsive:first-child > .table:first-child { - border-top-right-radius: 2px; - border-top-left-radius: 2px; -} -.panel > .table:first-child > thead:first-child > tr:first-child, -.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child, -.panel > .table:first-child > tbody:first-child > tr:first-child, -.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child { - border-top-left-radius: 2px; - border-top-right-radius: 2px; -} -.panel > .table:first-child > thead:first-child > tr:first-child td:first-child, -.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child, -.panel > .table:first-child > tbody:first-child > tr:first-child td:first-child, -.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child, -.panel > .table:first-child > thead:first-child > tr:first-child th:first-child, -.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child, -.panel > .table:first-child > tbody:first-child > tr:first-child th:first-child, -.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child { - border-top-left-radius: 2px; -} -.panel > .table:first-child > thead:first-child > tr:first-child td:last-child, -.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child, -.panel > .table:first-child > tbody:first-child > tr:first-child td:last-child, -.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child, -.panel > .table:first-child > thead:first-child > tr:first-child th:last-child, -.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child, -.panel > .table:first-child > tbody:first-child > tr:first-child th:last-child, -.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child { - border-top-right-radius: 2px; -} -.panel > .table:last-child, -.panel > .table-responsive:last-child > .table:last-child { - border-bottom-right-radius: 2px; - border-bottom-left-radius: 2px; -} -.panel > .table:last-child > tbody:last-child > tr:last-child, -.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child, -.panel > .table:last-child > tfoot:last-child > tr:last-child, -.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child { - border-bottom-left-radius: 2px; - border-bottom-right-radius: 2px; -} -.panel > .table:last-child > tbody:last-child > tr:last-child td:first-child, -.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child, -.panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child, -.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child, -.panel > .table:last-child > tbody:last-child > tr:last-child th:first-child, -.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child, -.panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child, -.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child { - border-bottom-left-radius: 2px; -} -.panel > .table:last-child > tbody:last-child > tr:last-child td:last-child, -.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child, -.panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child, -.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child, -.panel > .table:last-child > tbody:last-child > tr:last-child th:last-child, -.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child, -.panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child, -.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child { - border-bottom-right-radius: 2px; -} -.panel > .panel-body + .table, -.panel > .panel-body + .table-responsive, -.panel > .table + .panel-body, -.panel > .table-responsive + .panel-body { - border-top: 1px solid #dddddd; -} -.panel > .table > tbody:first-child > tr:first-child th, -.panel > .table > tbody:first-child > tr:first-child td { - border-top: 0; -} -.panel > .table-bordered, -.panel > .table-responsive > .table-bordered { - border: 0; -} -.panel > .table-bordered > thead > tr > th:first-child, -.panel > .table-responsive > .table-bordered > thead > tr > th:first-child, -.panel > .table-bordered > tbody > tr > th:first-child, -.panel > .table-responsive > .table-bordered > tbody > tr > th:first-child, -.panel > .table-bordered > tfoot > tr > th:first-child, -.panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child, -.panel > .table-bordered > thead > tr > td:first-child, -.panel > .table-responsive > .table-bordered > thead > tr > td:first-child, -.panel > .table-bordered > tbody > tr > td:first-child, -.panel > .table-responsive > .table-bordered > tbody > tr > td:first-child, -.panel > .table-bordered > tfoot > tr > td:first-child, -.panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child { - border-left: 0; -} -.panel > .table-bordered > thead > tr > th:last-child, -.panel > .table-responsive > .table-bordered > thead > tr > th:last-child, -.panel > .table-bordered > tbody > tr > th:last-child, -.panel > .table-responsive > .table-bordered > tbody > tr > th:last-child, -.panel > .table-bordered > tfoot > tr > th:last-child, -.panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child, -.panel > .table-bordered > thead > tr > td:last-child, -.panel > .table-responsive > .table-bordered > thead > tr > td:last-child, -.panel > .table-bordered > tbody > tr > td:last-child, -.panel > .table-responsive > .table-bordered > tbody > tr > td:last-child, -.panel > .table-bordered > tfoot > tr > td:last-child, -.panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child { - border-right: 0; -} -.panel > .table-bordered > thead > tr:first-child > td, -.panel > .table-responsive > .table-bordered > thead > tr:first-child > td, -.panel > .table-bordered > tbody > tr:first-child > td, -.panel > .table-responsive > .table-bordered > tbody > tr:first-child > td, -.panel > .table-bordered > thead > tr:first-child > th, -.panel > .table-responsive > .table-bordered > thead > tr:first-child > th, -.panel > .table-bordered > tbody > tr:first-child > th, -.panel > .table-responsive > .table-bordered > tbody > tr:first-child > th { - border-bottom: 0; -} -.panel > .table-bordered > tbody > tr:last-child > td, -.panel > .table-responsive > .table-bordered > tbody > tr:last-child > td, -.panel > .table-bordered > tfoot > tr:last-child > td, -.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td, -.panel > .table-bordered > tbody > tr:last-child > th, -.panel > .table-responsive > .table-bordered > tbody > tr:last-child > th, -.panel > .table-bordered > tfoot > tr:last-child > th, -.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th { - border-bottom: 0; -} -.panel > .table-responsive { - border: 0; - margin-bottom: 0; -} -.panel-group { - margin-bottom: 23px; -} -.panel-group .panel { - margin-bottom: 0; - border-radius: 3px; -} -.panel-group .panel + .panel { - margin-top: 5px; -} -.panel-group .panel-heading { - border-bottom: 0; -} -.panel-group .panel-heading + .panel-collapse > .panel-body, -.panel-group .panel-heading + .panel-collapse > .list-group { - border-top: 1px solid #dddddd; -} -.panel-group .panel-footer { - border-top: 0; -} -.panel-group .panel-footer + .panel-collapse .panel-body { - border-bottom: 1px solid #dddddd; -} -.panel-default { - border-color: #dddddd; -} -.panel-default > .panel-heading { - color: #212121; - background-color: #f5f5f5; - border-color: #dddddd; -} -.panel-default > .panel-heading + .panel-collapse > .panel-body { - border-top-color: #dddddd; -} -.panel-default > .panel-heading .badge { - color: #f5f5f5; - background-color: #212121; -} -.panel-default > .panel-footer + .panel-collapse > .panel-body { - border-bottom-color: #dddddd; -} -.panel-primary { - border-color: #2196f3; -} -.panel-primary > .panel-heading { - color: #ffffff; - background-color: #2196f3; - border-color: #2196f3; -} -.panel-primary > .panel-heading + .panel-collapse > .panel-body { - border-top-color: #2196f3; -} -.panel-primary > .panel-heading .badge { - color: #2196f3; - background-color: #ffffff; -} -.panel-primary > .panel-footer + .panel-collapse > .panel-body { - border-bottom-color: #2196f3; -} -.panel-success { - border-color: #d6e9c6; -} -.panel-success > .panel-heading { - color: #ffffff; - background-color: #4caf50; - border-color: #d6e9c6; -} -.panel-success > .panel-heading + .panel-collapse > .panel-body { - border-top-color: #d6e9c6; -} -.panel-success > .panel-heading .badge { - color: #4caf50; - background-color: #ffffff; -} -.panel-success > .panel-footer + .panel-collapse > .panel-body { - border-bottom-color: #d6e9c6; -} -.panel-info { - border-color: #cba4dd; -} -.panel-info > .panel-heading { - color: #ffffff; - background-color: #9c27b0; - border-color: #cba4dd; -} -.panel-info > .panel-heading + .panel-collapse > .panel-body { - border-top-color: #cba4dd; -} -.panel-info > .panel-heading .badge { - color: #9c27b0; - background-color: #ffffff; -} -.panel-info > .panel-footer + .panel-collapse > .panel-body { - border-bottom-color: #cba4dd; -} -.panel-warning { - border-color: #ffc599; -} -.panel-warning > .panel-heading { - color: #ffffff; - background-color: #ff9800; - border-color: #ffc599; -} -.panel-warning > .panel-heading + .panel-collapse > .panel-body { - border-top-color: #ffc599; -} -.panel-warning > .panel-heading .badge { - color: #ff9800; - background-color: #ffffff; -} -.panel-warning > .panel-footer + .panel-collapse > .panel-body { - border-bottom-color: #ffc599; -} -.panel-danger { - border-color: #f7a4af; -} -.panel-danger > .panel-heading { - color: #ffffff; - background-color: #e51c23; - border-color: #f7a4af; -} -.panel-danger > .panel-heading + .panel-collapse > .panel-body { - border-top-color: #f7a4af; -} -.panel-danger > .panel-heading .badge { - color: #e51c23; - background-color: #ffffff; -} -.panel-danger > .panel-footer + .panel-collapse > .panel-body { - border-bottom-color: #f7a4af; -} -.embed-responsive { - position: relative; - display: block; - height: 0; - padding: 0; - overflow: hidden; -} -.embed-responsive .embed-responsive-item, -.embed-responsive iframe, -.embed-responsive embed, -.embed-responsive object, -.embed-responsive video { - position: absolute; - top: 0; - left: 0; - bottom: 0; - height: 100%; - width: 100%; - border: 0; -} -.embed-responsive-16by9 { - padding-bottom: 56.25%; -} -.embed-responsive-4by3 { - padding-bottom: 75%; -} -.well { - min-height: 20px; - padding: 19px; - margin-bottom: 20px; - background-color: #f9f9f9; - border: 1px solid transparent; - border-radius: 3px; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); -} -.well blockquote { - border-color: #ddd; - border-color: rgba(0, 0, 0, 0.15); -} -.well-lg { - padding: 24px; - border-radius: 3px; -} -.well-sm { - padding: 9px; - border-radius: 3px; -} -.close { - float: right; - font-size: 19.5px; - font-weight: normal; - line-height: 1; - color: #000000; - text-shadow: none; - opacity: 0.2; - filter: alpha(opacity=20); -} -.close:hover, -.close:focus { - color: #000000; - text-decoration: none; - cursor: pointer; - opacity: 0.5; - filter: alpha(opacity=50); -} -button.close { - padding: 0; - cursor: pointer; - background: transparent; - border: 0; - -webkit-appearance: none; -} -.modal-open { - overflow: hidden; -} -.modal { - display: none; - overflow: hidden; - position: fixed; - top: 0; - right: 0; - bottom: 0; - left: 0; - z-index: 1050; - -webkit-overflow-scrolling: touch; - outline: 0; -} -.modal.fade .modal-dialog { - -webkit-transform: translate(0, -25%); - -ms-transform: translate(0, -25%); - -o-transform: translate(0, -25%); - transform: translate(0, -25%); - -webkit-transition: -webkit-transform 0.3s ease-out; - -o-transition: -o-transform 0.3s ease-out; - transition: transform 0.3s ease-out; -} -.modal.in .modal-dialog { - -webkit-transform: translate(0, 0); - -ms-transform: translate(0, 0); - -o-transform: translate(0, 0); - transform: translate(0, 0); -} -.modal-open .modal { - overflow-x: hidden; - overflow-y: auto; -} -.modal-dialog { - position: relative; - width: auto; - margin: 10px; -} -.modal-content { - position: relative; - background-color: #ffffff; - border: 1px solid #999999; - border: 1px solid transparent; - border-radius: 3px; - -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5); - box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5); - -webkit-background-clip: padding-box; - background-clip: padding-box; - outline: 0; -} -.modal-backdrop { - position: fixed; - top: 0; - right: 0; - bottom: 0; - left: 0; - z-index: 1040; - background-color: #000000; -} -.modal-backdrop.fade { - opacity: 0; - filter: alpha(opacity=0); -} -.modal-backdrop.in { - opacity: 0.5; - filter: alpha(opacity=50); -} -.modal-header { - padding: 15px; - border-bottom: 1px solid transparent; -} -.modal-header .close { - margin-top: -2px; -} -.modal-title { - margin: 0; - line-height: 1.846; -} -.modal-body { - position: relative; - padding: 15px; -} -.modal-footer { - padding: 15px; - text-align: right; - border-top: 1px solid transparent; -} -.modal-footer .btn + .btn { - margin-left: 5px; - margin-bottom: 0; -} -.modal-footer .btn-group .btn + .btn { - margin-left: -1px; -} -.modal-footer .btn-block + .btn-block { - margin-left: 0; -} -.modal-scrollbar-measure { - position: absolute; - top: -9999px; - width: 50px; - height: 50px; - overflow: scroll; -} -@media (min-width: 768px) { - .modal-dialog { - width: 600px; - margin: 30px auto; - } - .modal-content { - -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5); - box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5); - } - .modal-sm { - width: 300px; - } -} -@media (min-width: 992px) { - .modal-lg { - width: 900px; - } -} -.tooltip { - position: absolute; - z-index: 1070; - display: block; - font-family: "Roboto", "Helvetica Neue", Helvetica, Arial, sans-serif; - font-style: normal; - font-weight: normal; - letter-spacing: normal; - line-break: auto; - line-height: 1.846; - text-align: left; - text-align: start; - text-decoration: none; - text-shadow: none; - text-transform: none; - white-space: normal; - word-break: normal; - word-spacing: normal; - word-wrap: normal; - font-size: 12px; - opacity: 0; - filter: alpha(opacity=0); -} -.tooltip.in { - opacity: 0.9; - filter: alpha(opacity=90); -} -.tooltip.top { - margin-top: -3px; - padding: 5px 0; -} -.tooltip.right { - margin-left: 3px; - padding: 0 5px; -} -.tooltip.bottom { - margin-top: 3px; - padding: 5px 0; -} -.tooltip.left { - margin-left: -3px; - padding: 0 5px; -} -.tooltip-inner { - max-width: 200px; - padding: 3px 8px; - color: #ffffff; - text-align: center; - background-color: #727272; - border-radius: 3px; -} -.tooltip-arrow { - position: absolute; - width: 0; - height: 0; - border-color: transparent; - border-style: solid; -} -.tooltip.top .tooltip-arrow { - bottom: 0; - left: 50%; - margin-left: -5px; - border-width: 5px 5px 0; - border-top-color: #727272; -} -.tooltip.top-left .tooltip-arrow { - bottom: 0; - right: 5px; - margin-bottom: -5px; - border-width: 5px 5px 0; - border-top-color: #727272; -} -.tooltip.top-right .tooltip-arrow { - bottom: 0; - left: 5px; - margin-bottom: -5px; - border-width: 5px 5px 0; - border-top-color: #727272; -} -.tooltip.right .tooltip-arrow { - top: 50%; - left: 0; - margin-top: -5px; - border-width: 5px 5px 5px 0; - border-right-color: #727272; -} -.tooltip.left .tooltip-arrow { - top: 50%; - right: 0; - margin-top: -5px; - border-width: 5px 0 5px 5px; - border-left-color: #727272; -} -.tooltip.bottom .tooltip-arrow { - top: 0; - left: 50%; - margin-left: -5px; - border-width: 0 5px 5px; - border-bottom-color: #727272; -} -.tooltip.bottom-left .tooltip-arrow { - top: 0; - right: 5px; - margin-top: -5px; - border-width: 0 5px 5px; - border-bottom-color: #727272; -} -.tooltip.bottom-right .tooltip-arrow { - top: 0; - left: 5px; - margin-top: -5px; - border-width: 0 5px 5px; - border-bottom-color: #727272; -} -.popover { - position: absolute; - top: 0; - left: 0; - z-index: 1060; - display: none; - max-width: 276px; - padding: 1px; - font-family: "Roboto", "Helvetica Neue", Helvetica, Arial, sans-serif; - font-style: normal; - font-weight: normal; - letter-spacing: normal; - line-break: auto; - line-height: 1.846; - text-align: left; - text-align: start; - text-decoration: none; - text-shadow: none; - text-transform: none; - white-space: normal; - word-break: normal; - word-spacing: normal; - word-wrap: normal; - font-size: 13px; - background-color: #ffffff; - -webkit-background-clip: padding-box; - background-clip: padding-box; - border: 1px solid transparent; - border-radius: 3px; - -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); - box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); -} -.popover.top { - margin-top: -10px; -} -.popover.right { - margin-left: 10px; -} -.popover.bottom { - margin-top: 10px; -} -.popover.left { - margin-left: -10px; -} -.popover-title { - margin: 0; - padding: 8px 14px; - font-size: 13px; - background-color: #f7f7f7; - border-bottom: 1px solid #ebebeb; - border-radius: 2px 2px 0 0; -} -.popover-content { - padding: 9px 14px; -} -.popover > .arrow, -.popover > .arrow:after { - position: absolute; - display: block; - width: 0; - height: 0; - border-color: transparent; - border-style: solid; -} -.popover > .arrow { - border-width: 11px; -} -.popover > .arrow:after { - border-width: 10px; - content: ""; -} -.popover.top > .arrow { - left: 50%; - margin-left: -11px; - border-bottom-width: 0; - border-top-color: rgba(0, 0, 0, 0); - border-top-color: rgba(0, 0, 0, 0.075); - bottom: -11px; -} -.popover.top > .arrow:after { - content: " "; - bottom: 1px; - margin-left: -10px; - border-bottom-width: 0; - border-top-color: #ffffff; -} -.popover.right > .arrow { - top: 50%; - left: -11px; - margin-top: -11px; - border-left-width: 0; - border-right-color: rgba(0, 0, 0, 0); - border-right-color: rgba(0, 0, 0, 0.075); -} -.popover.right > .arrow:after { - content: " "; - left: 1px; - bottom: -10px; - border-left-width: 0; - border-right-color: #ffffff; -} -.popover.bottom > .arrow { - left: 50%; - margin-left: -11px; - border-top-width: 0; - border-bottom-color: rgba(0, 0, 0, 0); - border-bottom-color: rgba(0, 0, 0, 0.075); - top: -11px; -} -.popover.bottom > .arrow:after { - content: " "; - top: 1px; - margin-left: -10px; - border-top-width: 0; - border-bottom-color: #ffffff; -} -.popover.left > .arrow { - top: 50%; - right: -11px; - margin-top: -11px; - border-right-width: 0; - border-left-color: rgba(0, 0, 0, 0); - border-left-color: rgba(0, 0, 0, 0.075); -} -.popover.left > .arrow:after { - content: " "; - right: 1px; - border-right-width: 0; - border-left-color: #ffffff; - bottom: -10px; -} -.carousel { - position: relative; -} -.carousel-inner { - position: relative; - overflow: hidden; - width: 100%; -} -.carousel-inner > .item { - display: none; - position: relative; - -webkit-transition: 0.6s ease-in-out left; - -o-transition: 0.6s ease-in-out left; - transition: 0.6s ease-in-out left; -} -.carousel-inner > .item > img, -.carousel-inner > .item > a > img { - line-height: 1; -} -@media all and (transform-3d), (-webkit-transform-3d) { - .carousel-inner > .item { - -webkit-transition: -webkit-transform 0.6s ease-in-out; - -o-transition: -o-transform 0.6s ease-in-out; - transition: transform 0.6s ease-in-out; - -webkit-backface-visibility: hidden; - backface-visibility: hidden; - -webkit-perspective: 1000px; - perspective: 1000px; - } - .carousel-inner > .item.next, - .carousel-inner > .item.active.right { - -webkit-transform: translate3d(100%, 0, 0); - transform: translate3d(100%, 0, 0); - left: 0; - } - .carousel-inner > .item.prev, - .carousel-inner > .item.active.left { - -webkit-transform: translate3d(-100%, 0, 0); - transform: translate3d(-100%, 0, 0); - left: 0; - } - .carousel-inner > .item.next.left, - .carousel-inner > .item.prev.right, - .carousel-inner > .item.active { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - left: 0; - } -} -.carousel-inner > .active, -.carousel-inner > .next, -.carousel-inner > .prev { - display: block; -} -.carousel-inner > .active { - left: 0; -} -.carousel-inner > .next, -.carousel-inner > .prev { - position: absolute; - top: 0; - width: 100%; -} -.carousel-inner > .next { - left: 100%; -} -.carousel-inner > .prev { - left: -100%; -} -.carousel-inner > .next.left, -.carousel-inner > .prev.right { - left: 0; -} -.carousel-inner > .active.left { - left: -100%; -} -.carousel-inner > .active.right { - left: 100%; -} -.carousel-control { - position: absolute; - top: 0; - left: 0; - bottom: 0; - width: 15%; - opacity: 0.5; - filter: alpha(opacity=50); - font-size: 20px; - color: #ffffff; - text-align: center; - text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6); - background-color: rgba(0, 0, 0, 0); -} -.carousel-control.left { - background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%); - background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%); - background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, 0.5)), to(rgba(0, 0, 0, 0.0001))); - background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1); -} -.carousel-control.right { - left: auto; - right: 0; - background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%); - background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%); - background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, 0.0001)), to(rgba(0, 0, 0, 0.5))); - background-image: linear-gradient(to right, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1); -} -.carousel-control:hover, -.carousel-control:focus { - outline: 0; - color: #ffffff; - text-decoration: none; - opacity: 0.9; - filter: alpha(opacity=90); -} -.carousel-control .icon-prev, -.carousel-control .icon-next, -.carousel-control .glyphicon-chevron-left, -.carousel-control .glyphicon-chevron-right { - position: absolute; - top: 50%; - margin-top: -10px; - z-index: 5; - display: inline-block; -} -.carousel-control .icon-prev, -.carousel-control .glyphicon-chevron-left { - left: 50%; - margin-left: -10px; -} -.carousel-control .icon-next, -.carousel-control .glyphicon-chevron-right { - right: 50%; - margin-right: -10px; -} -.carousel-control .icon-prev, -.carousel-control .icon-next { - width: 20px; - height: 20px; - line-height: 1; - font-family: serif; -} -.carousel-control .icon-prev:before { - content: '\2039'; -} -.carousel-control .icon-next:before { - content: '\203a'; -} -.carousel-indicators { - position: absolute; - bottom: 10px; - left: 50%; - z-index: 15; - width: 60%; - margin-left: -30%; - padding-left: 0; - list-style: none; - text-align: center; -} -.carousel-indicators li { - display: inline-block; - width: 10px; - height: 10px; - margin: 1px; - text-indent: -999px; - border: 1px solid #ffffff; - border-radius: 10px; - cursor: pointer; - background-color: #000 \9; - background-color: rgba(0, 0, 0, 0); -} -.carousel-indicators .active { - margin: 0; - width: 12px; - height: 12px; - background-color: #ffffff; -} -.carousel-caption { - position: absolute; - left: 15%; - right: 15%; - bottom: 20px; - z-index: 10; - padding-top: 20px; - padding-bottom: 20px; - color: #ffffff; - text-align: center; - text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6); -} -.carousel-caption .btn { - text-shadow: none; -} -@media screen and (min-width: 768px) { - .carousel-control .glyphicon-chevron-left, - .carousel-control .glyphicon-chevron-right, - .carousel-control .icon-prev, - .carousel-control .icon-next { - width: 30px; - height: 30px; - margin-top: -10px; - font-size: 30px; - } - .carousel-control .glyphicon-chevron-left, - .carousel-control .icon-prev { - margin-left: -10px; - } - .carousel-control .glyphicon-chevron-right, - .carousel-control .icon-next { - margin-right: -10px; - } - .carousel-caption { - left: 20%; - right: 20%; - padding-bottom: 30px; - } - .carousel-indicators { - bottom: 20px; - } -} -.clearfix:before, -.clearfix:after, -.dl-horizontal dd:before, -.dl-horizontal dd:after, -.container:before, -.container:after, -.container-fluid:before, -.container-fluid:after, -.row:before, -.row:after, -.form-horizontal .form-group:before, -.form-horizontal .form-group:after, -.btn-toolbar:before, -.btn-toolbar:after, -.btn-group-vertical > .btn-group:before, -.btn-group-vertical > .btn-group:after, -.nav:before, -.nav:after, -.navbar:before, -.navbar:after, -.navbar-header:before, -.navbar-header:after, -.navbar-collapse:before, -.navbar-collapse:after, -.pager:before, -.pager:after, -.panel-body:before, -.panel-body:after, -.modal-header:before, -.modal-header:after, -.modal-footer:before, -.modal-footer:after { - content: " "; - display: table; -} -.clearfix:after, -.dl-horizontal dd:after, -.container:after, -.container-fluid:after, -.row:after, -.form-horizontal .form-group:after, -.btn-toolbar:after, -.btn-group-vertical > .btn-group:after, -.nav:after, -.navbar:after, -.navbar-header:after, -.navbar-collapse:after, -.pager:after, -.panel-body:after, -.modal-header:after, -.modal-footer:after { - clear: both; -} -.center-block { - display: block; - margin-left: auto; - margin-right: auto; -} -.pull-right { - float: right !important; -} -.pull-left { - float: left !important; -} -.hide { - display: none !important; -} -.show { - display: block !important; -} -.invisible { - visibility: hidden; -} -.text-hide { - font: 0/0 a; - color: transparent; - text-shadow: none; - background-color: transparent; - border: 0; -} -.hidden { - display: none !important; -} -.affix { - position: fixed; -} -@-ms-viewport { - width: device-width; -} -.visible-xs, -.visible-sm, -.visible-md, -.visible-lg { - display: none !important; -} -.visible-xs-block, -.visible-xs-inline, -.visible-xs-inline-block, -.visible-sm-block, -.visible-sm-inline, -.visible-sm-inline-block, -.visible-md-block, -.visible-md-inline, -.visible-md-inline-block, -.visible-lg-block, -.visible-lg-inline, -.visible-lg-inline-block { - display: none !important; -} -@media (max-width: 767px) { - .visible-xs { - display: block !important; - } - table.visible-xs { - display: table !important; - } - tr.visible-xs { - display: table-row !important; - } - th.visible-xs, - td.visible-xs { - display: table-cell !important; - } -} -@media (max-width: 767px) { - .visible-xs-block { - display: block !important; - } -} -@media (max-width: 767px) { - .visible-xs-inline { - display: inline !important; - } -} -@media (max-width: 767px) { - .visible-xs-inline-block { - display: inline-block !important; - } -} -@media (min-width: 768px) and (max-width: 991px) { - .visible-sm { - display: block !important; - } - table.visible-sm { - display: table !important; - } - tr.visible-sm { - display: table-row !important; - } - th.visible-sm, - td.visible-sm { - display: table-cell !important; - } -} -@media (min-width: 768px) and (max-width: 991px) { - .visible-sm-block { - display: block !important; - } -} -@media (min-width: 768px) and (max-width: 991px) { - .visible-sm-inline { - display: inline !important; - } -} -@media (min-width: 768px) and (max-width: 991px) { - .visible-sm-inline-block { - display: inline-block !important; - } -} -@media (min-width: 992px) and (max-width: 1199px) { - .visible-md { - display: block !important; - } - table.visible-md { - display: table !important; - } - tr.visible-md { - display: table-row !important; - } - th.visible-md, - td.visible-md { - display: table-cell !important; - } -} -@media (min-width: 992px) and (max-width: 1199px) { - .visible-md-block { - display: block !important; - } -} -@media (min-width: 992px) and (max-width: 1199px) { - .visible-md-inline { - display: inline !important; - } -} -@media (min-width: 992px) and (max-width: 1199px) { - .visible-md-inline-block { - display: inline-block !important; - } -} -@media (min-width: 1200px) { - .visible-lg { - display: block !important; - } - table.visible-lg { - display: table !important; - } - tr.visible-lg { - display: table-row !important; - } - th.visible-lg, - td.visible-lg { - display: table-cell !important; - } -} -@media (min-width: 1200px) { - .visible-lg-block { - display: block !important; - } -} -@media (min-width: 1200px) { - .visible-lg-inline { - display: inline !important; - } -} -@media (min-width: 1200px) { - .visible-lg-inline-block { - display: inline-block !important; - } -} -@media (max-width: 767px) { - .hidden-xs { - display: none !important; - } -} -@media (min-width: 768px) and (max-width: 991px) { - .hidden-sm { - display: none !important; - } -} -@media (min-width: 992px) and (max-width: 1199px) { - .hidden-md { - display: none !important; - } -} -@media (min-width: 1200px) { - .hidden-lg { - display: none !important; - } -} -.visible-print { - display: none !important; -} -@media print { - .visible-print { - display: block !important; - } - table.visible-print { - display: table !important; - } - tr.visible-print { - display: table-row !important; - } - th.visible-print, - td.visible-print { - display: table-cell !important; - } -} -.visible-print-block { - display: none !important; -} -@media print { - .visible-print-block { - display: block !important; - } -} -.visible-print-inline { - display: none !important; -} -@media print { - .visible-print-inline { - display: inline !important; - } -} -.visible-print-inline-block { - display: none !important; -} -@media print { - .visible-print-inline-block { - display: inline-block !important; - } -} -@media print { - .hidden-print { - display: none !important; - } -} -.navbar { - border: none; - -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.3); - box-shadow: 0 1px 2px rgba(0, 0, 0, 0.3); -} -.navbar-brand { - font-size: 24px; -} -.navbar-inverse .navbar-form input[type=text], -.navbar-inverse .navbar-form input[type=password] { - color: #fff; - -webkit-box-shadow: inset 0 -1px 0 #b2dbfb; - box-shadow: inset 0 -1px 0 #b2dbfb; -} -.navbar-inverse .navbar-form input[type=text]::-moz-placeholder, -.navbar-inverse .navbar-form input[type=password]::-moz-placeholder { - color: #b2dbfb; - opacity: 1; -} -.navbar-inverse .navbar-form input[type=text]:-ms-input-placeholder, -.navbar-inverse .navbar-form input[type=password]:-ms-input-placeholder { - color: #b2dbfb; -} -.navbar-inverse .navbar-form input[type=text]::-webkit-input-placeholder, -.navbar-inverse .navbar-form input[type=password]::-webkit-input-placeholder { - color: #b2dbfb; -} -.navbar-inverse .navbar-form input[type=text]:focus, -.navbar-inverse .navbar-form input[type=password]:focus { - -webkit-box-shadow: inset 0 -2px 0 #ffffff; - box-shadow: inset 0 -2px 0 #ffffff; -} -.btn-default { - -webkit-background-size: 200% 200%; - background-size: 200% 200%; - background-position: 50%; -} -.btn-default:focus { - background-color: #ffffff; -} -.btn-default:hover, -.btn-default:active:hover { - background-color: #f0f0f0; -} -.btn-default:active { - background-color: #e0e0e0; - background-image: -webkit-radial-gradient(circle, #e0e0e0 10%, #ffffff 11%); - background-image: -o-radial-gradient(circle, #e0e0e0 10%, #ffffff 11%); - background-image: radial-gradient(circle, #e0e0e0 10%, #ffffff 11%); - background-repeat: no-repeat; - -webkit-background-size: 1000% 1000%; - background-size: 1000% 1000%; - -webkit-box-shadow: 2px 2px 4px rgba(0, 0, 0, 0.4); - box-shadow: 2px 2px 4px rgba(0, 0, 0, 0.4); -} -.btn-primary { - -webkit-background-size: 200% 200%; - background-size: 200% 200%; - background-position: 50%; -} -.btn-primary:focus { - background-color: #2196f3; -} -.btn-primary:hover, -.btn-primary:active:hover { - background-color: #0d87e9; -} -.btn-primary:active { - background-color: #0b76cc; - background-image: -webkit-radial-gradient(circle, #0b76cc 10%, #2196f3 11%); - background-image: -o-radial-gradient(circle, #0b76cc 10%, #2196f3 11%); - background-image: radial-gradient(circle, #0b76cc 10%, #2196f3 11%); - background-repeat: no-repeat; - -webkit-background-size: 1000% 1000%; - background-size: 1000% 1000%; - -webkit-box-shadow: 2px 2px 4px rgba(0, 0, 0, 0.4); - box-shadow: 2px 2px 4px rgba(0, 0, 0, 0.4); -} -.btn-success { - -webkit-background-size: 200% 200%; - background-size: 200% 200%; - background-position: 50%; -} -.btn-success:focus { - background-color: #4caf50; -} -.btn-success:hover, -.btn-success:active:hover { - background-color: #439a46; -} -.btn-success:active { - background-color: #39843c; - background-image: -webkit-radial-gradient(circle, #39843c 10%, #4caf50 11%); - background-image: -o-radial-gradient(circle, #39843c 10%, #4caf50 11%); - background-image: radial-gradient(circle, #39843c 10%, #4caf50 11%); - background-repeat: no-repeat; - -webkit-background-size: 1000% 1000%; - background-size: 1000% 1000%; - -webkit-box-shadow: 2px 2px 4px rgba(0, 0, 0, 0.4); - box-shadow: 2px 2px 4px rgba(0, 0, 0, 0.4); -} -.btn-info { - -webkit-background-size: 200% 200%; - background-size: 200% 200%; - background-position: 50%; -} -.btn-info:focus { - background-color: #9c27b0; -} -.btn-info:hover, -.btn-info:active:hover { - background-color: #862197; -} -.btn-info:active { - background-color: #701c7e; - background-image: -webkit-radial-gradient(circle, #701c7e 10%, #9c27b0 11%); - background-image: -o-radial-gradient(circle, #701c7e 10%, #9c27b0 11%); - background-image: radial-gradient(circle, #701c7e 10%, #9c27b0 11%); - background-repeat: no-repeat; - -webkit-background-size: 1000% 1000%; - background-size: 1000% 1000%; - -webkit-box-shadow: 2px 2px 4px rgba(0, 0, 0, 0.4); - box-shadow: 2px 2px 4px rgba(0, 0, 0, 0.4); -} -.btn-warning { - -webkit-background-size: 200% 200%; - background-size: 200% 200%; - background-position: 50%; -} -.btn-warning:focus { - background-color: #ff9800; -} -.btn-warning:hover, -.btn-warning:active:hover { - background-color: #e08600; -} -.btn-warning:active { - background-color: #c27400; - background-image: -webkit-radial-gradient(circle, #c27400 10%, #ff9800 11%); - background-image: -o-radial-gradient(circle, #c27400 10%, #ff9800 11%); - background-image: radial-gradient(circle, #c27400 10%, #ff9800 11%); - background-repeat: no-repeat; - -webkit-background-size: 1000% 1000%; - background-size: 1000% 1000%; - -webkit-box-shadow: 2px 2px 4px rgba(0, 0, 0, 0.4); - box-shadow: 2px 2px 4px rgba(0, 0, 0, 0.4); -} -.btn-danger { - -webkit-background-size: 200% 200%; - background-size: 200% 200%; - background-position: 50%; -} -.btn-danger:focus { - background-color: #e51c23; -} -.btn-danger:hover, -.btn-danger:active:hover { - background-color: #cb171e; -} -.btn-danger:active { - background-color: #b0141a; - background-image: -webkit-radial-gradient(circle, #b0141a 10%, #e51c23 11%); - background-image: -o-radial-gradient(circle, #b0141a 10%, #e51c23 11%); - background-image: radial-gradient(circle, #b0141a 10%, #e51c23 11%); - background-repeat: no-repeat; - -webkit-background-size: 1000% 1000%; - background-size: 1000% 1000%; - -webkit-box-shadow: 2px 2px 4px rgba(0, 0, 0, 0.4); - box-shadow: 2px 2px 4px rgba(0, 0, 0, 0.4); -} -.btn-link { - -webkit-background-size: 200% 200%; - background-size: 200% 200%; - background-position: 50%; -} -.btn-link:focus { - background-color: #ffffff; -} -.btn-link:hover, -.btn-link:active:hover { - background-color: #f0f0f0; -} -.btn-link:active { - background-color: #e0e0e0; - background-image: -webkit-radial-gradient(circle, #e0e0e0 10%, #ffffff 11%); - background-image: -o-radial-gradient(circle, #e0e0e0 10%, #ffffff 11%); - background-image: radial-gradient(circle, #e0e0e0 10%, #ffffff 11%); - background-repeat: no-repeat; - -webkit-background-size: 1000% 1000%; - background-size: 1000% 1000%; - -webkit-box-shadow: 2px 2px 4px rgba(0, 0, 0, 0.4); - box-shadow: 2px 2px 4px rgba(0, 0, 0, 0.4); -} -.btn { - text-transform: uppercase; - border: none; - -webkit-box-shadow: 1px 1px 4px rgba(0, 0, 0, 0.4); - box-shadow: 1px 1px 4px rgba(0, 0, 0, 0.4); - -webkit-transition: all 0.4s; - -o-transition: all 0.4s; - transition: all 0.4s; -} -.btn-link { - border-radius: 3px; - -webkit-box-shadow: none; - box-shadow: none; - color: #444444; -} -.btn-link:hover, -.btn-link:focus { - -webkit-box-shadow: none; - box-shadow: none; - color: #444444; - text-decoration: none; -} -.btn-default.disabled { - background-color: rgba(0, 0, 0, 0.1); - color: rgba(0, 0, 0, 0.4); - opacity: 1; -} -.btn-group .btn + .btn, -.btn-group .btn + .btn-group, -.btn-group .btn-group + .btn, -.btn-group .btn-group + .btn-group { - margin-left: 0; -} -.btn-group-vertical > .btn + .btn, -.btn-group-vertical > .btn + .btn-group, -.btn-group-vertical > .btn-group + .btn, -.btn-group-vertical > .btn-group + .btn-group { - margin-top: 0; -} -body { - -webkit-font-smoothing: antialiased; - letter-spacing: .1px; -} -p { - margin: 0 0 1em; -} -input, -button { - -webkit-font-smoothing: antialiased; - letter-spacing: .1px; -} -a { - -webkit-transition: all 0.2s; - -o-transition: all 0.2s; - transition: all 0.2s; -} -.table-hover > tbody > tr, -.table-hover > tbody > tr > th, -.table-hover > tbody > tr > td { - -webkit-transition: all 0.2s; - -o-transition: all 0.2s; - transition: all 0.2s; -} -label { - font-weight: normal; -} -textarea, -textarea.form-control, -input.form-control, -input[type=text], -input[type=password], -input[type=email], -input[type=number], -[type=text].form-control, -[type=password].form-control, -[type=email].form-control, -[type=tel].form-control, -[contenteditable].form-control { - padding: 0; - border: none; - border-radius: 0; - -webkit-appearance: none; - -webkit-box-shadow: inset 0 -1px 0 #dddddd; - box-shadow: inset 0 -1px 0 #dddddd; - font-size: 16px; -} -textarea:focus, -textarea.form-control:focus, -input.form-control:focus, -input[type=text]:focus, -input[type=password]:focus, -input[type=email]:focus, -input[type=number]:focus, -[type=text].form-control:focus, -[type=password].form-control:focus, -[type=email].form-control:focus, -[type=tel].form-control:focus, -[contenteditable].form-control:focus { - -webkit-box-shadow: inset 0 -2px 0 #2196f3; - box-shadow: inset 0 -2px 0 #2196f3; -} -textarea[disabled], -textarea.form-control[disabled], -input.form-control[disabled], -input[type=text][disabled], -input[type=password][disabled], -input[type=email][disabled], -input[type=number][disabled], -[type=text].form-control[disabled], -[type=password].form-control[disabled], -[type=email].form-control[disabled], -[type=tel].form-control[disabled], -[contenteditable].form-control[disabled], -textarea[readonly], -textarea.form-control[readonly], -input.form-control[readonly], -input[type=text][readonly], -input[type=password][readonly], -input[type=email][readonly], -input[type=number][readonly], -[type=text].form-control[readonly], -[type=password].form-control[readonly], -[type=email].form-control[readonly], -[type=tel].form-control[readonly], -[contenteditable].form-control[readonly] { - -webkit-box-shadow: none; - box-shadow: none; - border-bottom: 1px dotted #ddd; -} -textarea.input-sm, -textarea.form-control.input-sm, -input.form-control.input-sm, -input[type=text].input-sm, -input[type=password].input-sm, -input[type=email].input-sm, -input[type=number].input-sm, -[type=text].form-control.input-sm, -[type=password].form-control.input-sm, -[type=email].form-control.input-sm, -[type=tel].form-control.input-sm, -[contenteditable].form-control.input-sm { - font-size: 12px; -} -textarea.input-lg, -textarea.form-control.input-lg, -input.form-control.input-lg, -input[type=text].input-lg, -input[type=password].input-lg, -input[type=email].input-lg, -input[type=number].input-lg, -[type=text].form-control.input-lg, -[type=password].form-control.input-lg, -[type=email].form-control.input-lg, -[type=tel].form-control.input-lg, -[contenteditable].form-control.input-lg { - font-size: 17px; -} -select, -select.form-control { - border: 0; - border-radius: 0; - -webkit-appearance: none; - -moz-appearance: none; - appearance: none; - padding-left: 0; - padding-right: 0\9; - background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABoAAAAaCAMAAACelLz8AAAAJ1BMVEVmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmaP/QSjAAAADHRSTlMAAgMJC0uWpKa6wMxMdjkoAAAANUlEQVR4AeXJyQEAERAAsNl7Hf3X6xt0QL6JpZWq30pdvdadme+0PMdzvHm8YThHcT1H7K0BtOMDniZhWOgAAAAASUVORK5CYII=); - -webkit-background-size: 13px 13px; - background-size: 13px; - background-repeat: no-repeat; - background-position: right center; - -webkit-box-shadow: inset 0 -1px 0 #dddddd; - box-shadow: inset 0 -1px 0 #dddddd; - font-size: 16px; - line-height: 1.5; -} -select::-ms-expand, -select.form-control::-ms-expand { - display: none; -} -select.input-sm, -select.form-control.input-sm { - font-size: 12px; -} -select.input-lg, -select.form-control.input-lg { - font-size: 17px; -} -select:focus, -select.form-control:focus { - -webkit-box-shadow: inset 0 -2px 0 #2196f3; - box-shadow: inset 0 -2px 0 #2196f3; - background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABoAAAAaCAMAAACelLz8AAAAJ1BMVEUhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISF8S9ewAAAADHRSTlMAAgMJC0uWpKa6wMxMdjkoAAAANUlEQVR4AeXJyQEAERAAsNl7Hf3X6xt0QL6JpZWq30pdvdadme+0PMdzvHm8YThHcT1H7K0BtOMDniZhWOgAAAAASUVORK5CYII=); -} -select[multiple], -select.form-control[multiple] { - background: none; -} -.radio label, -.radio-inline label, -.checkbox label, -.checkbox-inline label { - padding-left: 25px; -} -.radio input[type="radio"], -.radio-inline input[type="radio"], -.checkbox input[type="radio"], -.checkbox-inline input[type="radio"], -.radio input[type="checkbox"], -.radio-inline input[type="checkbox"], -.checkbox input[type="checkbox"], -.checkbox-inline input[type="checkbox"] { - margin-left: -25px; -} -input[type="radio"], -.radio input[type="radio"], -.radio-inline input[type="radio"] { - position: relative; - margin-top: 6px; - margin-right: 4px; - vertical-align: top; - border: none; - background-color: transparent; - -webkit-appearance: none; - appearance: none; - cursor: pointer; -} -input[type="radio"]:focus, -.radio input[type="radio"]:focus, -.radio-inline input[type="radio"]:focus { - outline: none; -} -input[type="radio"]:before, -.radio input[type="radio"]:before, -.radio-inline input[type="radio"]:before, -input[type="radio"]:after, -.radio input[type="radio"]:after, -.radio-inline input[type="radio"]:after { - content: ""; - display: block; - width: 18px; - height: 18px; - border-radius: 50%; - -webkit-transition: 240ms; - -o-transition: 240ms; - transition: 240ms; -} -input[type="radio"]:before, -.radio input[type="radio"]:before, -.radio-inline input[type="radio"]:before { - position: absolute; - left: 0; - top: -3px; - background-color: #2196f3; - -webkit-transform: scale(0); - -ms-transform: scale(0); - -o-transform: scale(0); - transform: scale(0); -} -input[type="radio"]:after, -.radio input[type="radio"]:after, -.radio-inline input[type="radio"]:after { - position: relative; - top: -3px; - border: 2px solid #666666; -} -input[type="radio"]:checked:before, -.radio input[type="radio"]:checked:before, -.radio-inline input[type="radio"]:checked:before { - -webkit-transform: scale(0.5); - -ms-transform: scale(0.5); - -o-transform: scale(0.5); - transform: scale(0.5); -} -input[type="radio"]:disabled:checked:before, -.radio input[type="radio"]:disabled:checked:before, -.radio-inline input[type="radio"]:disabled:checked:before { - background-color: #bbbbbb; -} -input[type="radio"]:checked:after, -.radio input[type="radio"]:checked:after, -.radio-inline input[type="radio"]:checked:after { - border-color: #2196f3; -} -input[type="radio"]:disabled:after, -.radio input[type="radio"]:disabled:after, -.radio-inline input[type="radio"]:disabled:after, -input[type="radio"]:disabled:checked:after, -.radio input[type="radio"]:disabled:checked:after, -.radio-inline input[type="radio"]:disabled:checked:after { - border-color: #bbbbbb; -} -input[type="checkbox"], -.checkbox input[type="checkbox"], -.checkbox-inline input[type="checkbox"] { - position: relative; - border: none; - margin-bottom: -4px; - -webkit-appearance: none; - appearance: none; - cursor: pointer; -} -input[type="checkbox"]:focus, -.checkbox input[type="checkbox"]:focus, -.checkbox-inline input[type="checkbox"]:focus { - outline: none; -} -input[type="checkbox"]:focus:after, -.checkbox input[type="checkbox"]:focus:after, -.checkbox-inline input[type="checkbox"]:focus:after { - border-color: #2196f3; -} -input[type="checkbox"]:after, -.checkbox input[type="checkbox"]:after, -.checkbox-inline input[type="checkbox"]:after { - content: ""; - display: block; - width: 18px; - height: 18px; - margin-top: -2px; - margin-right: 5px; - border: 2px solid #666666; - border-radius: 2px; - -webkit-transition: 240ms; - -o-transition: 240ms; - transition: 240ms; -} -input[type="checkbox"]:checked:before, -.checkbox input[type="checkbox"]:checked:before, -.checkbox-inline input[type="checkbox"]:checked:before { - content: ""; - position: absolute; - top: 0; - left: 6px; - display: table; - width: 6px; - height: 12px; - border: 2px solid #fff; - border-top-width: 0; - border-left-width: 0; - -webkit-transform: rotate(45deg); - -ms-transform: rotate(45deg); - -o-transform: rotate(45deg); - transform: rotate(45deg); -} -input[type="checkbox"]:checked:after, -.checkbox input[type="checkbox"]:checked:after, -.checkbox-inline input[type="checkbox"]:checked:after { - background-color: #2196f3; - border-color: #2196f3; -} -input[type="checkbox"]:disabled:after, -.checkbox input[type="checkbox"]:disabled:after, -.checkbox-inline input[type="checkbox"]:disabled:after { - border-color: #bbbbbb; -} -input[type="checkbox"]:disabled:checked:after, -.checkbox input[type="checkbox"]:disabled:checked:after, -.checkbox-inline input[type="checkbox"]:disabled:checked:after { - background-color: #bbbbbb; - border-color: transparent; -} -.has-warning input:not([type=checkbox]), -.has-warning .form-control, -.has-warning input.form-control[readonly], -.has-warning input[type=text][readonly], -.has-warning [type=text].form-control[readonly], -.has-warning input:not([type=checkbox]):focus, -.has-warning .form-control:focus { - border-bottom: none; - -webkit-box-shadow: inset 0 -2px 0 #ff9800; - box-shadow: inset 0 -2px 0 #ff9800; -} -.has-error input:not([type=checkbox]), -.has-error .form-control, -.has-error input.form-control[readonly], -.has-error input[type=text][readonly], -.has-error [type=text].form-control[readonly], -.has-error input:not([type=checkbox]):focus, -.has-error .form-control:focus { - border-bottom: none; - -webkit-box-shadow: inset 0 -2px 0 #e51c23; - box-shadow: inset 0 -2px 0 #e51c23; -} -.has-success input:not([type=checkbox]), -.has-success .form-control, -.has-success input.form-control[readonly], -.has-success input[type=text][readonly], -.has-success [type=text].form-control[readonly], -.has-success input:not([type=checkbox]):focus, -.has-success .form-control:focus { - border-bottom: none; - -webkit-box-shadow: inset 0 -2px 0 #4caf50; - box-shadow: inset 0 -2px 0 #4caf50; -} -.has-warning .input-group-addon, -.has-error .input-group-addon, -.has-success .input-group-addon { - color: #666666; - border-color: transparent; - background-color: transparent; -} -.form-group-lg select, -.form-group-lg select.form-control { - line-height: 1.5; -} -.nav-tabs > li > a, -.nav-tabs > li > a:focus { - margin-right: 0; - background-color: transparent; - border: none; - color: #666666; - -webkit-box-shadow: inset 0 -1px 0 #dddddd; - box-shadow: inset 0 -1px 0 #dddddd; - -webkit-transition: all 0.2s; - -o-transition: all 0.2s; - transition: all 0.2s; -} -.nav-tabs > li > a:hover, -.nav-tabs > li > a:focus:hover { - background-color: transparent; - -webkit-box-shadow: inset 0 -2px 0 #2196f3; - box-shadow: inset 0 -2px 0 #2196f3; - color: #2196f3; -} -.nav-tabs > li.active > a, -.nav-tabs > li.active > a:focus { - border: none; - -webkit-box-shadow: inset 0 -2px 0 #2196f3; - box-shadow: inset 0 -2px 0 #2196f3; - color: #2196f3; -} -.nav-tabs > li.active > a:hover, -.nav-tabs > li.active > a:focus:hover { - border: none; - color: #2196f3; -} -.nav-tabs > li.disabled > a { - -webkit-box-shadow: inset 0 -1px 0 #dddddd; - box-shadow: inset 0 -1px 0 #dddddd; -} -.nav-tabs.nav-justified > li > a, -.nav-tabs.nav-justified > li > a:hover, -.nav-tabs.nav-justified > li > a:focus, -.nav-tabs.nav-justified > .active > a, -.nav-tabs.nav-justified > .active > a:hover, -.nav-tabs.nav-justified > .active > a:focus { - border: none; -} -.nav-tabs .dropdown-menu { - margin-top: 0; -} -.dropdown-menu { - margin-top: 0; - border: none; - -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.3); - box-shadow: 0 1px 4px rgba(0, 0, 0, 0.3); -} -.alert { - border: none; - color: #fff; -} -.alert-success { - background-color: #4caf50; -} -.alert-info { - background-color: #9c27b0; -} -.alert-warning { - background-color: #ff9800; -} -.alert-danger { - background-color: #e51c23; -} -.alert a:not(.close):not(.btn), -.alert .alert-link { - color: #fff; - font-weight: bold; -} -.alert .close { - color: #fff; -} -.badge { - padding: 4px 6px 4px; -} -.progress { - position: relative; - z-index: 1; - height: 6px; - border-radius: 0; - -webkit-box-shadow: none; - box-shadow: none; -} -.progress-bar { - -webkit-box-shadow: none; - box-shadow: none; -} -.progress-bar:last-child { - border-radius: 0 3px 3px 0; -} -.progress-bar:last-child:before { - display: block; - content: ""; - position: absolute; - width: 100%; - height: 100%; - left: 0; - right: 0; - z-index: -1; - background-color: #cae6fc; -} -.progress-bar-success:last-child.progress-bar:before { - background-color: #c7e7c8; -} -.progress-bar-info:last-child.progress-bar:before { - background-color: #edc9f3; -} -.progress-bar-warning:last-child.progress-bar:before { - background-color: #ffe0b3; -} -.progress-bar-danger:last-child.progress-bar:before { - background-color: #f28e92; -} -.close { - font-size: 34px; - font-weight: 300; - line-height: 24px; - opacity: 0.6; - -webkit-transition: all 0.2s; - -o-transition: all 0.2s; - transition: all 0.2s; -} -.close:hover { - opacity: 1; -} -.list-group-item { - padding: 15px; -} -.list-group-item-text { - color: #bbbbbb; -} -.well { - border-radius: 0; - -webkit-box-shadow: none; - box-shadow: none; -} -.panel { - border: none; - border-radius: 2px; - -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.3); - box-shadow: 0 1px 4px rgba(0, 0, 0, 0.3); -} -.panel-heading { - border-bottom: none; -} -.panel-footer { - border-top: none; -} -.popover { - border: none; - -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.3); - box-shadow: 0 1px 4px rgba(0, 0, 0, 0.3); -} -.carousel-caption h1, -.carousel-caption h2, -.carousel-caption h3, -.carousel-caption h4, -.carousel-caption h5, -.carousel-caption h6 { - color: inherit; -} diff --git a/app/index.html b/app/index.html deleted file mode 100644 index 40d91b9..0000000 --- a/app/index.html +++ /dev/null @@ -1,84 +0,0 @@ - - - - - - - - - - Zimit — Create a zim archive out of a website URL - - - - -
-
-
-
-
- - -
-
- - -
-
- - -
-
-
-

- -

-
-

- This is a Zim creator. Enter the url of the website you want ton turn in a zim file, a title and click on Create zim File -

-

Enjoy !

-
- - - - diff --git a/favicon.ico b/favicon.ico deleted file mode 100644 index 6054baeb356ff15e67db84611c321b80074a3097..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9326 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 F{{aRKvM~Sv diff --git a/setup.py b/setup.py deleted file mode 100644 index 442f352..0000000 --- a/setup.py +++ /dev/null @@ -1,33 +0,0 @@ -import os -from setuptools import setup, find_packages - -here = os.path.abspath(os.path.dirname(__file__)) - -with open(os.path.join(here, 'README.rst')) as f: - README = f.read() - - -setup(name='zimit', - version=0.1, - description='zimit', - long_description=README, - classifiers=[ - "Programming Language :: Python", - "Framework :: Pylons", - "Topic :: Internet :: WWW/HTTP", - "Topic :: Internet :: WWW/HTTP :: WSGI :: Application" - ], - keywords="web services", - author='', - author_email='', - url='', - packages=find_packages(), - include_package_data=True, - zip_safe=False, - install_requires=['cornice', 'waitress', 'rq', 'colander', - 'python-slugify', 'pyramid_mailer'], - entry_points="""\ - [paste.app_factory] - main=zimit:main - """, - paster_plugins=['pyramid']) diff --git a/zimit.ini b/zimit.ini deleted file mode 100644 index 5e0089a..0000000 --- a/zimit.ini +++ /dev/null @@ -1,62 +0,0 @@ -[app:main] -use = egg:zimit - -zimit.zimwriterfs_bin = /home/alexis/dev/openzim/zimwriterfs/zimwriterfs -zimit.httrack_bin = /usr/bin/httrack -zimit.output_location = /home/alexis/dev/zimit/zims -zimit.output_url = http://zimit.notmyidea.org/zims - -mail.host = localhost -mail.port = 2525 -mail.default_sender = zimit@notmyidea.org - -pyramid.includes = - pyramid_mailer - -[server:main] -use = egg:waitress#main -host = 0.0.0.0 -port = 6543 - -# Begin logging configuration - -[uwsgi] -wsgi-file = app.wsgi -http-socket = :8000 -enable-threads = true -master = true -processes = 1 -virtualenv = . -module = zimit -lazy = true -lazy-apps = true - - -[loggers] -keys = root, gplayproxy - -[handlers] -keys = console - -[formatters] -keys = generic - -[logger_root] -level = INFO -handlers = console - -[logger_gplayproxy] -level = DEBUG -handlers = -qualname = gplayproxy - -[handler_console] -class = StreamHandler -args = (sys.stderr,) -level = NOTSET -formatter = generic - -[formatter_generic] -format = %(asctime)s %(levelname)-5.5s [%(name)s][%(threadName)s] %(message)s - -# End logging configuration diff --git a/zimit/__init__.py b/zimit/__init__.py deleted file mode 100644 index 9c89766..0000000 --- a/zimit/__init__.py +++ /dev/null @@ -1,25 +0,0 @@ -from pyramid.config import Configurator -from pyramid.events import NewRequest -from pyramid.static import static_view - -from redis import Redis -from rq import Queue - - -def main(global_config, **settings): - config = Configurator(settings=settings) - config.registry.queue = Queue(connection=Redis()) - - def attach_objects_to_request(event): - event.request.queue = config.registry.queue - - config.add_subscriber(attach_objects_to_request, NewRequest) - - config.include("cornice") - config.include('pyramid_mailer') - config.scan("zimit.views") - - static = static_view('../app', use_subpath=True, index='index.html') - config.add_route('catchall_static', '/app/*subpath') - config.add_view(static, route_name="catchall_static") - return config.make_wsgi_app() diff --git a/zimit/creator.py b/zimit/creator.py deleted file mode 100644 index 9646892..0000000 --- a/zimit/creator.py +++ /dev/null @@ -1,146 +0,0 @@ -import os -import os.path -import shutil -import tempfile -import urlparse - -from slugify import slugify - -from zimit import utils - -HTTRACK_BIN = "/usr/bin/httrack" -DEFAULT_AUTHOR = "ZimIt" - - -class ZimCreator(object): - """A synchronous zim creator, using HTTrack to spider websites and - zimwriterfs to create the zim files. - - Please note that every operation is blocking the interpretor. As such, it - is recommended to run this operation in a worker if invoked from a website - view / controller. - """ - - def __init__(self, zimwriterfs_bin, output_location, - author=DEFAULT_AUTHOR, httrack_bin=HTTRACK_BIN, - log_file=None, max_download_speed=25000): - self.output_location = output_location - self.author = author - self.zimwriterfs_bin = zimwriterfs_bin - self.httrack_bin = httrack_bin - self.log_file = log_file - self.max_download_speed = max_download_speed - - utils.ensure_paths_exists( - self.zimwriterfs_bin, - self.httrack_bin, - self.output_location) - - def _spawn(self, cmd): - return utils.spawn(cmd, self.log_file) - - def download_website(self, url, destination_path): - """Downloads the website using HTTrack and wait for the results to - be available before returning. - - :param url: - The entry URL of the website to retrieve. - - :param destination_path: - The absolute location of a folder where the files will be written. - """ - options = { - "path": destination_path, - "max-rate": self.max_download_speed, - "keep-alive": None, - "robots": 0, - "near": None, - } - - self._spawn(utils.get_command(self.httrack_bin, url, **options)) - - def prepare_website_folder(self, url, input_location): - """Prepare the website files to make them ready to be embedded in a zim - file. - - :returns: - the absolute location of the website folder, ready to be embedded. - """ - netloc = urlparse.urlparse(url).netloc.replace(":", "_") - website_folder = os.path.join(input_location, netloc) - if not os.path.isdir(website_folder): - message = "Unable to find the website folder! %s" % website_folder - raise Exception(message) - shutil.copy('./favicon.ico', website_folder) - return website_folder - - def create_zim(self, input_location, output_name, zim_options): - """Create a zim file out of an existing folder on disk. - - :param input_location: - The absolute location of the files to be bundled in the zim file. - :param output_name: - The name to use to create the zim file. - :param options: - Options to pass to the zim creator. - """ - - zim_options.update({ - 'bin': self.zimwriterfs_bin, - 'location': input_location, - 'output': os.path.join(self.output_location, output_name), - 'icon': 'favicon.ico', - 'publisher': self.author, - }) - - # Spawn zimwriterfs with the correct options. - options = ( - '{bin} -w "{welcome}" -l "{language}" -t "{title}"' - ' -d "{description}" -f {icon} -c "{author}"' - ' -p "{publisher}" {location} {output}' - ).format(**zim_options) - self._spawn(options) - return output_name - - def create_zim_from_website(self, url, zim_options): - """Create a zim file from a website. It might take some time. - - The name of the generated zim file is a slugified version of its URL. - - :param url: - the URL of the website to download. - - :param zim_options: - A dictionary of options to use when generating the Zim file. They - are title, language, welcome and description. - - :returns: - the name of the generated zim_file (relative to the output_folder) - """ - temporary_location = tempfile.mkdtemp("zimit") - self.download_website(url, temporary_location) - website_folder = self.prepare_website_folder(url, temporary_location) - output_name = "{slug}.zim".format(slug=slugify(url)) - zim_file = self.create_zim(website_folder, output_name, zim_options) - return zim_file - - -def load_from_settings(settings, log_file=None): - """Load the ZimCreator object from the given pyramid settings, converting - them to actual parameters. - - This is a convenience function for people wanting to create a ZimCreator - out of a ini file compatible with the pyramid framework. - - :param settings: the dictionary of settings. - """ - if 'zimit.zimwriterfs_bin' not in settings: - raise ValueError('Please define zimit.zimwriterfs_bin config.') - - return ZimCreator( - zimwriterfs_bin=settings['zimit.zimwriterfs_bin'], - httrack_bin=settings.get('zimit.httrack_bin'), - output_location=settings.get('zimit.output_location'), - author=settings.get('zimit.default_author'), - log_file=log_file - ) diff --git a/zimit/mailer.py b/zimit/mailer.py deleted file mode 100644 index 4723304..0000000 --- a/zimit/mailer.py +++ /dev/null @@ -1,42 +0,0 @@ -from pyramid_mailer.message import Attachment, Message -from pyramid_mailer import Mailer - - -def send_zim_url(settings, email, zim_url): - """Send an email with a link to one zim file. - - :param settings: - A pyramid settings object, used by pyramid_mailer. - :param email: - The email of the recipient. - :param zim_url: - The URL of the zim file. - """ - mailer = Mailer.from_settings(settings) - msg = ZimReadyMessage(email, zim_url) - mailer.send_immediately(msg) - - -class ZimReadyMessage(Message): - def __init__(self, email, zim_link): - subject = "[ZimIt!] Your zimfile is ready!" - - bdata = """ -Hi, - -You have asked for the creation of a zim file, and it is now ready ! - -You can access it at the following URL: - - {zim_link} - -Cheers, -ZimIt. -""".format(zim_link=zim_link) - hdata = bdata - - body = Attachment(data=bdata, transfer_encoding="quoted-printable") - html = Attachment(data=hdata, transfer_encoding="quoted-printable") - - super(ZimReadyMessage, self).__init__( - subject=subject, body=body, html=html, recipients=[email]) diff --git a/zimit/utils.py b/zimit/utils.py deleted file mode 100644 index b782824..0000000 --- a/zimit/utils.py +++ /dev/null @@ -1,35 +0,0 @@ -import os -import shlex -import subprocess - - -def spawn(cmd, logfile=None): - """Quick shortcut to spawn a command on the filesystem""" - if logfile is not None: - with open(logfile, "a+") as f: - prepared_cmd = shlex.split("stdbuf -o0 %s" % cmd) - process = subprocess.Popen(prepared_cmd, stdout=f) - else: - prepared_cmd = shlex.split(cmd) - process = subprocess.Popen(prepared_cmd) - process.wait() - return process - - -def ensure_paths_exists(*paths): - for path in paths: - if not os.path.exists(path): - msg = '%s does not exist.' % path - raise OSError(msg) - - -def get_command(cmd, *params, **options): - prepared_options = [] - for key, value in options.items(): - if value is None: - opt = "--%s" % key - else: - opt = "--%s=%s" % (key, value) - prepared_options.append(opt) - - return " ".join((cmd, " ".join(params), " ".join(prepared_options))) diff --git a/zimit/views.py b/zimit/views.py deleted file mode 100644 index 034cb05..0000000 --- a/zimit/views.py +++ /dev/null @@ -1,63 +0,0 @@ -import os - -from cornice import Service -from colander import MappingSchema, SchemaNode, String -from pyramid.httpexceptions import HTTPTemporaryRedirect, HTTPNotFound - -from zimit.worker import create_zim - -website = Service(name='website', path='/website-zim') -home = Service(name='home', path='/') -status = Service(name='status', path='/status/{id}') - - -@home.get() -def redirect_to_app(request): - raise HTTPTemporaryRedirect("/app/index.html") - - -class WebSiteSchema(MappingSchema): - url = SchemaNode(String(), location="body", type='str') - title = SchemaNode(String(), location="body", type='str') - email = SchemaNode(String(), location="body", type='str') - description = SchemaNode(String(), default="-", - location="body", type='str') - author = SchemaNode(String(), default=None, - location="body", type='str') - welcome = SchemaNode(String(), default="index.html", - location="body", type='str') - language = SchemaNode(String(), default="eng", - location="body", type='str') - - -@website.post(schema=WebSiteSchema) -def crawl_new_website(request): - job = request.queue.enqueue( - create_zim, - request.registry.settings, - request.validated, - timeout=1800) - request.response.status_code = 201 - return { - 'job_id': job.id - } - - -@status.get() -def display_status(request): - job = request.queue.fetch_job(request.matchdict["id"]) - if job is None: - raise HTTPNotFound() - - log_dir = request.registry.settings.get('zimit.logdir', '/tmp') - log_file = os.path.join(log_dir, "%s.log" % job.id) - - log_content = None - if os.path.exists(log_file): - with open(log_file) as f: - log_content = f.read() - - return { - "status": job.status, - "log": log_content - } diff --git a/zimit/worker.py b/zimit/worker.py deleted file mode 100644 index 6a71cb9..0000000 --- a/zimit/worker.py +++ /dev/null @@ -1,20 +0,0 @@ -import os -import urlparse - -from rq import get_current_job - -from zimit.mailer import send_zim_url -from zimit.creator import load_from_settings - - -def create_zim(settings, options): - """Call the zim creator and the mailer when it is finished. - """ - job = get_current_job() - log_dir = settings.get('zimit.logdir', '/tmp') - log_file = os.path.join(log_dir, "%s.log" % job.id) - zim_creator = load_from_settings(settings, log_file) - zim_file = zim_creator.create_zim_from_website(options['url'], options) - output_url = settings.get('zimit.output_url') - zim_url = urlparse.urljoin(output_url, zim_file) - send_zim_url(settings, options['email'], zim_url) From bdfd9be3992c07e8d49e770300edbe79ece98041 Mon Sep 17 00:00:00 2001 From: rgaudin Date: Tue, 1 Sep 2020 10:22:32 +0200 Subject: [PATCH 003/351] Added LICENSE document --- LICENSE | 674 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 674 insertions(+) create mode 100644 LICENSE diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..f288702 --- /dev/null +++ b/LICENSE @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. From 7346527a8108a0a20b9c64e3b4c97cfb36cd7915 Mon Sep 17 00:00:00 2001 From: Ilya Kreymer Date: Sat, 19 Sep 2020 17:38:52 +0000 Subject: [PATCH 004/351] initial setup - single url capture with existing browser image, pywb, puppeteer and warc2zim --- .gitignore | 2 + Dockerfile | 46 ++++++- config.yaml | 17 +++ index.js | 52 ++++++++ package.json | 11 ++ run.sh | 17 +++ uwsgi.ini | 26 ++++ yarn.lock | 368 +++++++++++++++++++++++++++++++++++++++++++++++++++ 8 files changed, 537 insertions(+), 2 deletions(-) create mode 100644 config.yaml create mode 100644 index.js create mode 100644 package.json create mode 100755 run.sh create mode 100644 uwsgi.ini create mode 100644 yarn.lock diff --git a/.gitignore b/.gitignore index 22e9769..cbbc2e5 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,5 @@ __pycache__ *.zim *.egg-info/ +collections/ +node_modules/ diff --git a/Dockerfile b/Dockerfile index 5ff8c33..2a9360d 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,3 +1,45 @@ -FROM debian:buster-slim +FROM oldwebtoday/chrome:84 as chrome + +FROM nikolaik/python-nodejs + +ENV PROXY_HOST=localhost \ + PROXY_PORT=8080 \ + PROXY_CA_URL=http://wsgiprox/download/pem \ + PROXY_CA_FILE=/tmp/proxy-ca.pem \ + NO_SOCAT=1 + +RUN pip install pywb uwsgi warc2zim + +COPY --from=chrome /opt/google/chrome/ /opt/google/chrome/ + +COPY --from=chrome /app/ /browser/ +COPY --from=chrome /usr/lib/x86_64-linux-gnu/ /usr/lib/x86_64-linux-gnu/ +COPY --from=chrome /lib/x86_64-linux-gnu/libdbus* /lib/x86_64-linux-gnu/ +COPY --from=chrome /usr/bin/run_forever /usr/bin/ +COPY --from=chrome /usr/bin/wget /usr/bin/ +COPY --from=chrome /usr/bin/certutil /usr/bin/ + +RUN ln -s /opt/google/chrome/google-chrome /usr/bin/google-chrome + +RUN useradd zimit --shell /bin/bash --create-home \ + && usermod -a -G sudo zimit \ + && echo 'ALL ALL = (ALL) NOPASSWD: ALL' >> /etc/sudoers \ + && echo 'zimit:secret' | chpasswd + +WORKDIR /app + +ADD index.js /app/ +ADD package.json /app/ + +RUN chown -R zimit /app + +USER zimit + +RUN yarn install + +ADD config.yaml /app/ +ADD uwsgi.ini /app/ +ADD run.sh /app/ + +ENTRYPOINT ["/app/run.sh"] -CMD ["/bin/bash"] diff --git a/config.yaml b/config.yaml new file mode 100644 index 0000000..2250640 --- /dev/null +++ b/config.yaml @@ -0,0 +1,17 @@ +debug: true + +proxy: + coll: capture + recording: true + + enable_banner: false + enable_wombat: true + +recorder: live + +autoindex: 10 + +enable_auto_fetch: true + +collections: + live: $live diff --git a/index.js b/index.js new file mode 100644 index 0000000..e68ffdb --- /dev/null +++ b/index.js @@ -0,0 +1,52 @@ +const puppeteer = require("puppeteer-core"); + +const PAGE_TIMEOUT = 60000; + +async function run() { + const defaultViewport = null; + const browserURL = `http://localhost:9222`; + let browser = null; + + console.log("waiting for browser..."); + + while (!browser) { + try { + browser = await puppeteer.connect({browserURL, defaultViewport}); + } catch (e) { + //console.log(e); + await new Promise((resolve) => setTimeout(resolve, 500)); + } + } + + console.log("connected!"); + + const pages = await browser.pages(); + + const page = pages.length ? pages[0] : await browser.newPage(); + + console.log(process.argv); + const url = process.argv.length > 2 ? process.argv[2] : ""; + + if (!url) { + throw "No URL specified, exiting"; + } + + await page.goto(url, {"waitUntil": "networkidle0", "timeout": PAGE_TIMEOUT}); + + console.log("loaded!"); +} + + +async function main() { + try { + await run(); + process.exit(0); + } catch(e) { + console.log(e); + process.exit(1); + } +} + +main(); + + diff --git a/package.json b/package.json new file mode 100644 index 0000000..1f4226d --- /dev/null +++ b/package.json @@ -0,0 +1,11 @@ +{ + "name": "zimit", + "version": "1.0.0", + "main": "index.js", + "repository": "https://github.com/openzim/zimit", + "author": "Ilya Kreymer ", + "license": "MIT", + "dependencies": { + "puppeteer-core": "^5.3.0" + } +} diff --git a/run.sh b/run.sh new file mode 100755 index 0000000..f15e6d6 --- /dev/null +++ b/run.sh @@ -0,0 +1,17 @@ +#!/bin/bash +URL="$1" + +wb-manager init capture +uwsgi uwsgi.ini & + +/browser/browser_entrypoint.sh /browser/run.sh & + +node index.js "$URL" + +NAME=${NAME:=zimfile} + +stat /output + +warc2zim --url $URL --name $NAME --output=/output ./collections/capture/archive/*.warc.gz + + diff --git a/uwsgi.ini b/uwsgi.ini new file mode 100644 index 0000000..f415aa3 --- /dev/null +++ b/uwsgi.ini @@ -0,0 +1,26 @@ +[uwsgi] +if-not-env = PORT +http-socket = :8080 +socket = :8081 +endif = + +master = true +buffer-size = 65536 +die-on-term = true + +if-env = VIRTUAL_ENV +venv = $(VIRTUAL_ENV) +endif = + +gevent = 100 + +#Not available until uwsgi 2.1 +#monkey-patching manually in pywb.apps.wayback +#gevent-early-monkey-patch = +# for uwsgi<2.1, set env when using gevent +env = GEVENT_MONKEY_PATCH=1 + +# specify config file here +env = PYWB_CONFIG_FILE=config.yaml +wsgi = pywb.apps.wayback + diff --git a/yarn.lock b/yarn.lock new file mode 100644 index 0000000..f0f888d --- /dev/null +++ b/yarn.lock @@ -0,0 +1,368 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@types/node@*": + version "14.11.1" + resolved "https://registry.yarnpkg.com/@types/node/-/node-14.11.1.tgz#56af902ad157e763f9ba63d671c39cda3193c835" + integrity sha512-oTQgnd0hblfLsJ6BvJzzSL+Inogp3lq9fGgqRkMB/ziKMgEUaFl801OncOzUmalfzt14N0oPHMK47ipl+wbTIw== + +"@types/yauzl@^2.9.1": + version "2.9.1" + resolved "https://registry.yarnpkg.com/@types/yauzl/-/yauzl-2.9.1.tgz#d10f69f9f522eef3cf98e30afb684a1e1ec923af" + integrity sha512-A1b8SU4D10uoPjwb0lnHmmu8wZhR9d+9o2PKBQT2jU5YPTKsxac6M2qGAdY7VcL+dHHhARVUDmeg0rOrcd9EjA== + dependencies: + "@types/node" "*" + +agent-base@5: + version "5.1.1" + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-5.1.1.tgz#e8fb3f242959db44d63be665db7a8e739537a32c" + integrity sha512-TMeqbNl2fMW0nMjTEPOwe3J/PRFP4vqeoNuQMG0HlMrtm5QxKqdvAkZ1pRBQ/ulIyDD5Yq0nJ7YbdD8ey0TO3g== + +balanced-match@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" + integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= + +base64-js@^1.0.2: + version "1.3.1" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.1.tgz#58ece8cb75dd07e71ed08c736abc5fac4dbf8df1" + integrity sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g== + +bl@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/bl/-/bl-4.0.3.tgz#12d6287adc29080e22a705e5764b2a9522cdc489" + integrity sha512-fs4G6/Hu4/EE+F75J8DuN/0IpQqNjAdC7aEQv7Qt8MHGUH7Ckv2MwTEEeN9QehD0pfIDkMI1bkHYkKy7xHyKIg== + dependencies: + buffer "^5.5.0" + inherits "^2.0.4" + readable-stream "^3.4.0" + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +buffer-crc32@~0.2.3: + version "0.2.13" + resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" + integrity sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI= + +buffer@^5.2.1, buffer@^5.5.0: + version "5.6.0" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.6.0.tgz#a31749dc7d81d84db08abf937b6b8c4033f62786" + integrity sha512-/gDYp/UtU0eA1ys8bOs9J6a+E/KWIY+DZ+Q2WESNUA0jFRsJOc0SNUO6xJ5SGA1xueg3NL65W6s+NY5l9cunuw== + dependencies: + base64-js "^1.0.2" + ieee754 "^1.1.4" + +chownr@^1.1.1: + version "1.1.4" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" + integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= + +debug@4, debug@^4.1.0, debug@^4.1.1: + version "4.2.0" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.2.0.tgz#7f150f93920e94c58f5574c2fd01a3110effe7f1" + integrity sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg== + dependencies: + ms "2.1.2" + +devtools-protocol@0.0.799653: + version "0.0.799653" + resolved "https://registry.yarnpkg.com/devtools-protocol/-/devtools-protocol-0.0.799653.tgz#86fc95ce5bf4fdf4b77a58047ba9d2301078f119" + integrity sha512-t1CcaZbvm8pOlikqrsIM9GOa7Ipp07+4h/q9u0JXBWjPCjHdBl9KkddX87Vv9vBHoBGtwV79sYQNGnQM6iS5gg== + +end-of-stream@^1.1.0, end-of-stream@^1.4.1: + version "1.4.4" + resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" + integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== + dependencies: + once "^1.4.0" + +extract-zip@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/extract-zip/-/extract-zip-2.0.1.tgz#663dca56fe46df890d5f131ef4a06d22bb8ba13a" + integrity sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg== + dependencies: + debug "^4.1.1" + get-stream "^5.1.0" + yauzl "^2.10.0" + optionalDependencies: + "@types/yauzl" "^2.9.1" + +fd-slicer@~1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.1.0.tgz#25c7c89cb1f9077f8891bbe61d8f390eae256f1e" + integrity sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4= + dependencies: + pend "~1.2.0" + +find-up@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" + integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== + dependencies: + locate-path "^5.0.0" + path-exists "^4.0.0" + +fs-constants@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" + integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= + +get-stream@^5.1.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" + integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== + dependencies: + pump "^3.0.0" + +glob@^7.1.3: + version "7.1.6" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" + integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + +https-proxy-agent@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-4.0.0.tgz#702b71fb5520a132a66de1f67541d9e62154d82b" + integrity sha512-zoDhWrkR3of1l9QAL8/scJZyLu8j/gBkcwcaQOZh7Gyh/+uJQzGVETdgT30akuwkpL8HTRfssqI3BZuV18teDg== + dependencies: + agent-base "5" + debug "4" + +ieee754@^1.1.4: + version "1.1.13" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.13.tgz#ec168558e95aa181fd87d37f55c32bbcb6708b84" + integrity sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg== + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@^2.0.3, inherits@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +locate-path@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" + integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== + dependencies: + p-locate "^4.1.0" + +mime@^2.0.3: + version "2.4.6" + resolved "https://registry.yarnpkg.com/mime/-/mime-2.4.6.tgz#e5b407c90db442f2beb5b162373d07b69affa4d1" + integrity sha512-RZKhC3EmpBchfTGBVb8fb+RL2cWyw/32lshnsETttkBAyAUXSGHxbEJWWRXc751DrIxG1q04b8QwMbAwkRPpUA== + +minimatch@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" + integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== + dependencies: + brace-expansion "^1.1.7" + +mkdirp-classic@^0.5.2: + version "0.5.3" + resolved "https://registry.yarnpkg.com/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz#fa10c9115cc6d8865be221ba47ee9bed78601113" + integrity sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A== + +ms@2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + +once@^1.3.0, once@^1.3.1, once@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= + dependencies: + wrappy "1" + +p-limit@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" + integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== + dependencies: + p-try "^2.0.0" + +p-locate@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" + integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== + dependencies: + p-limit "^2.2.0" + +p-try@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" + integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== + +path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= + +pend@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" + integrity sha1-elfrVQpng/kRUzH89GY9XI4AelA= + +pkg-dir@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" + integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== + dependencies: + find-up "^4.0.0" + +progress@^2.0.1: + version "2.0.3" + resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" + integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== + +proxy-from-env@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" + integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== + +pump@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" + integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + +puppeteer-core@^5.3.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/puppeteer-core/-/puppeteer-core-5.3.0.tgz#36d2e10132632c9cb73007f3f2880f4e6b655977" + integrity sha512-+4wk+0dcDNg7AQqN41Q9r41U6iltAtknuVBI0aj0O/Vp8/4orgbFV0wn55wV5xRae//CucLPUnaczxZx7dz0UA== + dependencies: + debug "^4.1.0" + devtools-protocol "0.0.799653" + extract-zip "^2.0.0" + https-proxy-agent "^4.0.0" + mime "^2.0.3" + pkg-dir "^4.2.0" + progress "^2.0.1" + proxy-from-env "^1.0.0" + rimraf "^3.0.2" + tar-fs "^2.0.0" + unbzip2-stream "^1.3.3" + ws "^7.2.3" + +readable-stream@^3.1.1, readable-stream@^3.4.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" + integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + +rimraf@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" + integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== + dependencies: + glob "^7.1.3" + +safe-buffer@~5.2.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + +string_decoder@^1.1.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.0" + +tar-fs@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-2.1.0.tgz#d1cdd121ab465ee0eb9ccde2d35049d3f3daf0d5" + integrity sha512-9uW5iDvrIMCVpvasdFHW0wJPez0K4JnMZtsuIeDI7HyMGJNxmDZDOCQROr7lXyS+iL/QMpj07qcjGYTSdRFXUg== + dependencies: + chownr "^1.1.1" + mkdirp-classic "^0.5.2" + pump "^3.0.0" + tar-stream "^2.0.0" + +tar-stream@^2.0.0: + version "2.1.4" + resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-2.1.4.tgz#c4fb1a11eb0da29b893a5b25476397ba2d053bfa" + integrity sha512-o3pS2zlG4gxr67GmFYBLlq+dM8gyRGUOvsrHclSkvtVtQbjV0s/+ZE8OpICbaj8clrX3tjeHngYGP7rweaBnuw== + dependencies: + bl "^4.0.3" + end-of-stream "^1.4.1" + fs-constants "^1.0.0" + inherits "^2.0.3" + readable-stream "^3.1.1" + +through@^2.3.8: + version "2.3.8" + resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" + integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= + +unbzip2-stream@^1.3.3: + version "1.4.3" + resolved "https://registry.yarnpkg.com/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz#b0da04c4371311df771cdc215e87f2130991ace7" + integrity sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg== + dependencies: + buffer "^5.2.1" + through "^2.3.8" + +util-deprecate@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= + +ws@^7.2.3: + version "7.3.1" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.3.1.tgz#d0547bf67f7ce4f12a72dfe31262c68d7dc551c8" + integrity sha512-D3RuNkynyHmEJIpD2qrgVkc9DQ23OrN/moAwZX4L8DfvszsJxpjQuUq3LMx6HoYji9fbIOBY18XWBsAux1ZZUA== + +yauzl@^2.10.0: + version "2.10.0" + resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9" + integrity sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk= + dependencies: + buffer-crc32 "~0.2.3" + fd-slicer "~1.1.0" From 1de577bd78a14b125f81568da27799a76433a547 Mon Sep 17 00:00:00 2001 From: Ilya Kreymer Date: Sat, 19 Sep 2020 22:19:20 +0000 Subject: [PATCH 005/351] use puppeteeer-cluster for parallel crawling use yargs to parse command-line args --- README.md | 37 ++++++++++++++-- index.js | 85 +++++++++++++++++++++++++----------- package.json | 4 +- run.sh | 20 +++++++-- yarn.lock | 119 +++++++++++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 232 insertions(+), 33 deletions(-) diff --git a/README.md b/README.md index 9122bc7..1aa0fbe 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,40 @@ zimit -=== +===== -Create ZIM files out of HTTP websites +This version of Zimit runs a single-site headless-Chrome based crawl in a Docker container and produces a ZIM of the crawled content. -# Previous version +The system uses: + - `oldwebtoday/chrome` - to install a recent version of Chrome 84 + - `puppeteer-cluster` - for running Chrome browsers in parallel + - `pywb` - in recording mode for capturing the content + - `warc2zim` - to convert the crawled WARC files into a ZIM + +The driver in `index.js` crawls a given URL using puppeteer-cluster. + +After the crawl is done, warc2zim is used to write a zim to the `/output` directory, which can be mounted as a volume. + +## Usage + +`zimit` is intended to be run in Docker. + +The following is an example usage. The `--cap-add` and `--shm-size` flags are needed for Chrome. + +The image accepts the following parameters: + +- "" - the url to be crawled (required) +- `--workers N` - number of crawl workers to be run in parallel +- `--wait-until` - Puppeteer setting for how long to wait for page load. See [page.goto waitUntil options](https://github.com/puppeteer/puppeteer/blob/main/docs/api.md#pagegotourl-options). The default is `load`, but for static sites, `--wait-until domcontentloaded` may be used to speed up the crawl (to avoid waiting for ads to load for example). + + +Example command: + +``` +docker run -d -e NAME=myzimfile -v /output:/output --cap-add=SYS_ADMIN --cap-add=NET_ADMIN --shm-size=1gb openzim/zimit "" --workers 2 --wait-until domcontentloaded +``` + +
+ +## Previous version A first version of a generic HTTP scraper was created in 2016 during the [Wikimania Esino Lario Hackathon](https://wikimania2016.wikimedia.org/wiki/Programme/Kiwix-dedicated_Hackathon). diff --git a/index.js b/index.js index e68ffdb..305c7e0 100644 --- a/index.js +++ b/index.js @@ -1,45 +1,80 @@ const puppeteer = require("puppeteer-core"); +const { Cluster } = require("puppeteer-cluster"); -const PAGE_TIMEOUT = 60000; +async function run(params) { + const args = [ + "--no-first-run", + "--no-xshm", + `--proxy-server=http://${process.env.PROXY_HOST}:${process.env.PROXY_PORT}` + ]; -async function run() { - const defaultViewport = null; - const browserURL = `http://localhost:9222`; - let browser = null; + const puppeteerOptions = { + headless: true, + executablePath: "/usr/bin/google-chrome", + ignoreHTTPSErrors: true, + args + }; - console.log("waiting for browser..."); + const cluster = await Cluster.launch({ + concurrency: Cluster.CONCURRENCY_PAGE, + maxConcurrency: Number(params.workers) || 1, + skipDuplicateUrls: true, + puppeteerOptions, + puppeteer, + monitor: true + }); + + let seenList = new Set(); + const url = params._[0]; + + let { waitUntil, timeout, scope } = params; + waitUntil = waitUntil || "load"; + timeout = timeout || 60000; + scope = scope || new URL(url).origin + "/"; + + cluster.task(async ({page, data}) => { + const {url} = data; - while (!browser) { try { - browser = await puppeteer.connect({browserURL, defaultViewport}); + await page.goto(url, {waitUntil, timeout}); } catch (e) { - //console.log(e); - await new Promise((resolve) => setTimeout(resolve, 500)); + console.log(`Load timeout for ${url}`); } - } - console.log("connected!"); + try{ + const result = await page.evaluate(() => { + return [...document.querySelectorAll('a[href]')].map(el => ({ url: el.href})) + }); - const pages = await browser.pages(); - - const page = pages.length ? pages[0] : await browser.newPage(); + for (data of result) { + if (seenList.has(data.url)) { + continue; + } + //console.log(`check ${data.url} in ${allowedDomain}`); + if (scope && data.url.startsWith(scope)) { + seenList.add(data.url); + cluster.queue({url: data.url}); + } + } + } catch (e) { + console.warn("error"); + console.warn(e); + } + }); - console.log(process.argv); - const url = process.argv.length > 2 ? process.argv[2] : ""; + cluster.queue({url}); - if (!url) { - throw "No URL specified, exiting"; - } - - await page.goto(url, {"waitUntil": "networkidle0", "timeout": PAGE_TIMEOUT}); - - console.log("loaded!"); + await cluster.idle(); + await cluster.close(); } async function main() { + const params = require('yargs').argv; + console.log(params); + try { - await run(); + await run(params); process.exit(0); } catch(e) { console.log(e); diff --git a/package.json b/package.json index 1f4226d..93e01f5 100644 --- a/package.json +++ b/package.json @@ -6,6 +6,8 @@ "author": "Ilya Kreymer ", "license": "MIT", "dependencies": { - "puppeteer-core": "^5.3.0" + "puppeteer-cluster": "^0.22.0", + "puppeteer-core": "^5.3.0", + "yargs": "^16.0.3" } } diff --git a/run.sh b/run.sh index f15e6d6..e47d0ea 100755 --- a/run.sh +++ b/run.sh @@ -2,15 +2,27 @@ URL="$1" wb-manager init capture -uwsgi uwsgi.ini & +uwsgi uwsgi.ini &> /dev/null & -/browser/browser_entrypoint.sh /browser/run.sh & +#/browser/browser_entrypoint.sh /browser/run.sh & +#if [[ -n "$PROXY_CA_FILE" && -f "$PROXY_CA_FILE" && -n "$PROXY_HOST" ]]; then +# rm -rf "$HOME/.pki/nssdb" +# mkdir -p "$HOME/.pki/nssdb" +# certutil -d "$HOME/.pki/nssdb" -N +# certutil -d "sql:$HOME/.pki/nssdb" -A -t "C,," -n "Proxy" -i "$PROXY_CA_FILE" +# rm "$PROXY_CA_FILE" +#fi -node index.js "$URL" +#mkdir ~/.config/ +#mkdir ~/.config/google-chrome +#touch ~/.config/google-chrome/First\ Run + +export QT_X11_NO_MITSHM=1 + +node index.js "$@" NAME=${NAME:=zimfile} -stat /output warc2zim --url $URL --name $NAME --output=/output ./collections/capture/archive/*.warc.gz diff --git a/yarn.lock b/yarn.lock index f0f888d..039a6f7 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,6 +2,11 @@ # yarn lockfile v1 +"@types/color-name@^1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0" + integrity sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ== + "@types/node@*": version "14.11.1" resolved "https://registry.yarnpkg.com/@types/node/-/node-14.11.1.tgz#56af902ad157e763f9ba63d671c39cda3193c835" @@ -19,6 +24,19 @@ agent-base@5: resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-5.1.1.tgz#e8fb3f242959db44d63be665db7a8e739537a32c" integrity sha512-TMeqbNl2fMW0nMjTEPOwe3J/PRFP4vqeoNuQMG0HlMrtm5QxKqdvAkZ1pRBQ/ulIyDD5Yq0nJ7YbdD8ey0TO3g== +ansi-regex@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" + integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== + +ansi-styles@^4.0.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.2.1.tgz#90ae75c424d008d2624c5bf29ead3177ebfcf359" + integrity sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA== + dependencies: + "@types/color-name" "^1.1.1" + color-convert "^2.0.1" + balanced-match@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" @@ -64,6 +82,27 @@ chownr@^1.1.1: resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== +cliui@^7.0.0: + version "7.0.1" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.1.tgz#a4cb67aad45cd83d8d05128fc9f4d8fbb887e6b3" + integrity sha512-rcvHOWyGyid6I1WjT/3NatKj2kDt9OdSHSXpyLXaMWFbKpGACNW8pRhhdPUq9MWUOdwn8Rz9AVETjF4105rZZQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.0" + wrap-ansi "^7.0.0" + +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + +color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" @@ -81,6 +120,11 @@ devtools-protocol@0.0.799653: resolved "https://registry.yarnpkg.com/devtools-protocol/-/devtools-protocol-0.0.799653.tgz#86fc95ce5bf4fdf4b77a58047ba9d2301078f119" integrity sha512-t1CcaZbvm8pOlikqrsIM9GOa7Ipp07+4h/q9u0JXBWjPCjHdBl9KkddX87Vv9vBHoBGtwV79sYQNGnQM6iS5gg== +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + end-of-stream@^1.1.0, end-of-stream@^1.4.1: version "1.4.4" resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" @@ -88,6 +132,11 @@ end-of-stream@^1.1.0, end-of-stream@^1.4.1: dependencies: once "^1.4.0" +escalade@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.0.tgz#e8e2d7c7a8b76f6ee64c2181d6b8151441602d4e" + integrity sha512-mAk+hPSO8fLDkhV7V0dXazH5pDc6MrjBTPyD3VeKzxnVFjH1MIxbCdqGZB9O8+EwWakZs3ZCbDS4IpRt79V1ig== + extract-zip@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/extract-zip/-/extract-zip-2.0.1.tgz#663dca56fe46df890d5f131ef4a06d22bb8ba13a" @@ -124,6 +173,11 @@ fs.realpath@^1.0.0: resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= +get-caller-file@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== + get-stream@^5.1.0: version "5.2.0" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" @@ -169,6 +223,11 @@ inherits@2, inherits@^2.0.3, inherits@^2.0.4: resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + locate-path@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" @@ -264,6 +323,13 @@ pump@^3.0.0: end-of-stream "^1.1.0" once "^1.3.1" +puppeteer-cluster@^0.22.0: + version "0.22.0" + resolved "https://registry.yarnpkg.com/puppeteer-cluster/-/puppeteer-cluster-0.22.0.tgz#4ab214671f414f15ad6a94a4b61ed0b4172e86e6" + integrity sha512-hmydtMwfVM+idFIDzS8OXetnujHGre7RY3BGL+3njy9+r8Dcu3VALkZHfuBEPf6byKssTCgzxU1BvLczifXd5w== + dependencies: + debug "^4.1.1" + puppeteer-core@^5.3.0: version "5.3.0" resolved "https://registry.yarnpkg.com/puppeteer-core/-/puppeteer-core-5.3.0.tgz#36d2e10132632c9cb73007f3f2880f4e6b655977" @@ -291,6 +357,11 @@ readable-stream@^3.1.1, readable-stream@^3.4.0: string_decoder "^1.1.1" util-deprecate "^1.0.1" +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= + rimraf@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" @@ -303,6 +374,15 @@ safe-buffer@~5.2.0: resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== +string-width@^4.1.0, string-width@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.0.tgz#952182c46cc7b2c313d1596e623992bd163b72b5" + integrity sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.0" + string_decoder@^1.1.1: version "1.3.0" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" @@ -310,6 +390,13 @@ string_decoder@^1.1.1: dependencies: safe-buffer "~5.2.0" +strip-ansi@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" + integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== + dependencies: + ansi-regex "^5.0.0" + tar-fs@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-2.1.0.tgz#d1cdd121ab465ee0eb9ccde2d35049d3f3daf0d5" @@ -349,6 +436,15 @@ util-deprecate@^1.0.1: resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= +wrap-ansi@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + wrappy@1: version "1.0.2" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" @@ -359,6 +455,29 @@ ws@^7.2.3: resolved "https://registry.yarnpkg.com/ws/-/ws-7.3.1.tgz#d0547bf67f7ce4f12a72dfe31262c68d7dc551c8" integrity sha512-D3RuNkynyHmEJIpD2qrgVkc9DQ23OrN/moAwZX4L8DfvszsJxpjQuUq3LMx6HoYji9fbIOBY18XWBsAux1ZZUA== +y18n@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.1.tgz#1ad2a7eddfa8bce7caa2e1f6b5da96c39d99d571" + integrity sha512-/jJ831jEs4vGDbYPQp4yGKDYPSCCEQ45uZWJHE1AoYBzqdZi8+LDWas0z4HrmJXmKdpFsTiowSHXdxyFhpmdMg== + +yargs-parser@^20.0.0: + version "20.0.0" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.0.0.tgz#c65a1daaa977ad63cebdd52159147b789a4e19a9" + integrity sha512-8eblPHTL7ZWRkyjIZJjnGf+TijiKJSwA24svzLRVvtgoi/RZiKa9fFQTrlx0OKLnyHSdt/enrdadji6WFfESVA== + +yargs@^16.0.3: + version "16.0.3" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.0.3.tgz#7a919b9e43c90f80d4a142a89795e85399a7e54c" + integrity sha512-6+nLw8xa9uK1BOEOykaiYAJVh6/CjxWXK/q9b5FpRgNslt8s22F2xMBqVIKgCRjNgGvGPBy8Vog7WN7yh4amtA== + dependencies: + cliui "^7.0.0" + escalade "^3.0.2" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.0" + y18n "^5.0.1" + yargs-parser "^20.0.0" + yauzl@^2.10.0: version "2.10.0" resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9" From 4e04645e6b5bf4a75b563c146557523d23c8be31 Mon Sep 17 00:00:00 2001 From: Ilya Kreymer Date: Sat, 19 Sep 2020 22:47:19 +0000 Subject: [PATCH 006/351] move warc2zim to be launched by node process --- README.md | 5 ++++- index.js | 12 ++++++++++++ run.sh | 21 +-------------------- 3 files changed, 17 insertions(+), 21 deletions(-) diff --git a/README.md b/README.md index 1aa0fbe..4c47f89 100644 --- a/README.md +++ b/README.md @@ -24,12 +24,15 @@ The image accepts the following parameters: - "" - the url to be crawled (required) - `--workers N` - number of crawl workers to be run in parallel - `--wait-until` - Puppeteer setting for how long to wait for page load. See [page.goto waitUntil options](https://github.com/puppeteer/puppeteer/blob/main/docs/api.md#pagegotourl-options). The default is `load`, but for static sites, `--wait-until domcontentloaded` may be used to speed up the crawl (to avoid waiting for ads to load for example). +- `--name` - Name of ZIM file (defaults to the hostname of the URL) +- `--output` - output directory (defaults to `/output`) + Example command: ``` -docker run -d -e NAME=myzimfile -v /output:/output --cap-add=SYS_ADMIN --cap-add=NET_ADMIN --shm-size=1gb openzim/zimit "" --workers 2 --wait-until domcontentloaded +docker run -v /output:/output --cap-add=SYS_ADMIN --cap-add=NET_ADMIN --shm-size=1gb openzim/zimit "" --name myzimfile --workers 2 --wait-until domcontentloaded ```
diff --git a/index.js b/index.js index 305c7e0..a49beeb 100644 --- a/index.js +++ b/index.js @@ -1,5 +1,6 @@ const puppeteer = require("puppeteer-core"); const { Cluster } = require("puppeteer-cluster"); +const child_process = require("child_process"); async function run(params) { const args = [ @@ -66,6 +67,17 @@ async function run(params) { await cluster.idle(); await cluster.close(); + + const zimName = params.name || new URL(url).hostname; + const zimOutput = params.output || "/output"; + + const warc2zim = `warc2zim --url ${url} --name ${zimName} --output ${zimOutput} ./collections/capture/archive/\*.warc.gz`; + + console.log("Running: " + warc2zim); + + //await new Promise((resolve) => { + child_process.execSync(warc2zim, {shell: "/bin/bash", stdio: "inherit", stderr: "inherit"}); + //}); } diff --git a/run.sh b/run.sh index e47d0ea..b9bd9fc 100755 --- a/run.sh +++ b/run.sh @@ -4,26 +4,7 @@ URL="$1" wb-manager init capture uwsgi uwsgi.ini &> /dev/null & -#/browser/browser_entrypoint.sh /browser/run.sh & -#if [[ -n "$PROXY_CA_FILE" && -f "$PROXY_CA_FILE" && -n "$PROXY_HOST" ]]; then -# rm -rf "$HOME/.pki/nssdb" -# mkdir -p "$HOME/.pki/nssdb" -# certutil -d "$HOME/.pki/nssdb" -N -# certutil -d "sql:$HOME/.pki/nssdb" -A -t "C,," -n "Proxy" -i "$PROXY_CA_FILE" -# rm "$PROXY_CA_FILE" -#fi - -#mkdir ~/.config/ -#mkdir ~/.config/google-chrome -#touch ~/.config/google-chrome/First\ Run - +# needed for chrome export QT_X11_NO_MITSHM=1 node index.js "$@" - -NAME=${NAME:=zimfile} - - -warc2zim --url $URL --name $NAME --output=/output ./collections/capture/archive/*.warc.gz - - From 9b23de828be02cef592827151a99a36e3654fb9f Mon Sep 17 00:00:00 2001 From: Ilya Kreymer Date: Sat, 19 Sep 2020 15:53:23 -0700 Subject: [PATCH 007/351] Update README.md --- README.md | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 4c47f89..0823579 100644 --- a/README.md +++ b/README.md @@ -17,24 +17,32 @@ After the crawl is done, warc2zim is used to write a zim to the `/output` direct `zimit` is intended to be run in Docker. -The following is an example usage. The `--cap-add` and `--shm-size` flags are needed for Chrome. +To build locally run: + +``` +docker build -t openzim/zimit . +``` The image accepts the following parameters: -- "" - the url to be crawled (required) +- `URL` - the url to be crawled (required) - `--workers N` - number of crawl workers to be run in parallel - `--wait-until` - Puppeteer setting for how long to wait for page load. See [page.goto waitUntil options](https://github.com/puppeteer/puppeteer/blob/main/docs/api.md#pagegotourl-options). The default is `load`, but for static sites, `--wait-until domcontentloaded` may be used to speed up the crawl (to avoid waiting for ads to load for example). - `--name` - Name of ZIM file (defaults to the hostname of the URL) - `--output` - output directory (defaults to `/output`) - +The following is an example usage. The `--cap-add` and `--shm-size` flags are needed to run Chrome in Docker. Example command: ``` -docker run -v /output:/output --cap-add=SYS_ADMIN --cap-add=NET_ADMIN --shm-size=1gb openzim/zimit "" --name myzimfile --workers 2 --wait-until domcontentloaded +docker run -v /output:/output --cap-add=SYS_ADMIN --cap-add=NET_ADMIN --shm-size=1gb openzim/zimit URL --name myzimfile --workers 2 --wait-until domcontentloaded ``` +The puppeteer-cluster provides monitoring output which is enabled by default and prints the crawl status to the Docker log. + + +
## Previous version From ff2773677ca17c76544d44dbe057d23852644e94 Mon Sep 17 00:00:00 2001 From: Ilya Kreymer Date: Sat, 19 Sep 2020 23:18:15 +0000 Subject: [PATCH 008/351] crawling: move checking logic to shouldCrawl, remove hashtag before checking seen list --- index.js | 56 +++++++++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 47 insertions(+), 9 deletions(-) diff --git a/index.js b/index.js index a49beeb..a5a2103 100644 --- a/index.js +++ b/index.js @@ -3,12 +3,13 @@ const { Cluster } = require("puppeteer-cluster"); const child_process = require("child_process"); async function run(params) { + // Chrome Flags, including proxy server const args = [ - "--no-first-run", - "--no-xshm", + "--no-xshm", // needed for Chrome >80 (check if puppeteer adds automatically) `--proxy-server=http://${process.env.PROXY_HOST}:${process.env.PROXY_PORT}` ]; + // Puppeter Options const puppeteerOptions = { headless: true, executablePath: "/usr/bin/google-chrome", @@ -16,6 +17,7 @@ async function run(params) { args }; + // Puppeteer Cluster init and options const cluster = await Cluster.launch({ concurrency: Cluster.CONCURRENCY_PAGE, maxConcurrency: Number(params.workers) || 1, @@ -25,14 +27,22 @@ async function run(params) { monitor: true }); + // Maintain own seen list let seenList = new Set(); const url = params._[0]; let { waitUntil, timeout, scope } = params; + + // waitUntil condition (see: https://github.com/puppeteer/puppeteer/blob/main/docs/api.md#pagegotourl-options) waitUntil = waitUntil || "load"; + + // Timeout per page timeout = timeout || 60000; + + // Scope for crawl, default to the domain of the URL scope = scope || new URL(url).origin + "/"; + // Crawl Task cluster.task(async ({page, data}) => { const {url} = data; @@ -48,13 +58,10 @@ async function run(params) { }); for (data of result) { - if (seenList.has(data.url)) { - continue; - } - //console.log(`check ${data.url} in ${allowedDomain}`); - if (scope && data.url.startsWith(scope)) { - seenList.add(data.url); - cluster.queue({url: data.url}); + const newUrl = shouldCrawl(scope, seenList, data.url); + if (newUrl) { + seenList.add(newUrl); + cluster.queue({url: newUrl}); } } } catch (e) { @@ -81,6 +88,37 @@ async function run(params) { } +function shouldCrawl(scope, seenList, url) { + try { + url = new URL(url); + } catch(e) { + return false; + } + + // remove hashtag + url.hash = ""; + + // only queue http/https URLs + if (url.protocol != "http:" && url.protocol != "https:") { + return false; + } + + url = url.href; + + // skip already crawled + if (seenList.has(url)) { + return false; + } + + // if scope is provided, skip urls not in scope + if (scope && !url.startsWith(scope)) { + return false; + } + + return url; +} + + async function main() { const params = require('yargs').argv; console.log(params); From b00c4262a7af9c88178a1c22a30dd9b0bd0e320f Mon Sep 17 00:00:00 2001 From: Ilya Kreymer Date: Mon, 21 Sep 2020 07:14:23 +0000 Subject: [PATCH 009/351] add --limit param for max URLs to be captured add 'html check', only load HTML in browsers, load other content-types directly via pywb, esp for PDFs (work on #8) improved error handling --- Dockerfile | 4 +-- README.md | 1 + index.js | 87 ++++++++++++++++++++++++++++++++++++++++++++++------ package.json | 2 ++ run.sh | 8 +++-- yarn.lock | 17 ++++++++++ 6 files changed, 105 insertions(+), 14 deletions(-) diff --git a/Dockerfile b/Dockerfile index 2a9360d..af6955c 100644 --- a/Dockerfile +++ b/Dockerfile @@ -28,18 +28,18 @@ RUN useradd zimit --shell /bin/bash --create-home \ WORKDIR /app -ADD index.js /app/ ADD package.json /app/ RUN chown -R zimit /app -USER zimit +#USER zimit RUN yarn install ADD config.yaml /app/ ADD uwsgi.ini /app/ ADD run.sh /app/ +ADD index.js /app/ ENTRYPOINT ["/app/run.sh"] diff --git a/README.md b/README.md index 0823579..5a23eff 100644 --- a/README.md +++ b/README.md @@ -30,6 +30,7 @@ The image accepts the following parameters: - `--wait-until` - Puppeteer setting for how long to wait for page load. See [page.goto waitUntil options](https://github.com/puppeteer/puppeteer/blob/main/docs/api.md#pagegotourl-options). The default is `load`, but for static sites, `--wait-until domcontentloaded` may be used to speed up the crawl (to avoid waiting for ads to load for example). - `--name` - Name of ZIM file (defaults to the hostname of the URL) - `--output` - output directory (defaults to `/output`) +- `--limit U` - Limit capture to at most U URLs The following is an example usage. The `--cap-add` and `--shm-size` flags are needed to run Chrome in Docker. diff --git a/index.js b/index.js index a5a2103..d43eddd 100644 --- a/index.js +++ b/index.js @@ -1,6 +1,11 @@ const puppeteer = require("puppeteer-core"); const { Cluster } = require("puppeteer-cluster"); const child_process = require("child_process"); +const fetch = require("node-fetch"); +const AbortController = require("abort-controller"); + +const HTML_TYPES = ["text/html", "application/xhtml", "application/xhtml+xml"]; + async function run(params) { // Chrome Flags, including proxy server @@ -9,6 +14,9 @@ async function run(params) { `--proxy-server=http://${process.env.PROXY_HOST}:${process.env.PROXY_PORT}` ]; + // prefix for direct capture via pywb + const capturePrefix = `http://${process.env.PROXY_HOST}:${process.env.PROXY_PORT}/capture/record/id_/`; + // Puppeter Options const puppeteerOptions = { headless: true, @@ -19,7 +27,7 @@ async function run(params) { // Puppeteer Cluster init and options const cluster = await Cluster.launch({ - concurrency: Cluster.CONCURRENCY_PAGE, + concurrency: Cluster.CONCURRENCY_CONTEXT, maxConcurrency: Number(params.workers) || 1, skipDuplicateUrls: true, puppeteerOptions, @@ -31,45 +39,68 @@ async function run(params) { let seenList = new Set(); const url = params._[0]; - let { waitUntil, timeout, scope } = params; + let { waitUntil, timeout, scope, limit } = params; // waitUntil condition (see: https://github.com/puppeteer/puppeteer/blob/main/docs/api.md#pagegotourl-options) waitUntil = waitUntil || "load"; // Timeout per page - timeout = timeout || 60000; + timeout = Number(timeout) || 60000; // Scope for crawl, default to the domain of the URL scope = scope || new URL(url).origin + "/"; + // Limit number of pages captured + limit = Number(limit) || 0; + + console.log("Limit: " + limit); + + // links crawled counter + let numLinks = 0; + // Crawl Task cluster.task(async ({page, data}) => { const {url} = data; + if (!await htmlCheck(url, capturePrefix)) { + return; + } + try { await page.goto(url, {waitUntil, timeout}); } catch (e) { console.log(`Load timeout for ${url}`); } - try{ - const result = await page.evaluate(() => { + let results = null; + + try { + results = await page.evaluate(() => { return [...document.querySelectorAll('a[href]')].map(el => ({ url: el.href})) }); + } catch (e) { + console.warn("Link Extraction failed", e); + return; + } - for (data of result) { + try { + for (data of results) { const newUrl = shouldCrawl(scope, seenList, data.url); + if (newUrl) { seenList.add(newUrl); + if (numLinks++ >= limit && limit > 0) { + break; + } cluster.queue({url: newUrl}); } } } catch (e) { - console.warn("error"); - console.warn(e); + console.log("Queuing Error: " + e); } }); + numLinks++; cluster.queue({url}); await cluster.idle(); @@ -118,6 +149,43 @@ function shouldCrawl(scope, seenList, url) { return url; } +async function htmlCheck(url, capturePrefix) { + try { + const resp = await fetch(url, {method: "HEAD"}); + + if (resp.status >= 400) { + console.log(`Skipping ${url}, invalid status ${resp.status}`); + return false; + } + + const contentType = resp.headers.get("Content-Type"); + + // just load if no content-type + if (!contentType) { + return true; + } + + const mime = contentType.split(";")[0]; + + if (HTML_TYPES.includes(mime)) { + return true; + } + + // capture directly + console.log(`Direct capture: ${capturePrefix}${url}`); + const abort = new AbortController(); + const signal = abort.signal; + const resp2 = await fetch(capturePrefix + url, {signal}); + abort.abort(); + + return false; + } catch(e) { + console.log("HTML Check error", e); + // can't confirm not html, so try in browser + return true; + } +} + async function main() { const params = require('yargs').argv; @@ -127,7 +195,8 @@ async function main() { await run(params); process.exit(0); } catch(e) { - console.log(e); + console.error("Crawl failed, ZIM creation skipped"); + console.error(e); process.exit(1); } } diff --git a/package.json b/package.json index 93e01f5..c304660 100644 --- a/package.json +++ b/package.json @@ -6,6 +6,8 @@ "author": "Ilya Kreymer ", "license": "MIT", "dependencies": { + "abort-controller": "^3.0.0", + "node-fetch": "^2.6.1", "puppeteer-cluster": "^0.22.0", "puppeteer-core": "^5.3.0", "yargs": "^16.0.3" diff --git a/run.sh b/run.sh index b9bd9fc..74d0752 100755 --- a/run.sh +++ b/run.sh @@ -1,10 +1,12 @@ #!/bin/bash -URL="$1" - wb-manager init capture uwsgi uwsgi.ini &> /dev/null & # needed for chrome export QT_X11_NO_MITSHM=1 -node index.js "$@" +cmd="$@" + +su zimit -c "node index.js $cmd" + + diff --git a/yarn.lock b/yarn.lock index 039a6f7..d793a9a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -19,6 +19,13 @@ dependencies: "@types/node" "*" +abort-controller@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/abort-controller/-/abort-controller-3.0.0.tgz#eaf54d53b62bae4138e809ca225c8439a6efb392" + integrity sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg== + dependencies: + event-target-shim "^5.0.0" + agent-base@5: version "5.1.1" resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-5.1.1.tgz#e8fb3f242959db44d63be665db7a8e739537a32c" @@ -137,6 +144,11 @@ escalade@^3.0.2: resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.0.tgz#e8e2d7c7a8b76f6ee64c2181d6b8151441602d4e" integrity sha512-mAk+hPSO8fLDkhV7V0dXazH5pDc6MrjBTPyD3VeKzxnVFjH1MIxbCdqGZB9O8+EwWakZs3ZCbDS4IpRt79V1ig== +event-target-shim@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789" + integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ== + extract-zip@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/extract-zip/-/extract-zip-2.0.1.tgz#663dca56fe46df890d5f131ef4a06d22bb8ba13a" @@ -257,6 +269,11 @@ ms@2.1.2: resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== +node-fetch@^2.6.1: + version "2.6.1" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.1.tgz#045bd323631f76ed2e2b55573394416b639a0052" + integrity sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw== + once@^1.3.0, once@^1.3.1, once@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" From f2522459833249076edb77292db1ef7979f6cb1d Mon Sep 17 00:00:00 2001 From: Ilya Kreymer Date: Tue, 22 Sep 2020 06:09:33 +0000 Subject: [PATCH 010/351] try using regular puppeteer, only copy deps from chrome image pywb: increase uwsgi processes, disable autoindex/autofetch for better perf --- Dockerfile | 12 ++++++------ config.yaml | 4 ++-- index.js | 6 +++--- package.json | 2 +- uwsgi.ini | 3 ++- yarn.lock | 6 +++--- 6 files changed, 17 insertions(+), 16 deletions(-) diff --git a/Dockerfile b/Dockerfile index af6955c..d51dfb6 100644 --- a/Dockerfile +++ b/Dockerfile @@ -10,16 +10,16 @@ ENV PROXY_HOST=localhost \ RUN pip install pywb uwsgi warc2zim -COPY --from=chrome /opt/google/chrome/ /opt/google/chrome/ +#COPY --from=chrome /opt/google/chrome/ /opt/google/chrome/ -COPY --from=chrome /app/ /browser/ +#COPY --from=chrome /app/ /browser/ COPY --from=chrome /usr/lib/x86_64-linux-gnu/ /usr/lib/x86_64-linux-gnu/ COPY --from=chrome /lib/x86_64-linux-gnu/libdbus* /lib/x86_64-linux-gnu/ -COPY --from=chrome /usr/bin/run_forever /usr/bin/ -COPY --from=chrome /usr/bin/wget /usr/bin/ -COPY --from=chrome /usr/bin/certutil /usr/bin/ +#COPY --from=chrome /usr/bin/run_forever /usr/bin/ +#COPY --from=chrome /usr/bin/wget /usr/bin/ +#COPY --from=chrome /usr/bin/certutil /usr/bin/ -RUN ln -s /opt/google/chrome/google-chrome /usr/bin/google-chrome +#RUN ln -s /opt/google/chrome/google-chrome /usr/bin/google-chrome RUN useradd zimit --shell /bin/bash --create-home \ && usermod -a -G sudo zimit \ diff --git a/config.yaml b/config.yaml index 2250640..a072f5a 100644 --- a/config.yaml +++ b/config.yaml @@ -9,9 +9,9 @@ proxy: recorder: live -autoindex: 10 +#autoindex: 10 -enable_auto_fetch: true +#enable_auto_fetch: true collections: live: $live diff --git a/index.js b/index.js index d43eddd..812f6ae 100644 --- a/index.js +++ b/index.js @@ -1,4 +1,4 @@ -const puppeteer = require("puppeteer-core"); +const puppeteer = require("puppeteer"); const { Cluster } = require("puppeteer-cluster"); const child_process = require("child_process"); const fetch = require("node-fetch"); @@ -20,14 +20,14 @@ async function run(params) { // Puppeter Options const puppeteerOptions = { headless: true, - executablePath: "/usr/bin/google-chrome", + //executablePath: "/usr/bin/google-chrome", ignoreHTTPSErrors: true, args }; // Puppeteer Cluster init and options const cluster = await Cluster.launch({ - concurrency: Cluster.CONCURRENCY_CONTEXT, + concurrency: Cluster.CONCURRENCY_PAGE, maxConcurrency: Number(params.workers) || 1, skipDuplicateUrls: true, puppeteerOptions, diff --git a/package.json b/package.json index c304660..47efcbb 100644 --- a/package.json +++ b/package.json @@ -8,8 +8,8 @@ "dependencies": { "abort-controller": "^3.0.0", "node-fetch": "^2.6.1", + "puppeteer": "^5.3.0", "puppeteer-cluster": "^0.22.0", - "puppeteer-core": "^5.3.0", "yargs": "^16.0.3" } } diff --git a/uwsgi.ini b/uwsgi.ini index f415aa3..1ded14e 100644 --- a/uwsgi.ini +++ b/uwsgi.ini @@ -12,13 +12,14 @@ if-env = VIRTUAL_ENV venv = $(VIRTUAL_ENV) endif = -gevent = 100 +gevent = 200 #Not available until uwsgi 2.1 #monkey-patching manually in pywb.apps.wayback #gevent-early-monkey-patch = # for uwsgi<2.1, set env when using gevent env = GEVENT_MONKEY_PATCH=1 +processes = 8 # specify config file here env = PYWB_CONFIG_FILE=config.yaml diff --git a/yarn.lock b/yarn.lock index d793a9a..458e423 100644 --- a/yarn.lock +++ b/yarn.lock @@ -347,10 +347,10 @@ puppeteer-cluster@^0.22.0: dependencies: debug "^4.1.1" -puppeteer-core@^5.3.0: +puppeteer@^5.3.0: version "5.3.0" - resolved "https://registry.yarnpkg.com/puppeteer-core/-/puppeteer-core-5.3.0.tgz#36d2e10132632c9cb73007f3f2880f4e6b655977" - integrity sha512-+4wk+0dcDNg7AQqN41Q9r41U6iltAtknuVBI0aj0O/Vp8/4orgbFV0wn55wV5xRae//CucLPUnaczxZx7dz0UA== + resolved "https://registry.yarnpkg.com/puppeteer/-/puppeteer-5.3.0.tgz#0abf83d0f2d1273baf2b56885a813f8052903e33" + integrity sha512-GjqMk5GRro3TO0sw3QMsF1H7n+/jaK2OW45qMvqjYUyJ7y4oA//9auy969HHhTG3HZXaMxY/NWXF/NXlAFIvtw== dependencies: debug "^4.1.0" devtools-protocol "0.0.799653" From f25b390f15f4929e41ebad98da4008fd86abab92 Mon Sep 17 00:00:00 2001 From: Ilya Kreymer Date: Tue, 22 Sep 2020 17:48:09 +0000 Subject: [PATCH 011/351] add regex exclusions --- README.md | 1 + index.js | 22 +++++++++++++++++++--- 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 5a23eff..f42d6df 100644 --- a/README.md +++ b/README.md @@ -31,6 +31,7 @@ The image accepts the following parameters: - `--name` - Name of ZIM file (defaults to the hostname of the URL) - `--output` - output directory (defaults to `/output`) - `--limit U` - Limit capture to at most U URLs +- `--exclude ` - skip URLs that match the regex from crawling. Can be specified multiple times. The following is an example usage. The `--cap-add` and `--shm-size` flags are needed to run Chrome in Docker. diff --git a/index.js b/index.js index 812f6ae..9f9bbb4 100644 --- a/index.js +++ b/index.js @@ -39,7 +39,7 @@ async function run(params) { let seenList = new Set(); const url = params._[0]; - let { waitUntil, timeout, scope, limit } = params; + let { waitUntil, timeout, scope, limit, exclude } = params; // waitUntil condition (see: https://github.com/puppeteer/puppeteer/blob/main/docs/api.md#pagegotourl-options) waitUntil = waitUntil || "load"; @@ -53,6 +53,14 @@ async function run(params) { // Limit number of pages captured limit = Number(limit) || 0; + if (exclude) { + if (typeof(exclude) === "string") { + exclude = [new RegExp(exclude)]; + } else { + exclude = exclude.map(e => new RegExp(e)); + } + } + console.log("Limit: " + limit); // links crawled counter @@ -85,7 +93,7 @@ async function run(params) { try { for (data of results) { - const newUrl = shouldCrawl(scope, seenList, data.url); + const newUrl = shouldCrawl(scope, seenList, data.url, exclude); if (newUrl) { seenList.add(newUrl); @@ -119,7 +127,7 @@ async function run(params) { } -function shouldCrawl(scope, seenList, url) { +function shouldCrawl(scope, seenList, url, exclude) { try { url = new URL(url); } catch(e) { @@ -146,6 +154,14 @@ function shouldCrawl(scope, seenList, url) { return false; } + // check exclusions + for (const e of exclude) { + if (e.exec(url)) { + //console.log(`Skipping ${url} excluded by ${e}`); + return false; + } + } + return url; } From 6a925748d557df6f28527533353d6ab36976a473 Mon Sep 17 00:00:00 2001 From: Ilya Kreymer Date: Tue, 22 Sep 2020 18:12:15 +0000 Subject: [PATCH 012/351] excludes: fix no exclude default --- index.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/index.js b/index.js index 9f9bbb4..0f4103b 100644 --- a/index.js +++ b/index.js @@ -59,6 +59,8 @@ async function run(params) { } else { exclude = exclude.map(e => new RegExp(e)); } + } else { + exclude = []; } console.log("Limit: " + limit); From 71e94914aa07f0aa2bfc77d33ea9982d18779099 Mon Sep 17 00:00:00 2001 From: renaud gaudin Date: Wed, 23 Sep 2020 08:42:08 +0000 Subject: [PATCH 013/351] Added gevent update to prevent segfault in uwsgi --- Dockerfile | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Dockerfile b/Dockerfile index d51dfb6..432b827 100644 --- a/Dockerfile +++ b/Dockerfile @@ -9,6 +9,8 @@ ENV PROXY_HOST=localhost \ NO_SOCAT=1 RUN pip install pywb uwsgi warc2zim +# force reinstall of gevent to prevent segfault on uwsgi worker +RUN pip install -U gevent #COPY --from=chrome /opt/google/chrome/ /opt/google/chrome/ From ac650bff05f8f2064a703f160e165f83a022341b Mon Sep 17 00:00:00 2001 From: Kelson Date: Fri, 25 Sep 2020 11:36:30 +0200 Subject: [PATCH 014/351] Update README.md --- README.md | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index f42d6df..16f69d0 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,10 @@ -zimit +Zimit ===== +[![CodeFactor](https://www.codefactor.io/repository/github/openzim/zimit/badge)](https://www.codefactor.io/repository/github/openzim/zimit) +[![Docker Build Status](https://img.shields.io/docker/build/openzim/zimit)](https://hub.docker.com/r/openzim/zimit) +[![License: GPL v3](https://img.shields.io/badge/License-GPLv3-blue.svg)](https://www.gnu.org/licenses/gpl-3.0) + This version of Zimit runs a single-site headless-Chrome based crawl in a Docker container and produces a ZIM of the crawled content. The system uses: @@ -52,3 +56,9 @@ The puppeteer-cluster provides monitoring output which is enabled by default and A first version of a generic HTTP scraper was created in 2016 during the [Wikimania Esino Lario Hackathon](https://wikimania2016.wikimedia.org/wiki/Programme/Kiwix-dedicated_Hackathon). That version is now considered outdated and [archived in `2016` branch](https://github.com/openzim/zimit/tree/2016). + +License +------- + +[GPLv3](https://www.gnu.org/licenses/gpl-3.0) or later, see +[LICENSE](LICENSE) for more details. From bb5b7e48c1422fb3879c95bc9fedb7fadd412136 Mon Sep 17 00:00:00 2001 From: Kelson Date: Fri, 25 Sep 2020 12:02:43 +0200 Subject: [PATCH 015/351] Additional README.md changes (#16) --- README.md | 40 +++++++++++++++++++++++++--------------- 1 file changed, 25 insertions(+), 15 deletions(-) diff --git a/README.md b/README.md index 16f69d0..fc2b99d 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,15 @@ Zimit ===== +Zimit is a scraper allowing to create ZIM file from any Web site. + [![CodeFactor](https://www.codefactor.io/repository/github/openzim/zimit/badge)](https://www.codefactor.io/repository/github/openzim/zimit) -[![Docker Build Status](https://img.shields.io/docker/build/openzim/zimit)](https://hub.docker.com/r/openzim/zimit) +[![Docker Build Status](https://img.shields.io/docker/cloud/build/openzim/zimit)](https://hub.docker.com/r/openzim/zimit) [![License: GPL v3](https://img.shields.io/badge/License-GPLv3-blue.svg)](https://www.gnu.org/licenses/gpl-3.0) +Technical background +-------------------- + This version of Zimit runs a single-site headless-Chrome based crawl in a Docker container and produces a ZIM of the crawled content. The system uses: @@ -15,15 +20,17 @@ The system uses: The driver in `index.js` crawls a given URL using puppeteer-cluster. -After the crawl is done, warc2zim is used to write a zim to the `/output` directory, which can be mounted as a volume. +After the crawl is done, warc2zim is used to write a zim to the +`/output` directory, which can be mounted as a volume. -## Usage +Usage +----- `zimit` is intended to be run in Docker. To build locally run: -``` +```bash docker build -t openzim/zimit . ``` @@ -37,25 +44,28 @@ The image accepts the following parameters: - `--limit U` - Limit capture to at most U URLs - `--exclude ` - skip URLs that match the regex from crawling. Can be specified multiple times. -The following is an example usage. The `--cap-add` and `--shm-size` flags are needed to run Chrome in Docker. +The following is an example usage. The `--cap-add` and `--shm-size` +flags are needed to run Chrome in Docker. Example command: -``` -docker run -v /output:/output --cap-add=SYS_ADMIN --cap-add=NET_ADMIN --shm-size=1gb openzim/zimit URL --name myzimfile --workers 2 --wait-until domcontentloaded +```bash +docker run -v /output:/output --cap-add=SYS_ADMIN --cap-add=NET_ADMIN \ + --shm-size=1gb openzim/zimit URL --name myzimfile --workers 2 --wait-until domcontentloaded ``` -The puppeteer-cluster provides monitoring output which is enabled by default and prints the crawl status to the Docker log. +The puppeteer-cluster provides monitoring output which is enabled by +default and prints the crawl status to the Docker log. +Nota bene +--------- +A first version of a generic HTTP scraper was created in 2016 during +the [Wikimania Esino Lario +Hackathon](https://wikimania2016.wikimedia.org/wiki/Programme/Kiwix-dedicated_Hackathon). -
- -## Previous version - -A first version of a generic HTTP scraper was created in 2016 during the [Wikimania Esino Lario Hackathon](https://wikimania2016.wikimedia.org/wiki/Programme/Kiwix-dedicated_Hackathon). - -That version is now considered outdated and [archived in `2016` branch](https://github.com/openzim/zimit/tree/2016). +That version is now considered outdated and [archived in `2016` +branch](https://github.com/openzim/zimit/tree/2016). License ------- From e4128c81833d4a588906cbd288d1291920d325af Mon Sep 17 00:00:00 2001 From: Ilya Kreymer Date: Tue, 29 Sep 2020 05:16:00 +0000 Subject: [PATCH 016/351] add help text/validation for all config options, url now must be passed in with --url add --scroll boolean option, which activates simple autoscroll behavior use chrome user-agent for manual fetch reenable pywb option cleanup Dockerfile: update to warc2zim 1.0.1, install fonts-stix for math science sites update README --- Dockerfile | 14 ++--- README.md | 5 +- config.yaml | 2 +- index.js | 152 +++++++++++++++++++++++++++++++++++++++++----------- 4 files changed, 130 insertions(+), 43 deletions(-) diff --git a/Dockerfile b/Dockerfile index 432b827..0d66ed8 100644 --- a/Dockerfile +++ b/Dockerfile @@ -8,20 +8,14 @@ ENV PROXY_HOST=localhost \ PROXY_CA_FILE=/tmp/proxy-ca.pem \ NO_SOCAT=1 -RUN pip install pywb uwsgi warc2zim +RUN pip install pywb uwsgi # force reinstall of gevent to prevent segfault on uwsgi worker RUN pip install -U gevent -#COPY --from=chrome /opt/google/chrome/ /opt/google/chrome/ - -#COPY --from=chrome /app/ /browser/ +RUN pip install warc2zim==1.0.1 + COPY --from=chrome /usr/lib/x86_64-linux-gnu/ /usr/lib/x86_64-linux-gnu/ COPY --from=chrome /lib/x86_64-linux-gnu/libdbus* /lib/x86_64-linux-gnu/ -#COPY --from=chrome /usr/bin/run_forever /usr/bin/ -#COPY --from=chrome /usr/bin/wget /usr/bin/ -#COPY --from=chrome /usr/bin/certutil /usr/bin/ - -#RUN ln -s /opt/google/chrome/google-chrome /usr/bin/google-chrome RUN useradd zimit --shell /bin/bash --create-home \ && usermod -a -G sudo zimit \ @@ -34,7 +28,7 @@ ADD package.json /app/ RUN chown -R zimit /app -#USER zimit +RUN apt-get update && apt-get install -qqy fonts-stix RUN yarn install diff --git a/README.md b/README.md index f42d6df..b62cc7e 100644 --- a/README.md +++ b/README.md @@ -25,20 +25,21 @@ docker build -t openzim/zimit . The image accepts the following parameters: -- `URL` - the url to be crawled (required) +- `--url URL` - the url to be crawled (required) - `--workers N` - number of crawl workers to be run in parallel - `--wait-until` - Puppeteer setting for how long to wait for page load. See [page.goto waitUntil options](https://github.com/puppeteer/puppeteer/blob/main/docs/api.md#pagegotourl-options). The default is `load`, but for static sites, `--wait-until domcontentloaded` may be used to speed up the crawl (to avoid waiting for ads to load for example). - `--name` - Name of ZIM file (defaults to the hostname of the URL) - `--output` - output directory (defaults to `/output`) - `--limit U` - Limit capture to at most U URLs - `--exclude ` - skip URLs that match the regex from crawling. Can be specified multiple times. +- `--scroll` - if set, will activate a simple auto-scroll behavior on each page. The following is an example usage. The `--cap-add` and `--shm-size` flags are needed to run Chrome in Docker. Example command: ``` -docker run -v /output:/output --cap-add=SYS_ADMIN --cap-add=NET_ADMIN --shm-size=1gb openzim/zimit URL --name myzimfile --workers 2 --wait-until domcontentloaded +docker run -v /output:/output --cap-add=SYS_ADMIN --cap-add=NET_ADMIN --shm-size=1gb openzim/zimit --url URL --name myzimfile --workers 2 --wait-until domcontentloaded ``` The puppeteer-cluster provides monitoring output which is enabled by default and prints the crawl status to the Docker log. diff --git a/config.yaml b/config.yaml index a072f5a..7f16e3c 100644 --- a/config.yaml +++ b/config.yaml @@ -11,7 +11,7 @@ recorder: live #autoindex: 10 -#enable_auto_fetch: true +enable_auto_fetch: true collections: live: $live diff --git a/index.js b/index.js index 0f4103b..83c0c91 100644 --- a/index.js +++ b/index.js @@ -5,6 +5,8 @@ const fetch = require("node-fetch"); const AbortController = require("abort-controller"); const HTML_TYPES = ["text/html", "application/xhtml", "application/xhtml+xml"]; +const WAIT_UNTIL_OPTS = ["load", "domcontentloaded", "networkidle0", "networkidle2"]; +const CHROME_USER_AGENT = "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36"; async function run(params) { @@ -36,32 +38,10 @@ async function run(params) { }); // Maintain own seen list - let seenList = new Set(); - const url = params._[0]; + const seenList = new Set(); - let { waitUntil, timeout, scope, limit, exclude } = params; - - // waitUntil condition (see: https://github.com/puppeteer/puppeteer/blob/main/docs/api.md#pagegotourl-options) - waitUntil = waitUntil || "load"; - - // Timeout per page - timeout = Number(timeout) || 60000; - - // Scope for crawl, default to the domain of the URL - scope = scope || new URL(url).origin + "/"; - - // Limit number of pages captured - limit = Number(limit) || 0; - - if (exclude) { - if (typeof(exclude) === "string") { - exclude = [new RegExp(exclude)]; - } else { - exclude = exclude.map(e => new RegExp(e)); - } - } else { - exclude = []; - } + // params + const { url, waitUntil, timeout, scope, limit, exclude, scroll } = params; console.log("Limit: " + limit); @@ -82,6 +62,14 @@ async function run(params) { console.log(`Load timeout for ${url}`); } + if (scroll) { + try { + await Promise.race([page.evaluate(autoScroll), sleep(30000)]); + } catch (e) { + console.warn("Behavior Failed", e); + } + } + let results = null; try { @@ -119,7 +107,7 @@ async function run(params) { const zimName = params.name || new URL(url).hostname; const zimOutput = params.output || "/output"; - const warc2zim = `warc2zim --url ${url} --name ${zimName} --output ${zimOutput} ./collections/capture/archive/\*.warc.gz`; + const warc2zim = `warc2zim -a --url ${url} --name ${zimName} --output ${zimOutput} ./collections/capture/archive/\*.warc.gz`; console.log("Running: " + warc2zim); @@ -169,7 +157,9 @@ function shouldCrawl(scope, seenList, url, exclude) { async function htmlCheck(url, capturePrefix) { try { - const resp = await fetch(url, {method: "HEAD"}); + const headers = {"User-Agent": CHROME_USER_AGENT}; + + const resp = await fetch(url, {method: "HEAD", headers}); if (resp.status >= 400) { console.log(`Skipping ${url}, invalid status ${resp.status}`); @@ -193,7 +183,7 @@ async function htmlCheck(url, capturePrefix) { console.log(`Direct capture: ${capturePrefix}${url}`); const abort = new AbortController(); const signal = abort.signal; - const resp2 = await fetch(capturePrefix + url, {signal}); + const resp2 = await fetch(capturePrefix + url, {signal, headers}); abort.abort(); return false; @@ -205,9 +195,111 @@ async function htmlCheck(url, capturePrefix) { } +async function autoScroll() { + const canScrollMore = () => + self.scrollY + self.innerHeight < + Math.max( + self.document.body.scrollHeight, + self.document.body.offsetHeight, + self.document.documentElement.clientHeight, + self.document.documentElement.scrollHeight, + self.document.documentElement.offsetHeight + ); + + const scrollOpts = { top: 250, left: 0, behavior: 'auto' }; + + while (canScrollMore()) { + self.scrollBy(scrollOpts); + await new Promise(resolve => setTimeout(resolve, 500)); + } +} + +function sleep(time) { + return new Promise(resolve => setTimeout(resolve, time)); +} + + async function main() { - const params = require('yargs').argv; - console.log(params); + const params = require('yargs') + .usage("zimit [options]") + .options({ + "url": { + alias: "u", + describe: "The URL to start crawling from and main page for ZIM", + demandOption: true, + type: "string", + }, + + "workers": { + alias: "w", + describe: "The number of workers to run in parallel", + demandOption: false, + default: 1, + type: "number", + }, + + "waitUntil": { + describe: "Puppeteer page.goto() condition to wait for before continuing", + default: "load", + }, + + "limit": { + describe: "Limit crawl to this number of pages", + default: 0, + type: "number", + }, + + "timeout": { + describe: "Timeout for each page to load (in millis)", + default: 30000, + type: "number", + }, + + "scope": { + describe: "The scope of current page that should be included in the crawl (defaults to the domain of URL)", + }, + + "exclude": { + describe: "Regex of URLs that should be excluded from the crawl." + }, + + "scroll": { + describe: "If set, will autoscroll to bottom of the page", + type: "boolean", + default: false, + }}).check((argv, option) => { + // Scope for crawl, default to the domain of the URL + const url = new URL(argv.url); + + if (url.protocol !== "http:" && url.protocol != "https:") { + throw new Error("URL must start with http:// or https://"); + } + + if (!argv.scope) { + argv.scope = url.href.slice(0, url.href.lastIndexOf("/") + 1); + } + + // waitUntil condition must be: load, domcontentloaded, networkidle0, networkidle2 + // (see: https://github.com/puppeteer/puppeteer/blob/main/docs/api.md#pagegotourl-options) + if (!WAIT_UNTIL_OPTS.includes(argv.waitUntil)) { + throw new Error("Invalid waitUntil, must be one of: " + WAIT_UNTIL_OPTS.join(",")); + } + + if (argv.exclude) { + if (typeof(argv.exclude) === "string") { + argv.exclude = [new RegExp(argv.exclude)]; + } else { + argv.exclude = argv.exclude.map(e => new RegExp(e)); + } + } else { + argv.exclude = []; + } + + return true; + }) + .argv; + + console.log("params", params); try { await run(params); From daa2492655d2a6d5e57fb223a039a5f8a359bf7d Mon Sep 17 00:00:00 2001 From: Ilya Kreymer Date: Tue, 6 Oct 2020 06:25:40 +0000 Subject: [PATCH 017/351] config work: pass remaining config opts to warc2zim, fixes #13 warc2zim check: add runWarc2Zim() to test warc2zim opts before running for validity run script: create temp dir in output dir to ensure all data is on the volume run script: add --keep option to keep temp dir, otherwise delete --- Dockerfile | 2 +- index.js | 46 ++++++++++++++++++++++++++++++++-------------- run.sh | 37 ++++++++++++++++++++++++++++++++++--- uwsgi.ini | 2 +- 4 files changed, 68 insertions(+), 19 deletions(-) diff --git a/Dockerfile b/Dockerfile index 0d66ed8..20cc680 100644 --- a/Dockerfile +++ b/Dockerfile @@ -12,7 +12,7 @@ RUN pip install pywb uwsgi # force reinstall of gevent to prevent segfault on uwsgi worker RUN pip install -U gevent -RUN pip install warc2zim==1.0.1 +RUN pip install git+https://github.com/openzim/warc2zim@check-args-no-inputs#foo COPY --from=chrome /usr/lib/x86_64-linux-gnu/ /usr/lib/x86_64-linux-gnu/ COPY --from=chrome /lib/x86_64-linux-gnu/libdbus* /lib/x86_64-linux-gnu/ diff --git a/index.js b/index.js index 83c0c91..b45482a 100644 --- a/index.js +++ b/index.js @@ -43,7 +43,7 @@ async function run(params) { // params const { url, waitUntil, timeout, scope, limit, exclude, scroll } = params; - console.log("Limit: " + limit); + //console.log("Limit: " + limit); // links crawled counter let numLinks = 0; @@ -103,17 +103,6 @@ async function run(params) { await cluster.idle(); await cluster.close(); - - const zimName = params.name || new URL(url).hostname; - const zimOutput = params.output || "/output"; - - const warc2zim = `warc2zim -a --url ${url} --name ${zimName} --output ${zimOutput} ./collections/capture/archive/\*.warc.gz`; - - console.log("Running: " + warc2zim); - - //await new Promise((resolve) => { - child_process.execSync(warc2zim, {shell: "/bin/bash", stdio: "inherit", stderr: "inherit"}); - //}); } @@ -221,7 +210,7 @@ function sleep(time) { async function main() { const params = require('yargs') - .usage("zimit [options]") + .usage("zimit [options] [warc2zim options]") .options({ "url": { alias: "u", @@ -299,10 +288,11 @@ async function main() { }) .argv; - console.log("params", params); + runWarc2Zim(params, true); try { await run(params); + runWarc2Zim(params, false); process.exit(0); } catch(e) { console.error("Crawl failed, ZIM creation skipped"); @@ -311,6 +301,34 @@ async function main() { } } +function runWarc2Zim(params, checkOnly = true) { + const OPTS = ["_", "$0", "keep", "workers", "w", "waitUntil", "wait-until", "limit", "timeout", "scope", "exclude", "scroll"]; + + let zimOptsStr = ""; + + for (const key of Object.keys(params)) { + if (!OPTS.includes(key)) { + zimOptsStr += `--${key} ${params[key]} `; + } + } + + const warc2zimCmd = "warc2zim " + zimOptsStr + (checkOnly ? "" : " ./collections/capture/archive/\*.warc.gz"); + + console.log("Running: " + warc2zimCmd); + + const {status} = child_process.spawnSync(warc2zimCmd, {shell: "/bin/bash", stdio: "inherit", stderr: "inherit"}); + + if (status && !(checkOnly && status === 100)) { + console.error("Invalid warc2zim params, warc2zim exited with: " + status); + process.exit(status); + } +} + + + + + + main(); diff --git a/run.sh b/run.sh index 74d0752..cb27ad5 100755 --- a/run.sh +++ b/run.sh @@ -1,12 +1,43 @@ #!/bin/bash + +output_dir="/output" + +for val in "$@" +do + if [[ $val == "-o" ]] || [[ $val == "--output" ]]; then + output_dir="$2" + + elif [[ $val == "--keep" ]]; then + keep="1" + fi +done + +cmd="$@" + +curr=$(pwd) + +tmpdir=$(mktemp -d --tmpdir=$output_dir) + +chmod a+rx $tmpdir + +echo "output_dir: $tmpdir" + +pushd $tmpdir + wb-manager init capture -uwsgi uwsgi.ini &> /dev/null & +uwsgi $curr/uwsgi.ini &> /dev/null & # needed for chrome export QT_X11_NO_MITSHM=1 -cmd="$@" +su zimit -c "node $curr/index.js $cmd" -su zimit -c "node index.js $cmd" +popd +# if not keeping, delete temp dir +if [[ -z $keep ]]; then + echo "Removing temp dir $tmpdir" + rm -rf $tmpdir +fi + diff --git a/uwsgi.ini b/uwsgi.ini index 1ded14e..0f46569 100644 --- a/uwsgi.ini +++ b/uwsgi.ini @@ -22,6 +22,6 @@ env = GEVENT_MONKEY_PATCH=1 processes = 8 # specify config file here -env = PYWB_CONFIG_FILE=config.yaml +env = PYWB_CONFIG_FILE=/app/config.yaml wsgi = pywb.apps.wayback From 24c843c4aff1f4c2aa0e98031698008fe0585394 Mon Sep 17 00:00:00 2001 From: Ilya Kreymer Date: Tue, 6 Oct 2020 15:36:45 +0000 Subject: [PATCH 018/351] update to latest warc2zim (1.1.0) --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 20cc680..aa25645 100644 --- a/Dockerfile +++ b/Dockerfile @@ -12,7 +12,7 @@ RUN pip install pywb uwsgi # force reinstall of gevent to prevent segfault on uwsgi worker RUN pip install -U gevent -RUN pip install git+https://github.com/openzim/warc2zim@check-args-no-inputs#foo +RUN pip install warc2zim==1.1.0 COPY --from=chrome /usr/lib/x86_64-linux-gnu/ /usr/lib/x86_64-linux-gnu/ COPY --from=chrome /lib/x86_64-linux-gnu/libdbus* /lib/x86_64-linux-gnu/ From 3519d32ba6c5b31e0fa7f7f4844201d8ebbf432c Mon Sep 17 00:00:00 2001 From: Ilya Kreymer Date: Tue, 6 Oct 2020 15:49:45 +0000 Subject: [PATCH 019/351] disable https checking for fetch() head check (pywb already ignores https certs for capture), should fix #10 --- index.js | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/index.js b/index.js index b45482a..9b75fa0 100644 --- a/index.js +++ b/index.js @@ -8,6 +8,11 @@ const HTML_TYPES = ["text/html", "application/xhtml", "application/xhtml+xml"]; const WAIT_UNTIL_OPTS = ["load", "domcontentloaded", "networkidle0", "networkidle2"]; const CHROME_USER_AGENT = "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36"; +// to ignore HTTPS error for HEAD check +const HTTPS_AGENT = require("https").Agent({ + rejectUnauthorized: false, +}); + async function run(params) { // Chrome Flags, including proxy server @@ -148,7 +153,9 @@ async function htmlCheck(url, capturePrefix) { try { const headers = {"User-Agent": CHROME_USER_AGENT}; - const resp = await fetch(url, {method: "HEAD", headers}); + const agent = url.startsWith("https:") ? HTTPS_AGENT : null; + + const resp = await fetch(url, {method: "HEAD", headers, agent}); if (resp.status >= 400) { console.log(`Skipping ${url}, invalid status ${resp.status}`); From 880165ce91effd0750516ef67b549c23f22e02ca Mon Sep 17 00:00:00 2001 From: Ilya Kreymer Date: Tue, 6 Oct 2020 16:01:55 +0000 Subject: [PATCH 020/351] fix Dockerfile per codefactor recommends --- Dockerfile | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index aa25645..5965dbc 100644 --- a/Dockerfile +++ b/Dockerfile @@ -28,7 +28,9 @@ ADD package.json /app/ RUN chown -R zimit /app -RUN apt-get update && apt-get install -qqy fonts-stix +RUN apt-get update && apt-get install --no-install-recommends -qqy fonts-stix \ + && apt-get clean \ + && rm -rf /var/lib/apt/lists/* RUN yarn install From 1eee9ab633cbc0fdbf775b31b734eccae08a2f08 Mon Sep 17 00:00:00 2001 From: renaud gaudin Date: Wed, 7 Oct 2020 10:29:38 +0000 Subject: [PATCH 021/351] added locales to image --- Dockerfile | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/Dockerfile b/Dockerfile index 5965dbc..a8526af 100644 --- a/Dockerfile +++ b/Dockerfile @@ -2,6 +2,11 @@ FROM oldwebtoday/chrome:84 as chrome FROM nikolaik/python-nodejs +RUN apt-get update -y \ + && apt-get install --no-install-recommends -qqy fonts-stix locales-all \ + && apt-get clean \ + && rm -rf /var/lib/apt/lists/* + ENV PROXY_HOST=localhost \ PROXY_PORT=8080 \ PROXY_CA_URL=http://wsgiprox/download/pem \ @@ -28,10 +33,6 @@ ADD package.json /app/ RUN chown -R zimit /app -RUN apt-get update && apt-get install --no-install-recommends -qqy fonts-stix \ - && apt-get clean \ - && rm -rf /var/lib/apt/lists/* - RUN yarn install ADD config.yaml /app/ From 901729a0690c720a47924af824fb98fcb41c8223 Mon Sep 17 00:00:00 2001 From: renaud gaudin Date: Wed, 7 Oct 2020 13:56:21 +0000 Subject: [PATCH 022/351] added link to /dev/shm info on readme --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 7aff23b..5f3adf6 100644 --- a/README.md +++ b/README.md @@ -46,7 +46,7 @@ The image accepts the following parameters: - `--scroll` - if set, will activate a simple auto-scroll behavior on each page. The following is an example usage. The `--cap-add` and `--shm-size` -flags are needed to run Chrome in Docker. +flags are [needed to run Chrome in Docker](https://github.com/puppeteer/puppeteer/blob/v1.0.0/docs/troubleshooting.md#tips). Example command: From 736deccbb5a15564521601d29c5ba221b09a3030 Mon Sep 17 00:00:00 2001 From: renaud gaudin Date: Thu, 8 Oct 2020 11:29:33 +0000 Subject: [PATCH 023/351] using tagged version for base image so we have a known python version so there are wheels suitable for the docker image (cp38) --- Dockerfile | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/Dockerfile b/Dockerfile index a8526af..816c8a2 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,6 +1,6 @@ FROM oldwebtoday/chrome:84 as chrome -FROM nikolaik/python-nodejs +FROM nikolaik/python-nodejs:python3.8-nodejs14 RUN apt-get update -y \ && apt-get install --no-install-recommends -qqy fonts-stix locales-all \ @@ -13,9 +13,7 @@ ENV PROXY_HOST=localhost \ PROXY_CA_FILE=/tmp/proxy-ca.pem \ NO_SOCAT=1 -RUN pip install pywb uwsgi -# force reinstall of gevent to prevent segfault on uwsgi worker -RUN pip install -U gevent +RUN pip install gevent>=20.9.0 pywb uwsgi RUN pip install warc2zim==1.1.0 From 2b2f96d9833b74c5cbad515ca858ebc94c9bae92 Mon Sep 17 00:00:00 2001 From: Ilya Kreymer Date: Fri, 9 Oct 2020 04:23:11 +0000 Subject: [PATCH 024/351] run script improvements: - set permissions on volume dir to address #22 - propagate return code #21 - catch to SIGTERM and SIGINT signals to cleanup temp dir --- run.sh | 26 ++++++++++++++++++++------ 1 file changed, 20 insertions(+), 6 deletions(-) diff --git a/run.sh b/run.sh index cb27ad5..ea0b669 100755 --- a/run.sh +++ b/run.sh @@ -1,6 +1,9 @@ #!/bin/bash output_dir="/output" +chmod a+w $output_dir + +res=1 for val in "$@" do @@ -24,20 +27,31 @@ echo "output_dir: $tmpdir" pushd $tmpdir +redis-server &> /dev/null & + wb-manager init capture uwsgi $curr/uwsgi.ini &> /dev/null & # needed for chrome export QT_X11_NO_MITSHM=1 +cleanup() { + # if not keeping, delete temp dir + if [[ -z $keep ]]; then + echo "Removing temp dir $tmpdir" + rm -rf $tmpdir + fi + exit $res +} + +trap cleanup SIGINT +trap cleanup SIGTERM + su zimit -c "node $curr/index.js $cmd" +res="$?" + popd - -# if not keeping, delete temp dir -if [[ -z $keep ]]; then - echo "Removing temp dir $tmpdir" - rm -rf $tmpdir -fi +cleanup From 9e9ec82ad1f43806ba5cbaeae73eac0d49a3db72 Mon Sep 17 00:00:00 2001 From: Ilya Kreymer Date: Fri, 9 Oct 2020 04:42:46 +0000 Subject: [PATCH 025/351] param validation for warc2zim: - ensure trailing slash is added #19 - better handling of boolean params #18 --- index.js | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/index.js b/index.js index 9b75fa0..e543548 100644 --- a/index.js +++ b/index.js @@ -271,6 +271,9 @@ async function main() { throw new Error("URL must start with http:// or https://"); } + // ensure valid url is used (adds trailing slash if missing) + argv.url = url.href; + if (!argv.scope) { argv.scope = url.href.slice(0, url.href.lastIndexOf("/") + 1); } @@ -309,13 +312,17 @@ async function main() { } function runWarc2Zim(params, checkOnly = true) { - const OPTS = ["_", "$0", "keep", "workers", "w", "waitUntil", "wait-until", "limit", "timeout", "scope", "exclude", "scroll"]; + const OPTS = ["_", "u", "$0", "keep", "workers", "w", "waitUntil", "wait-until", "limit", "timeout", "scope", "exclude", "scroll"]; let zimOptsStr = ""; for (const key of Object.keys(params)) { if (!OPTS.includes(key)) { - zimOptsStr += `--${key} ${params[key]} `; + zimOptsStr += (key.length === 1 ? "-" : "--") + key + " "; + + if (typeof(params[key]) === "string") { + zimOptsStr += params[key] + " "; + } } } @@ -325,7 +332,7 @@ function runWarc2Zim(params, checkOnly = true) { const {status} = child_process.spawnSync(warc2zimCmd, {shell: "/bin/bash", stdio: "inherit", stderr: "inherit"}); - if (status && !(checkOnly && status === 100)) { + if ((!checkOnly && status) || (checkOnly && status !== 100)) { console.error("Invalid warc2zim params, warc2zim exited with: " + status); process.exit(status); } From e608cbd71e875d549b35284873dbcb7a6aff8e92 Mon Sep 17 00:00:00 2001 From: Ilya Kreymer Date: Fri, 9 Oct 2020 05:04:11 +0000 Subject: [PATCH 026/351] bump timeout to 90s, per suggestions in #20 --- index.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/index.js b/index.js index e543548..34050d7 100644 --- a/index.js +++ b/index.js @@ -108,6 +108,9 @@ async function run(params) { await cluster.idle(); await cluster.close(); + + // extra wait for all resources to land into WARCs + await sleep(30000); } @@ -247,7 +250,7 @@ async function main() { "timeout": { describe: "Timeout for each page to load (in millis)", - default: 30000, + default: 90000, type: "number", }, @@ -263,6 +266,7 @@ async function main() { describe: "If set, will autoscroll to bottom of the page", type: "boolean", default: false, + }}).check((argv, option) => { // Scope for crawl, default to the domain of the URL const url = new URL(argv.url); From bd8d90efa5d920c04e553787db388b8c9589cd4c Mon Sep 17 00:00:00 2001 From: Ilya Kreymer Date: Fri, 9 Oct 2020 05:37:30 +0000 Subject: [PATCH 027/351] quote params passed to warc2zim, should fix #18 --- index.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/index.js b/index.js index 34050d7..fff8bfd 100644 --- a/index.js +++ b/index.js @@ -110,6 +110,7 @@ async function run(params) { await cluster.close(); // extra wait for all resources to land into WARCs + console.log("Waiting 30s to ensure WARCs are finished"); await sleep(30000); } @@ -325,7 +326,7 @@ function runWarc2Zim(params, checkOnly = true) { zimOptsStr += (key.length === 1 ? "-" : "--") + key + " "; if (typeof(params[key]) === "string") { - zimOptsStr += params[key] + " "; + zimOptsStr += `"${params[key]}" `; } } } From 1198d1b6b9eca153b3a89cae3c62626b213c4469 Mon Sep 17 00:00:00 2001 From: Ilya Kreymer Date: Fri, 9 Oct 2020 15:19:20 +0000 Subject: [PATCH 028/351] correct parsing of repeated params, fixes #26, #18 switch to 'zimit' CMD instead of ENTRYPOINT (#21) --- Dockerfile | 3 ++- index.js | 11 +++++++++-- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/Dockerfile b/Dockerfile index 816c8a2..078e2f1 100644 --- a/Dockerfile +++ b/Dockerfile @@ -37,6 +37,7 @@ ADD config.yaml /app/ ADD uwsgi.ini /app/ ADD run.sh /app/ ADD index.js /app/ +RUN ln -s /app/run.sh /usr/bin/zimit -ENTRYPOINT ["/app/run.sh"] +CMD ["zimit"] diff --git a/index.js b/index.js index fff8bfd..621a28e 100644 --- a/index.js +++ b/index.js @@ -325,8 +325,15 @@ function runWarc2Zim(params, checkOnly = true) { if (!OPTS.includes(key)) { zimOptsStr += (key.length === 1 ? "-" : "--") + key + " "; - if (typeof(params[key]) === "string") { - zimOptsStr += `"${params[key]}" `; + switch (typeof(params[key])) { + case "string": + case "number": + zimOptsStr += `"${params[key]}" `; + break; + + case "object": + zimOptsStr += params[key].join(` --${key} `); + break; } } } From 9046f21f5389de698cd797c41a8c7f07599d95ba Mon Sep 17 00:00:00 2001 From: Ilya Kreymer Date: Fri, 9 Oct 2020 15:29:07 +0000 Subject: [PATCH 029/351] quote repeated params, add space --- index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/index.js b/index.js index 621a28e..c5c4d69 100644 --- a/index.js +++ b/index.js @@ -332,7 +332,7 @@ function runWarc2Zim(params, checkOnly = true) { break; case "object": - zimOptsStr += params[key].join(` --${key} `); + zimOptsStr += params[key].map(x => `"${x}"`).join(` --${key} `) + " "; break; } } From c26fe5d4cdd8def6f438ce47ab074877acc2aa1e Mon Sep 17 00:00:00 2001 From: Ilya Kreymer Date: Fri, 16 Oct 2020 18:54:04 +0000 Subject: [PATCH 030/351] replace run.sh with python runner zimit.py, as suggested in #28 should fix arg parsing issues in #28,#18 warc2zim now called directly from zimit.py, both for arg check and for actual zim creation crawler renamed to crawler.js, no longer handles zim creation, only crawling add signal handling to both zimit and crawler.js for smooth shutdown, should fix #25 pywb: update to latest dev version with dedup support, add redis for deduplication --- Dockerfile | 12 +- README.md | 2 +- config.yaml | 8 +- index.js | 360 --------------------------------------------------- package.json | 4 +- run.sh | 57 -------- zimit.py | 178 +++++++++++++++++++++++++ 7 files changed, 194 insertions(+), 427 deletions(-) delete mode 100644 index.js delete mode 100755 run.sh create mode 100755 zimit.py diff --git a/Dockerfile b/Dockerfile index 078e2f1..667e245 100644 --- a/Dockerfile +++ b/Dockerfile @@ -3,7 +3,7 @@ FROM oldwebtoday/chrome:84 as chrome FROM nikolaik/python-nodejs:python3.8-nodejs14 RUN apt-get update -y \ - && apt-get install --no-install-recommends -qqy fonts-stix locales-all \ + && apt-get install --no-install-recommends -qqy fonts-stix locales-all redis-server \ && apt-get clean \ && rm -rf /var/lib/apt/lists/* @@ -13,10 +13,12 @@ ENV PROXY_HOST=localhost \ PROXY_CA_FILE=/tmp/proxy-ca.pem \ NO_SOCAT=1 -RUN pip install gevent>=20.9.0 pywb uwsgi +RUN pip install gevent>=20.9.0 uwsgi RUN pip install warc2zim==1.1.0 +RUN pip install git+https://github.com/webrecorder/pywb@patch-work + COPY --from=chrome /usr/lib/x86_64-linux-gnu/ /usr/lib/x86_64-linux-gnu/ COPY --from=chrome /lib/x86_64-linux-gnu/libdbus* /lib/x86_64-linux-gnu/ @@ -35,9 +37,9 @@ RUN yarn install ADD config.yaml /app/ ADD uwsgi.ini /app/ -ADD run.sh /app/ -ADD index.js /app/ -RUN ln -s /app/run.sh /usr/bin/zimit +ADD zimit.py /app/ +ADD crawler.js /app/ +RUN ln -s /app/zimit.py /usr/bin/zimit CMD ["zimit"] diff --git a/README.md b/README.md index 5f3adf6..e9ccf7c 100644 --- a/README.md +++ b/README.md @@ -43,7 +43,7 @@ The image accepts the following parameters: - `--output` - output directory (defaults to `/output`) - `--limit U` - Limit capture to at most U URLs - `--exclude ` - skip URLs that match the regex from crawling. Can be specified multiple times. -- `--scroll` - if set, will activate a simple auto-scroll behavior on each page. +- `--scroll [N]` - if set, will activate a simple auto-scroll behavior on each page to scroll for upto N seconds The following is an example usage. The `--cap-add` and `--shm-size` flags are [needed to run Chrome in Docker](https://github.com/puppeteer/puppeteer/blob/v1.0.0/docs/troubleshooting.md#tips). diff --git a/config.yaml b/config.yaml index 7f16e3c..f9d3943 100644 --- a/config.yaml +++ b/config.yaml @@ -1,5 +1,6 @@ debug: true - + + proxy: coll: capture recording: true @@ -7,7 +8,10 @@ proxy: enable_banner: false enable_wombat: true -recorder: live +recorder: + dedup_policy: skip + source_coll: live + cache: always #autoindex: 10 diff --git a/index.js b/index.js deleted file mode 100644 index c5c4d69..0000000 --- a/index.js +++ /dev/null @@ -1,360 +0,0 @@ -const puppeteer = require("puppeteer"); -const { Cluster } = require("puppeteer-cluster"); -const child_process = require("child_process"); -const fetch = require("node-fetch"); -const AbortController = require("abort-controller"); - -const HTML_TYPES = ["text/html", "application/xhtml", "application/xhtml+xml"]; -const WAIT_UNTIL_OPTS = ["load", "domcontentloaded", "networkidle0", "networkidle2"]; -const CHROME_USER_AGENT = "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36"; - -// to ignore HTTPS error for HEAD check -const HTTPS_AGENT = require("https").Agent({ - rejectUnauthorized: false, -}); - - -async function run(params) { - // Chrome Flags, including proxy server - const args = [ - "--no-xshm", // needed for Chrome >80 (check if puppeteer adds automatically) - `--proxy-server=http://${process.env.PROXY_HOST}:${process.env.PROXY_PORT}` - ]; - - // prefix for direct capture via pywb - const capturePrefix = `http://${process.env.PROXY_HOST}:${process.env.PROXY_PORT}/capture/record/id_/`; - - // Puppeter Options - const puppeteerOptions = { - headless: true, - //executablePath: "/usr/bin/google-chrome", - ignoreHTTPSErrors: true, - args - }; - - // Puppeteer Cluster init and options - const cluster = await Cluster.launch({ - concurrency: Cluster.CONCURRENCY_PAGE, - maxConcurrency: Number(params.workers) || 1, - skipDuplicateUrls: true, - puppeteerOptions, - puppeteer, - monitor: true - }); - - // Maintain own seen list - const seenList = new Set(); - - // params - const { url, waitUntil, timeout, scope, limit, exclude, scroll } = params; - - //console.log("Limit: " + limit); - - // links crawled counter - let numLinks = 0; - - // Crawl Task - cluster.task(async ({page, data}) => { - const {url} = data; - - if (!await htmlCheck(url, capturePrefix)) { - return; - } - - try { - await page.goto(url, {waitUntil, timeout}); - } catch (e) { - console.log(`Load timeout for ${url}`); - } - - if (scroll) { - try { - await Promise.race([page.evaluate(autoScroll), sleep(30000)]); - } catch (e) { - console.warn("Behavior Failed", e); - } - } - - let results = null; - - try { - results = await page.evaluate(() => { - return [...document.querySelectorAll('a[href]')].map(el => ({ url: el.href})) - }); - } catch (e) { - console.warn("Link Extraction failed", e); - return; - } - - try { - for (data of results) { - const newUrl = shouldCrawl(scope, seenList, data.url, exclude); - - if (newUrl) { - seenList.add(newUrl); - if (numLinks++ >= limit && limit > 0) { - break; - } - cluster.queue({url: newUrl}); - } - } - } catch (e) { - console.log("Queuing Error: " + e); - } - }); - - numLinks++; - cluster.queue({url}); - - await cluster.idle(); - await cluster.close(); - - // extra wait for all resources to land into WARCs - console.log("Waiting 30s to ensure WARCs are finished"); - await sleep(30000); -} - - -function shouldCrawl(scope, seenList, url, exclude) { - try { - url = new URL(url); - } catch(e) { - return false; - } - - // remove hashtag - url.hash = ""; - - // only queue http/https URLs - if (url.protocol != "http:" && url.protocol != "https:") { - return false; - } - - url = url.href; - - // skip already crawled - if (seenList.has(url)) { - return false; - } - - // if scope is provided, skip urls not in scope - if (scope && !url.startsWith(scope)) { - return false; - } - - // check exclusions - for (const e of exclude) { - if (e.exec(url)) { - //console.log(`Skipping ${url} excluded by ${e}`); - return false; - } - } - - return url; -} - -async function htmlCheck(url, capturePrefix) { - try { - const headers = {"User-Agent": CHROME_USER_AGENT}; - - const agent = url.startsWith("https:") ? HTTPS_AGENT : null; - - const resp = await fetch(url, {method: "HEAD", headers, agent}); - - if (resp.status >= 400) { - console.log(`Skipping ${url}, invalid status ${resp.status}`); - return false; - } - - const contentType = resp.headers.get("Content-Type"); - - // just load if no content-type - if (!contentType) { - return true; - } - - const mime = contentType.split(";")[0]; - - if (HTML_TYPES.includes(mime)) { - return true; - } - - // capture directly - console.log(`Direct capture: ${capturePrefix}${url}`); - const abort = new AbortController(); - const signal = abort.signal; - const resp2 = await fetch(capturePrefix + url, {signal, headers}); - abort.abort(); - - return false; - } catch(e) { - console.log("HTML Check error", e); - // can't confirm not html, so try in browser - return true; - } -} - - -async function autoScroll() { - const canScrollMore = () => - self.scrollY + self.innerHeight < - Math.max( - self.document.body.scrollHeight, - self.document.body.offsetHeight, - self.document.documentElement.clientHeight, - self.document.documentElement.scrollHeight, - self.document.documentElement.offsetHeight - ); - - const scrollOpts = { top: 250, left: 0, behavior: 'auto' }; - - while (canScrollMore()) { - self.scrollBy(scrollOpts); - await new Promise(resolve => setTimeout(resolve, 500)); - } -} - -function sleep(time) { - return new Promise(resolve => setTimeout(resolve, time)); -} - - -async function main() { - const params = require('yargs') - .usage("zimit [options] [warc2zim options]") - .options({ - "url": { - alias: "u", - describe: "The URL to start crawling from and main page for ZIM", - demandOption: true, - type: "string", - }, - - "workers": { - alias: "w", - describe: "The number of workers to run in parallel", - demandOption: false, - default: 1, - type: "number", - }, - - "waitUntil": { - describe: "Puppeteer page.goto() condition to wait for before continuing", - default: "load", - }, - - "limit": { - describe: "Limit crawl to this number of pages", - default: 0, - type: "number", - }, - - "timeout": { - describe: "Timeout for each page to load (in millis)", - default: 90000, - type: "number", - }, - - "scope": { - describe: "The scope of current page that should be included in the crawl (defaults to the domain of URL)", - }, - - "exclude": { - describe: "Regex of URLs that should be excluded from the crawl." - }, - - "scroll": { - describe: "If set, will autoscroll to bottom of the page", - type: "boolean", - default: false, - - }}).check((argv, option) => { - // Scope for crawl, default to the domain of the URL - const url = new URL(argv.url); - - if (url.protocol !== "http:" && url.protocol != "https:") { - throw new Error("URL must start with http:// or https://"); - } - - // ensure valid url is used (adds trailing slash if missing) - argv.url = url.href; - - if (!argv.scope) { - argv.scope = url.href.slice(0, url.href.lastIndexOf("/") + 1); - } - - // waitUntil condition must be: load, domcontentloaded, networkidle0, networkidle2 - // (see: https://github.com/puppeteer/puppeteer/blob/main/docs/api.md#pagegotourl-options) - if (!WAIT_UNTIL_OPTS.includes(argv.waitUntil)) { - throw new Error("Invalid waitUntil, must be one of: " + WAIT_UNTIL_OPTS.join(",")); - } - - if (argv.exclude) { - if (typeof(argv.exclude) === "string") { - argv.exclude = [new RegExp(argv.exclude)]; - } else { - argv.exclude = argv.exclude.map(e => new RegExp(e)); - } - } else { - argv.exclude = []; - } - - return true; - }) - .argv; - - runWarc2Zim(params, true); - - try { - await run(params); - runWarc2Zim(params, false); - process.exit(0); - } catch(e) { - console.error("Crawl failed, ZIM creation skipped"); - console.error(e); - process.exit(1); - } -} - -function runWarc2Zim(params, checkOnly = true) { - const OPTS = ["_", "u", "$0", "keep", "workers", "w", "waitUntil", "wait-until", "limit", "timeout", "scope", "exclude", "scroll"]; - - let zimOptsStr = ""; - - for (const key of Object.keys(params)) { - if (!OPTS.includes(key)) { - zimOptsStr += (key.length === 1 ? "-" : "--") + key + " "; - - switch (typeof(params[key])) { - case "string": - case "number": - zimOptsStr += `"${params[key]}" `; - break; - - case "object": - zimOptsStr += params[key].map(x => `"${x}"`).join(` --${key} `) + " "; - break; - } - } - } - - const warc2zimCmd = "warc2zim " + zimOptsStr + (checkOnly ? "" : " ./collections/capture/archive/\*.warc.gz"); - - console.log("Running: " + warc2zimCmd); - - const {status} = child_process.spawnSync(warc2zimCmd, {shell: "/bin/bash", stdio: "inherit", stderr: "inherit"}); - - if ((!checkOnly && status) || (checkOnly && status !== 100)) { - console.error("Invalid warc2zim params, warc2zim exited with: " + status); - process.exit(status); - } -} - - - - - - -main(); - - diff --git a/package.json b/package.json index 47efcbb..e991921 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { - "name": "zimit", + "name": "zimit-crawler", "version": "1.0.0", - "main": "index.js", + "main": "zimit-crawler", "repository": "https://github.com/openzim/zimit", "author": "Ilya Kreymer ", "license": "MIT", diff --git a/run.sh b/run.sh deleted file mode 100755 index ea0b669..0000000 --- a/run.sh +++ /dev/null @@ -1,57 +0,0 @@ -#!/bin/bash - -output_dir="/output" -chmod a+w $output_dir - -res=1 - -for val in "$@" -do - if [[ $val == "-o" ]] || [[ $val == "--output" ]]; then - output_dir="$2" - - elif [[ $val == "--keep" ]]; then - keep="1" - fi -done - -cmd="$@" - -curr=$(pwd) - -tmpdir=$(mktemp -d --tmpdir=$output_dir) - -chmod a+rx $tmpdir - -echo "output_dir: $tmpdir" - -pushd $tmpdir - -redis-server &> /dev/null & - -wb-manager init capture -uwsgi $curr/uwsgi.ini &> /dev/null & - -# needed for chrome -export QT_X11_NO_MITSHM=1 - -cleanup() { - # if not keeping, delete temp dir - if [[ -z $keep ]]; then - echo "Removing temp dir $tmpdir" - rm -rf $tmpdir - fi - exit $res -} - -trap cleanup SIGINT -trap cleanup SIGTERM - -su zimit -c "node $curr/index.js $cmd" - -res="$?" - -popd - -cleanup - diff --git a/zimit.py b/zimit.py new file mode 100755 index 0000000..60f3c1e --- /dev/null +++ b/zimit.py @@ -0,0 +1,178 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +# vim: ai ts=4 sts=4 et sw=4 nu + +""" +Main zimit run script +This script validates arguments with warc2zim, checks permissions +and then calls the Node based driver +""" + +from argparse import ArgumentParser +import os +import stat +import tempfile +import subprocess +import pwd +import atexit +import shutil +import glob +import signal +import sys + +from warc2zim.main import warc2zim + + +def zimit(args=None): + parser = ArgumentParser( + description="Run a browser-based crawl on the specified URL and convert to ZIM" + ) + + parser.add_argument("-u", "--url", help="The URL to start crawling from") + + parser.add_argument("-w", "--workers", type=int, help="Number of parallel workers") + + parser.add_argument( + "--waitUntil", + help="Puppeteer page.goto() condition to wait for before continuing", + default="load", + ) + + parser.add_argument( + "--limit", help="Limit crawl to this number of pages", type=int, default=0 + ) + + parser.add_argument( + "--timeout", + help="Timeout for each page to load (in millis)", + type=int, + default=90000, + ) + + parser.add_argument( + "--scope", + help="The scope of current page that should be included in the crawl (defaults to the domain of URL)", + ) + + parser.add_argument( + "--exclude", help="Regex of URLs that should be excluded from the crawl." + ) + + parser.add_argument( + "--scroll", + help="If set, will autoscroll to bottom of the page", + action="store_true", + default=False, + ) + + parser.add_argument( + "--keep", + help="If set, keep WARC files after crawl, don't delete", + action="store_true", + ) + + parser.add_argument( + "--output", help="Output directory for ZIM and WARC files", default="/output" + ) + + zimit_args, warc2zim_args = parser.parse_known_args(args) + + # pass url and output to warc2zim also + if zimit_args.output: + warc2zim_args.append("--output") + warc2zim_args.append(zimit_args.output) + + if zimit_args.url: + warc2zim_args.append("--url") + warc2zim_args.append(zimit_args.url) + + print("----------") + print("Testing warc2zim args") + print("Running: warc2zim " + " ".join(warc2zim_args)) + res = warc2zim(warc2zim_args) + if res != 100: + print("Exiting, invalid warc2zim params") + return 2 + + # make temp dir for this crawl and make it all writeable+all readable+all exec + temp_root_dir = tempfile.mkdtemp(dir=zimit_args.output, prefix=".tmp") + os.chmod(temp_root_dir, stat.S_IROTH | stat.S_IWOTH | stat.S_IXOTH) + + if not zimit_args.keep: + def cleanup(): + print("") + print("----------") + print("Cleanup, removing temp dir: " + temp_root_dir) + shutil.rmtree(temp_root_dir) + + atexit.register(cleanup) + + # create pywb collection + print("") + print("----------") + print("pywb init") + subprocess.run(["wb-manager", "init", "capture"], check=True, cwd=temp_root_dir) + + subprocess.Popen(["redis-server"], cwd=temp_root_dir, stdout=subprocess.DEVNULL) + + subprocess.Popen( + ["uwsgi", os.getcwd() + "/uwsgi.ini"], + cwd=temp_root_dir, + stdout=subprocess.DEVNULL, + stderr=subprocess.DEVNULL, + ) + + cmd_args = get_node_cmd_line(zimit_args) + cmd_line = " ".join(cmd_args) + + print("") + print("----------") + print("running zimit driver: " + cmd_line) + su_cmd = ["su", "zimit", "-c", cmd_line] + subprocess.run(su_cmd, check=True) + + warc_files = glob.glob(os.path.join(temp_root_dir, "collections/capture/archive/*.warc.gz")) + print("") + print("----------") + print("Processing {0} WARC files to ZIM".format(len(warc_files))) + + res = warc2zim(warc2zim_args + warc_files) + + return res + + +def get_node_cmd_line(args): + node_cmd = ["node", "crawler.js"] + for arg in [ + "url", + "workers", + "waitUntil", + "limit", + "timeout", + "scope", + "exclude", + "scroll", + ]: + value = getattr(args, arg) + if value: + node_cmd.append("--" + arg) + if type(value) != bool: + node_cmd.append(str(value)) + + return node_cmd + + +def sigint_handler(*args): + print("") + print("") + print("SIGINT/SIGTERM received, stopping zimit") + print("") + print("") + sys.exit(3) + + +signal.signal(signal.SIGINT, sigint_handler) +signal.signal(signal.SIGTERM, sigint_handler) + +if __name__ == "__main__": + zimit() From 2c1b401e93e2f1d6d6b002b024b57e2047df9caa Mon Sep 17 00:00:00 2001 From: Ilya Kreymer Date: Fri, 16 Oct 2020 19:11:31 +0000 Subject: [PATCH 031/351] fix codefactor complaints --- zimit.py | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/zimit.py b/zimit.py index 60f3c1e..d1773ca 100755 --- a/zimit.py +++ b/zimit.py @@ -99,6 +99,7 @@ def zimit(args=None): os.chmod(temp_root_dir, stat.S_IROTH | stat.S_IWOTH | stat.S_IXOTH) if not zimit_args.keep: + def cleanup(): print("") print("----------") @@ -111,16 +112,20 @@ def zimit(args=None): print("") print("----------") print("pywb init") - subprocess.run(["wb-manager", "init", "capture"], check=True, cwd=temp_root_dir) + subprocess.run( + ["wb-manager", "init", "capture"], check=True, cwd=temp_root_dir + ) # nosec - subprocess.Popen(["redis-server"], cwd=temp_root_dir, stdout=subprocess.DEVNULL) + subprocess.Popen( + ["redis-server"], cwd=temp_root_dir, stdout=subprocess.DEVNULL + ) # nosec subprocess.Popen( ["uwsgi", os.getcwd() + "/uwsgi.ini"], cwd=temp_root_dir, stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL, - ) + ) # nosec cmd_args = get_node_cmd_line(zimit_args) cmd_line = " ".join(cmd_args) @@ -129,9 +134,11 @@ def zimit(args=None): print("----------") print("running zimit driver: " + cmd_line) su_cmd = ["su", "zimit", "-c", cmd_line] - subprocess.run(su_cmd, check=True) + subprocess.run(su_cmd, check=True) # nosec - warc_files = glob.glob(os.path.join(temp_root_dir, "collections/capture/archive/*.warc.gz")) + warc_files = glob.glob( + os.path.join(temp_root_dir, "collections/capture/archive/*.warc.gz") + ) print("") print("----------") print("Processing {0} WARC files to ZIM".format(len(warc_files))) @@ -156,7 +163,7 @@ def get_node_cmd_line(args): value = getattr(args, arg) if value: node_cmd.append("--" + arg) - if type(value) != bool: + if not isinstance(value, bool): node_cmd.append(str(value)) return node_cmd From 65b3b533b78e8bcc18385eb1a64f5620fcd66efe Mon Sep 17 00:00:00 2001 From: Ilya Kreymer Date: Fri, 16 Oct 2020 19:12:15 +0000 Subject: [PATCH 032/351] add .dockerignore to speed up docker build --- .dockerignore | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 .dockerignore diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..e1d45cf --- /dev/null +++ b/.dockerignore @@ -0,0 +1,2 @@ +output/ +node_modules/ From d9ba7e246f85e36b45aae52c238dbec0a8dd083f Mon Sep 17 00:00:00 2001 From: Ilya Kreymer Date: Fri, 16 Oct 2020 19:21:37 +0000 Subject: [PATCH 033/351] add .bandit exclusion for codefactor --- .bandit | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 .bandit diff --git a/.bandit b/.bandit new file mode 100644 index 0000000..c10f271 --- /dev/null +++ b/.bandit @@ -0,0 +1,2 @@ +[bandit] +skips: B607 From 5b3101f2d87a59a9b0602146362f37de7e5c7676 Mon Sep 17 00:00:00 2001 From: Ilya Kreymer Date: Fri, 16 Oct 2020 20:29:51 +0000 Subject: [PATCH 034/351] add missing crawler.js! --- crawler.js | 328 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 328 insertions(+) create mode 100644 crawler.js diff --git a/crawler.js b/crawler.js new file mode 100644 index 0000000..91da017 --- /dev/null +++ b/crawler.js @@ -0,0 +1,328 @@ +const puppeteer = require("puppeteer"); +const { Cluster } = require("puppeteer-cluster"); +const child_process = require("child_process"); +const fetch = require("node-fetch"); +const AbortController = require("abort-controller"); + +const HTML_TYPES = ["text/html", "application/xhtml", "application/xhtml+xml"]; +const WAIT_UNTIL_OPTS = ["load", "domcontentloaded", "networkidle0", "networkidle2"]; +const CHROME_USER_AGENT = "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36"; + +// to ignore HTTPS error for HEAD check +const HTTPS_AGENT = require("https").Agent({ + rejectUnauthorized: false, +}); + +process.once('SIGINT', (code) => { + console.log('SIGINT received, exiting'); + process.exit(1); +}); + +process.once('SIGTERM', (code) => { + console.log('SIGTERM received, exiting'); + process.exit(1); +}); + + +async function run(params) { + // Chrome Flags, including proxy server + const args = [ + "--no-xshm", // needed for Chrome >80 (check if puppeteer adds automatically) + `--proxy-server=http://${process.env.PROXY_HOST}:${process.env.PROXY_PORT}` + ]; + + // prefix for direct capture via pywb + const capturePrefix = `http://${process.env.PROXY_HOST}:${process.env.PROXY_PORT}/capture/record/id_/`; + + // Puppeter Options + const puppeteerOptions = { + headless: true, + //executablePath: "/usr/bin/google-chrome", + ignoreHTTPSErrors: true, + args + }; + + // Puppeteer Cluster init and options + const cluster = await Cluster.launch({ + concurrency: Cluster.CONCURRENCY_PAGE, + maxConcurrency: Number(params.workers) || 1, + skipDuplicateUrls: true, + puppeteerOptions, + puppeteer, + monitor: true + }); + + // Maintain own seen list + const seenList = new Set(); + + // params + const { url, waitUntil, timeout, scope, limit, exclude, scroll } = params; + + //console.log("Limit: " + limit); + + // links crawled counter + let numLinks = 0; + + // Crawl Task + cluster.task(async ({page, data}) => { + const {url} = data; + + if (!await htmlCheck(url, capturePrefix)) { + return; + } + + try { + await page.goto(url, {waitUntil, timeout}); + } catch (e) { + console.log(`Load timeout for ${url}`); + } + + if (scroll) { + try { + await Promise.race([page.evaluate(autoScroll), sleep(30000)]); + } catch (e) { + console.warn("Behavior Failed", e); + } + } + + let results = null; + + try { + results = await page.evaluate(() => { + return [...document.querySelectorAll('a[href]')].map(el => ({ url: el.href})) + }); + } catch (e) { + console.warn("Link Extraction failed", e); + return; + } + + try { + for (data of results) { + const newUrl = shouldCrawl(scope, seenList, data.url, exclude); + + if (newUrl) { + seenList.add(newUrl); + if (numLinks++ >= limit && limit > 0) { + break; + } + cluster.queue({url: newUrl}); + } + } + } catch (e) { + console.log("Queuing Error: " + e); + } + }); + + numLinks++; + cluster.queue({url}); + + await cluster.idle(); + await cluster.close(); + + // extra wait for all resources to land into WARCs + console.log("Waiting 30s to ensure WARCs are finished"); + await sleep(30000); +} + + +function shouldCrawl(scope, seenList, url, exclude) { + try { + url = new URL(url); + } catch(e) { + return false; + } + + // remove hashtag + url.hash = ""; + + // only queue http/https URLs + if (url.protocol != "http:" && url.protocol != "https:") { + return false; + } + + url = url.href; + + // skip already crawled + if (seenList.has(url)) { + return false; + } + + // if scope is provided, skip urls not in scope + if (scope && !url.startsWith(scope)) { + return false; + } + + // check exclusions + for (const e of exclude) { + if (e.exec(url)) { + //console.log(`Skipping ${url} excluded by ${e}`); + return false; + } + } + + return url; +} + +async function htmlCheck(url, capturePrefix) { + try { + const headers = {"User-Agent": CHROME_USER_AGENT}; + + const agent = url.startsWith("https:") ? HTTPS_AGENT : null; + + const resp = await fetch(url, {method: "HEAD", headers, agent}); + + if (resp.status >= 400) { + console.log(`Skipping ${url}, invalid status ${resp.status}`); + return false; + } + + const contentType = resp.headers.get("Content-Type"); + + // just load if no content-type + if (!contentType) { + return true; + } + + const mime = contentType.split(";")[0]; + + if (HTML_TYPES.includes(mime)) { + return true; + } + + // capture directly + console.log(`Direct capture: ${capturePrefix}${url}`); + const abort = new AbortController(); + const signal = abort.signal; + const resp2 = await fetch(capturePrefix + url, {signal, headers}); + abort.abort(); + + return false; + } catch(e) { + console.log("HTML Check error", e); + // can't confirm not html, so try in browser + return true; + } +} + + +async function autoScroll() { + const canScrollMore = () => + self.scrollY + self.innerHeight < + Math.max( + self.document.body.scrollHeight, + self.document.body.offsetHeight, + self.document.documentElement.clientHeight, + self.document.documentElement.scrollHeight, + self.document.documentElement.offsetHeight + ); + + const scrollOpts = { top: 250, left: 0, behavior: 'auto' }; + + while (canScrollMore()) { + self.scrollBy(scrollOpts); + await new Promise(resolve => setTimeout(resolve, 500)); + } +} + +function sleep(time) { + return new Promise(resolve => setTimeout(resolve, time)); +} + + +async function main() { + const params = require('yargs') + .usage("browsertrix-mini [options]") + .options({ + "url": { + alias: "u", + describe: "The URL to start crawling from", + demandOption: true, + type: "string", + }, + + "workers": { + alias: "w", + describe: "The number of workers to run in parallel", + demandOption: false, + default: 1, + type: "number", + }, + + "waitUntil": { + describe: "Puppeteer page.goto() condition to wait for before continuing", + default: "load", + }, + + "limit": { + describe: "Limit crawl to this number of pages", + default: 0, + type: "number", + }, + + "timeout": { + describe: "Timeout for each page to load (in millis)", + default: 90000, + type: "number", + }, + + "scope": { + describe: "The scope of current page that should be included in the crawl (defaults to the domain of URL)", + }, + + "exclude": { + describe: "Regex of URLs that should be excluded from the crawl." + }, + + "scroll": { + describe: "If set, will autoscroll to bottom of the page", + type: "boolean", + default: false, + + }}).check((argv, option) => { + // Scope for crawl, default to the domain of the URL + const url = new URL(argv.url); + + if (url.protocol !== "http:" && url.protocol != "https:") { + throw new Error("URL must start with http:// or https://"); + } + + // ensure valid url is used (adds trailing slash if missing) + argv.url = url.href; + + if (!argv.scope) { + argv.scope = url.href.slice(0, url.href.lastIndexOf("/") + 1); + } + + // waitUntil condition must be: load, domcontentloaded, networkidle0, networkidle2 + // (see: https://github.com/puppeteer/puppeteer/blob/main/docs/api.md#pagegotourl-options) + if (!WAIT_UNTIL_OPTS.includes(argv.waitUntil)) { + throw new Error("Invalid waitUntil, must be one of: " + WAIT_UNTIL_OPTS.join(",")); + } + + if (argv.exclude) { + if (typeof(argv.exclude) === "string") { + argv.exclude = [new RegExp(argv.exclude)]; + } else { + argv.exclude = argv.exclude.map(e => new RegExp(e)); + } + } else { + argv.exclude = []; + } + + return true; + }) + .argv; + + try { + await run(params); + process.exit(0); + } catch(e) { + console.error("Crawl failed"); + console.error(e); + process.exit(1); + } +} + +main(); + + From 2e2db2f352f9e25627ead81f9e6addaad0b63bc6 Mon Sep 17 00:00:00 2001 From: Ilya Kreymer Date: Fri, 16 Oct 2020 21:02:35 +0000 Subject: [PATCH 035/351] simplification: remove zimit user, su, and run chrome as root with --no-sandbox log exclusion regex --- Dockerfile | 7 ------- crawler.js | 5 ++++- zimit.py | 4 +--- 3 files changed, 5 insertions(+), 11 deletions(-) diff --git a/Dockerfile b/Dockerfile index 667e245..56a4cbb 100644 --- a/Dockerfile +++ b/Dockerfile @@ -22,17 +22,10 @@ RUN pip install git+https://github.com/webrecorder/pywb@patch-work COPY --from=chrome /usr/lib/x86_64-linux-gnu/ /usr/lib/x86_64-linux-gnu/ COPY --from=chrome /lib/x86_64-linux-gnu/libdbus* /lib/x86_64-linux-gnu/ -RUN useradd zimit --shell /bin/bash --create-home \ - && usermod -a -G sudo zimit \ - && echo 'ALL ALL = (ALL) NOPASSWD: ALL' >> /etc/sudoers \ - && echo 'zimit:secret' | chpasswd - WORKDIR /app ADD package.json /app/ -RUN chown -R zimit /app - RUN yarn install ADD config.yaml /app/ diff --git a/crawler.js b/crawler.js index 91da017..6656116 100644 --- a/crawler.js +++ b/crawler.js @@ -28,7 +28,8 @@ async function run(params) { // Chrome Flags, including proxy server const args = [ "--no-xshm", // needed for Chrome >80 (check if puppeteer adds automatically) - `--proxy-server=http://${process.env.PROXY_HOST}:${process.env.PROXY_PORT}` + `--proxy-server=http://${process.env.PROXY_HOST}:${process.env.PROXY_PORT}`, + "--no-sandbox" ]; // prefix for direct capture via pywb @@ -313,6 +314,8 @@ async function main() { }) .argv; + console.log("Exclusions Regexes: ", params.exclude); + try { await run(params); process.exit(0); diff --git a/zimit.py b/zimit.py index d1773ca..da88823 100755 --- a/zimit.py +++ b/zimit.py @@ -96,7 +96,6 @@ def zimit(args=None): # make temp dir for this crawl and make it all writeable+all readable+all exec temp_root_dir = tempfile.mkdtemp(dir=zimit_args.output, prefix=".tmp") - os.chmod(temp_root_dir, stat.S_IROTH | stat.S_IWOTH | stat.S_IXOTH) if not zimit_args.keep: @@ -133,8 +132,7 @@ def zimit(args=None): print("") print("----------") print("running zimit driver: " + cmd_line) - su_cmd = ["su", "zimit", "-c", cmd_line] - subprocess.run(su_cmd, check=True) # nosec + subprocess.run(cmd_args, check=True) # nosec warc_files = glob.glob( os.path.join(temp_root_dir, "collections/capture/archive/*.warc.gz") From fb2232d8b12cc85b55c8a5419eab1db4f0e45a29 Mon Sep 17 00:00:00 2001 From: renaud gaudin Date: Mon, 19 Oct 2020 15:14:46 +0000 Subject: [PATCH 036/351] not using partial paths --- .bandit | 2 -- zimit.py | 12 +++++------- 2 files changed, 5 insertions(+), 9 deletions(-) delete mode 100644 .bandit diff --git a/.bandit b/.bandit deleted file mode 100644 index c10f271..0000000 --- a/.bandit +++ /dev/null @@ -1,2 +0,0 @@ -[bandit] -skips: B607 diff --git a/zimit.py b/zimit.py index da88823..67af547 100755 --- a/zimit.py +++ b/zimit.py @@ -10,10 +10,8 @@ and then calls the Node based driver from argparse import ArgumentParser import os -import stat import tempfile import subprocess -import pwd import atexit import shutil import glob @@ -112,15 +110,15 @@ def zimit(args=None): print("----------") print("pywb init") subprocess.run( - ["wb-manager", "init", "capture"], check=True, cwd=temp_root_dir + ["/usr/bin/env", "wb-manager", "init", "capture"], check=True, cwd=temp_root_dir ) # nosec subprocess.Popen( - ["redis-server"], cwd=temp_root_dir, stdout=subprocess.DEVNULL + ["/usr/bin/env", "redis-server"], cwd=temp_root_dir, stdout=subprocess.DEVNULL ) # nosec subprocess.Popen( - ["uwsgi", os.getcwd() + "/uwsgi.ini"], + ["/usr/bin/env", "uwsgi", os.getcwd() + "/uwsgi.ini"], cwd=temp_root_dir, stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL, @@ -132,7 +130,7 @@ def zimit(args=None): print("") print("----------") print("running zimit driver: " + cmd_line) - subprocess.run(cmd_args, check=True) # nosec + subprocess.run(cmd_args, check=True) warc_files = glob.glob( os.path.join(temp_root_dir, "collections/capture/archive/*.warc.gz") @@ -147,7 +145,7 @@ def zimit(args=None): def get_node_cmd_line(args): - node_cmd = ["node", "crawler.js"] + node_cmd = ["/usr/bin/env", "node", "crawler.js"] for arg in [ "url", "workers", From 904c95963c6bf471f2e409252206c61082f883dd Mon Sep 17 00:00:00 2001 From: Ilya Kreymer Date: Mon, 19 Oct 2020 19:43:10 +0000 Subject: [PATCH 037/351] update to warc2zim 1.2.0, fixes from code review: - pass warc directory to warc2zim, supported in 1.2.0 - use Path for temp_root_dir - use seconds instead of millis for page timeout, update help text - fix help text for --scope - restrict waitUntil to valid choices --- Dockerfile | 2 +- crawler.js | 8 +++++--- zimit.py | 27 ++++++++++++++------------- 3 files changed, 20 insertions(+), 17 deletions(-) diff --git a/Dockerfile b/Dockerfile index 56a4cbb..faf9bea 100644 --- a/Dockerfile +++ b/Dockerfile @@ -15,7 +15,7 @@ ENV PROXY_HOST=localhost \ RUN pip install gevent>=20.9.0 uwsgi -RUN pip install warc2zim==1.1.0 +RUN pip install warc2zim==1.2.0 RUN pip install git+https://github.com/webrecorder/pywb@patch-work diff --git a/crawler.js b/crawler.js index 6656116..9425538 100644 --- a/crawler.js +++ b/crawler.js @@ -261,13 +261,13 @@ async function main() { }, "timeout": { - describe: "Timeout for each page to load (in millis)", - default: 90000, + describe: "Timeout for each page to load (in seconds)", + default: 90, type: "number", }, "scope": { - describe: "The scope of current page that should be included in the crawl (defaults to the domain of URL)", + describe: "The scope of current page that should be included in the crawl (defaults to the immediate directory of URL)", }, "exclude": { @@ -294,6 +294,8 @@ async function main() { argv.scope = url.href.slice(0, url.href.lastIndexOf("/") + 1); } + argv.timeout *= 1000; + // waitUntil condition must be: load, domcontentloaded, networkidle0, networkidle2 // (see: https://github.com/puppeteer/puppeteer/blob/main/docs/api.md#pagegotourl-options) if (!WAIT_UNTIL_OPTS.includes(argv.waitUntil)) { diff --git a/zimit.py b/zimit.py index 67af547..55793e2 100755 --- a/zimit.py +++ b/zimit.py @@ -17,6 +17,7 @@ import shutil import glob import signal import sys +from pathlib import Path from warc2zim.main import warc2zim @@ -33,6 +34,7 @@ def zimit(args=None): parser.add_argument( "--waitUntil", help="Puppeteer page.goto() condition to wait for before continuing", + choices=["load", "domcontentloaded", "networkidle0", "networkidle2"], default="load", ) @@ -42,14 +44,14 @@ def zimit(args=None): parser.add_argument( "--timeout", - help="Timeout for each page to load (in millis)", + help="Timeout for each page to load (in seconds)", type=int, - default=90000, + default=90, ) parser.add_argument( "--scope", - help="The scope of current page that should be included in the crawl (defaults to the domain of URL)", + help="The scope of current page that should be included in the crawl (defaults to the immediate directory of the URL)", ) parser.add_argument( @@ -92,8 +94,8 @@ def zimit(args=None): print("Exiting, invalid warc2zim params") return 2 - # make temp dir for this crawl and make it all writeable+all readable+all exec - temp_root_dir = tempfile.mkdtemp(dir=zimit_args.output, prefix=".tmp") + # make temp dir for this crawl + temp_root_dir = Path(tempfile.mkdtemp(dir=zimit_args.output, prefix=".tmp")) if not zimit_args.keep: @@ -132,17 +134,16 @@ def zimit(args=None): print("running zimit driver: " + cmd_line) subprocess.run(cmd_args, check=True) - warc_files = glob.glob( - os.path.join(temp_root_dir, "collections/capture/archive/*.warc.gz") - ) + warc_files = temp_root_dir / "collections" / "capture" / "archive" + warc2zim_args.append(str(warc_files)) + + num_files = sum(1 for e in warc_files.iterdir()) + print("") print("----------") - print("Processing {0} WARC files to ZIM".format(len(warc_files))) - - res = warc2zim(warc2zim_args + warc_files) - - return res + print("Processing {0} WARC files to ZIM".format(num_files)) + return warc2zim(warc2zim_args) def get_node_cmd_line(args): node_cmd = ["/usr/bin/env", "node", "crawler.js"] From ab4e2e1a14bf27ab08e0702d2f386a043a4b9d4f Mon Sep 17 00:00:00 2001 From: Ilya Kreymer Date: Tue, 20 Oct 2020 15:55:25 +0000 Subject: [PATCH 038/351] cleanup: fix typo in print msg --- zimit.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/zimit.py b/zimit.py index 55793e2..30cec80 100755 --- a/zimit.py +++ b/zimit.py @@ -102,7 +102,7 @@ def zimit(args=None): def cleanup(): print("") print("----------") - print("Cleanup, removing temp dir: " + temp_root_dir) + print("Cleanup, removing temp dir: " + str(temp_root_dir)) shutil.rmtree(temp_root_dir) atexit.register(cleanup) From 91fe76c56e28debd220e223fbcacdd329132f5f0 Mon Sep 17 00:00:00 2001 From: Ilya Kreymer Date: Wed, 21 Oct 2020 06:09:10 +0000 Subject: [PATCH 039/351] work on automated capture of vidoe (#9) - add autoplay behavior to reload known video sites to autoplay - for video/audio on page, queue directly for loading if video.src or audio.src set to valid url, otherwise load through play in browser (may be slower) - add extra wait if reloading for autoplay - timeouts: set timeout for puppeteer-cluster double to timeout of page to avoid hitting that timeout during regular operation - use browser from oldwebtoday/chrome:84 and puppeteer-core instead of puppeteer browser for consistent results - temp testing: use custom wabac.js sw for testing (will use default from warc2zim), using warc2zim fuzzy-match branch for now --- Dockerfile | 6 +++- autoplay.js | 89 ++++++++++++++++++++++++++++++++++++++++++++++++++++ crawler.js | 80 ++++++++++++++++++++++++++++++++++++---------- package.json | 2 +- sw.js | 33 +++++++++++++++++++ yarn.lock | 20 +++++------- zimit.py | 4 +++ 7 files changed, 203 insertions(+), 31 deletions(-) create mode 100644 autoplay.js create mode 100644 sw.js diff --git a/Dockerfile b/Dockerfile index faf9bea..7b2b72b 100644 --- a/Dockerfile +++ b/Dockerfile @@ -15,12 +15,13 @@ ENV PROXY_HOST=localhost \ RUN pip install gevent>=20.9.0 uwsgi -RUN pip install warc2zim==1.2.0 +RUN pip install git+https://github.com/openzim/warc2zim@fuzzy-match RUN pip install git+https://github.com/webrecorder/pywb@patch-work COPY --from=chrome /usr/lib/x86_64-linux-gnu/ /usr/lib/x86_64-linux-gnu/ COPY --from=chrome /lib/x86_64-linux-gnu/libdbus* /lib/x86_64-linux-gnu/ +COPY --from=chrome /opt/google/chrome/ /opt/google/chrome/ WORKDIR /app @@ -32,6 +33,9 @@ ADD config.yaml /app/ ADD uwsgi.ini /app/ ADD zimit.py /app/ ADD crawler.js /app/ +ADD autoplay.js /app/ +ADD sw.js /app/ + RUN ln -s /app/zimit.py /usr/bin/zimit CMD ["zimit"] diff --git a/autoplay.js b/autoplay.js new file mode 100644 index 0000000..d36b958 --- /dev/null +++ b/autoplay.js @@ -0,0 +1,89 @@ +(() => { + + function run() { + if (window.navigator.__crawler_autoplay) { + return; + } + + //console.log("checking autoplay for " + document.location.href); + window.navigator.__crawler_autoplay = true; + + const specialActions = [ + { + rx: /w\.soundcloud\.com/, + check(url) { + const autoplay = url.searchParams.get('auto_play'); + return autoplay === 'true'; + }, + handle(url) { + url.searchParams.set('auto_play', 'true'); + // set continuous_play to true in order to handle + // a playlist etc + url.searchParams.set('continuous_play', 'true'); + self.location.href = url.href; + }, + }, + { + rx: [/player\.vimeo\.com/, /youtube\.com\/embed\//], + check(url) { + const autoplay = url.searchParams.get('autoplay'); + return autoplay === '1'; + }, + handle(url) { + url.searchParams.set('autoplay', '1'); + if (window.__crawler_autoplayLoad) { + window.__crawler_autoplayLoad(url.href); + } + self.location.href = url.href; + }, + }, + ]; + const url = new URL(self.location.href); + for (let i = 0; i < specialActions.length; i++) { + if (Array.isArray(specialActions[i].rx)) { + const rxs = specialActions[i].rx; + for (let j = 0; j < rxs.length; j++) { + if (url.href.search(rxs[j]) >= 0) { + if (specialActions[i].check(url)) return; + return specialActions[i].handle(url); + } + } + } else if (url.href.search(specialActions[i].rx) >= 0) { + if (specialActions[i].check(url)) return; + return specialActions[i].handle(url); + } + } + } + + document.addEventListener("readystatechange", run); + + if (document.readyState === "complete") { + run(); + } + + + const mediaSet = new Set(); + + setInterval(() => { + const medias = document.querySelectorAll("video, audio"); + + for (const media of medias) { + try { + if (media.src && !mediaSet.has(media.src)) { + if (window.__crawler_queueUrls && (media.src.startsWith("http:") || media.src.startsWith("https:"))) { + window.__crawler_queueUrls(media.src); + } + mediaSet.add(media.src); + } else if (!media.src) { + media.play(); + } + } catch(e) { + console.log(e); + } + } + }, 3000); + + + +})(); + diff --git a/crawler.js b/crawler.js index 9425538..423ceb4 100644 --- a/crawler.js +++ b/crawler.js @@ -1,4 +1,5 @@ -const puppeteer = require("puppeteer"); +const fs = require("fs"); +const puppeteer = require("puppeteer-core"); const { Cluster } = require("puppeteer-cluster"); const child_process = require("child_process"); const fetch = require("node-fetch"); @@ -24,30 +25,42 @@ process.once('SIGTERM', (code) => { }); +const autoplayScript = fs.readFileSync("./autoplay.js", "utf-8"); + + +// prefix for direct capture via pywb +const capturePrefix = `http://${process.env.PROXY_HOST}:${process.env.PROXY_PORT}/capture/record/id_/`; +const headers = {"User-Agent": CHROME_USER_AGENT}; + + async function run(params) { // Chrome Flags, including proxy server const args = [ "--no-xshm", // needed for Chrome >80 (check if puppeteer adds automatically) `--proxy-server=http://${process.env.PROXY_HOST}:${process.env.PROXY_PORT}`, - "--no-sandbox" + "--no-sandbox", + "--disable-background-media-suspend", + "--autoplay-policy=no-user-gesture-required", ]; - // prefix for direct capture via pywb - const capturePrefix = `http://${process.env.PROXY_HOST}:${process.env.PROXY_PORT}/capture/record/id_/`; - // Puppeter Options const puppeteerOptions = { headless: true, - //executablePath: "/usr/bin/google-chrome", + executablePath: "/opt/google/chrome/google-chrome", ignoreHTTPSErrors: true, args }; + // params + const { url, waitUntil, timeout, scope, limit, exclude, scroll } = params; + // Puppeteer Cluster init and options const cluster = await Cluster.launch({ concurrency: Cluster.CONCURRENCY_PAGE, maxConcurrency: Number(params.workers) || 1, skipDuplicateUrls: true, + // total timeout for cluster + timeout: timeout * 2, puppeteerOptions, puppeteer, monitor: true @@ -56,9 +69,6 @@ async function run(params) { // Maintain own seen list const seenList = new Set(); - // params - const { url, waitUntil, timeout, scope, limit, exclude, scroll } = params; - //console.log("Limit: " + limit); // links crawled counter @@ -72,12 +82,46 @@ async function run(params) { return; } + //page.on('console', message => console.log(`${message.type()} ${message.text()}`)); + //page.on('pageerror', message => console.warn(message)); + //page.on('error', message => console.warn(message)); + //page.on('requestfailed', message => console.warn(message._failureText)); + const mediaResults = []; + + await page.exposeFunction('__crawler_queueUrls', (url) => { + mediaResults.push(directCapture(url)); + }); + + let waitForVideo = false; + + await page.exposeFunction('__crawler_autoplayLoad', (url) => { + console.log("*** Loading autoplay URL: " + url); + waitForVideo = true; + }); + + try { + await page.evaluateOnNewDocument(autoplayScript); + } catch(e) { + console.log(e); + } + try { await page.goto(url, {waitUntil, timeout}); } catch (e) { console.log(`Load timeout for ${url}`); } + try { + await Promise.all(mediaResults); + } catch (e) { + console.log(`Error loading media URLs`, e); + } + + if (waitForVideo) { + console.log("Extra wait 15s for video loading"); + await sleep(15000); + } + if (scroll) { try { await Promise.race([page.evaluate(autoScroll), sleep(30000)]); @@ -166,8 +210,6 @@ function shouldCrawl(scope, seenList, url, exclude) { async function htmlCheck(url, capturePrefix) { try { - const headers = {"User-Agent": CHROME_USER_AGENT}; - const agent = url.startsWith("https:") ? HTTPS_AGENT : null; const resp = await fetch(url, {method: "HEAD", headers, agent}); @@ -191,11 +233,7 @@ async function htmlCheck(url, capturePrefix) { } // capture directly - console.log(`Direct capture: ${capturePrefix}${url}`); - const abort = new AbortController(); - const signal = abort.signal; - const resp2 = await fetch(capturePrefix + url, {signal, headers}); - abort.abort(); + await directCapture(url); return false; } catch(e) { @@ -205,6 +243,15 @@ async function htmlCheck(url, capturePrefix) { } } +async function directCapture(url) { + console.log(`Direct capture: ${capturePrefix}${url}`); + const abort = new AbortController(); + const signal = abort.signal; + const resp2 = await fetch(capturePrefix + url, {signal, headers}); + abort.abort(); +} + + async function autoScroll() { const canScrollMore = () => @@ -317,6 +364,7 @@ async function main() { .argv; console.log("Exclusions Regexes: ", params.exclude); + console.log("Scope: ", params.scope); try { await run(params); diff --git a/package.json b/package.json index e991921..3820178 100644 --- a/package.json +++ b/package.json @@ -8,8 +8,8 @@ "dependencies": { "abort-controller": "^3.0.0", "node-fetch": "^2.6.1", - "puppeteer": "^5.3.0", "puppeteer-cluster": "^0.22.0", + "puppeteer-core": "^5.3.1", "yargs": "^16.0.3" } } diff --git a/sw.js b/sw.js new file mode 100644 index 0000000..9989ca1 --- /dev/null +++ b/sw.js @@ -0,0 +1,33 @@ +/*! sw.js is part of Webrecorder project. Copyright (C) 2020, Webrecorder Software. Licensed under the Affero General Public License v3. */ +!function(e,t){for(var n in t)e[n]=t[n]}(self,function(e){var t={};function n(r){if(t[r])return t[r].exports;var i=t[r]={i:r,l:!1,exports:{}};return e[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var i in e)n.d(r,i,function(t){return e[t]}.bind(null,i));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="/dist/",n(n.s=92)}([function(e,t,n){"use strict";function r(e,t){for(const n of t)if(e.startsWith(n))return!0;return!1}function i(e,t){for(const n of t)if(e.indexOf(n)>=0)return!0;return!1}function s(e){return e.replace(/[-:T]/g,"").slice(0,14)}function o(e){return e.replace(/[-:.TZ]/g,"")}function a(e){if(!e)return new Date;e.length<17&&(e+="00000101000000000".substr(e.length));const t=e.substring(0,4)+"-"+e.substring(4,6)+"-"+e.substring(6,8)+"T"+e.substring(8,10)+":"+e.substring(10,12)+":"+e.substring(12,14)+"."+e.substring(14)+"Z";return new Date(t)}function u(e){if(!e)return"";try{return""+parseInt(e.getTime()/1e3)}catch(e){return""}}async function l(e,t){const n="string"==typeof e?(new TextEncoder).encode(e):e,r=await crypto.subtle.digest(t,n);return t+":"+new Uint8Array(r).map(e=>e.toString(16).padStart(2,"0")).join("")}function c(e){try{return new Headers(e)}catch(t){for(let t of Object.keys(e)){const n=e[t],r=n.replace(/[\r\n]+/g,", ");n!=r&&(e[t]=r)}return new Headers(e)}}n.d(t,"l",(function(){return r})),n.d(t,"c",(function(){return i})),n.d(t,"f",(function(){return s})),n.d(t,"g",(function(){return o})),n.d(t,"m",(function(){return a})),n.d(t,"e",(function(){return u})),n.d(t,"d",(function(){return l})),n.d(t,"i",(function(){return d})),n.d(t,"j",(function(){return c})),n.d(t,"k",(function(){return f})),n.d(t,"h",(function(){return p})),n.d(t,"a",(function(){return w})),n.d(t,"b",(function(){return g}));const h=[101,204,205,304];function d(e){return h.includes(e)}function p(e){return"XMLHttpRequest"===e.headers.get("X-Pywb-Requested-With")}function f(e,t){let n,r;return t||(t="Sorry, this url was not found in the archive."),"script"===e.destination||e.headers.get("x-pywb-requested-with")?(n=JSON.stringify(t),r="application/json"):(n=t,r="text/html"),new Response(n,{status:404,statusText:"Not Found",headers:{"Content-Type":r}})}class m{constructor(e,t){this.url=e,this.status=t}}class w extends m{}class g{}},function(e,t,n){"use strict";n.d(t,"b",(function(){return o})),n.d(t,"a",(function(){return a})),n.d(t,"d",(function(){return A})),n.d(t,"f",(function(){return D})),n.d(t,"e",(function(){return E})),n.d(t,"c",(function(){return P}));var r=n(83);const i=new TextDecoder("utf-8");class s extends r.Inflate{constructor(e,t){super(e),this.reader=t}onEnd(e){this.err=e,this.err||(this.reader._rawOffset+=this.strm.total_in)}}class o{static concatChunks(e,t){if(1===e.length)return e[0];const n=new Uint8Array(t);let r=0;for(const t of e)n.set(t,r),r+=t.byteLength;return n}static splitChunk(e,t){return[e.slice(0,t),e.slice(t)]}static async readFully(e){const t=[];let n=0;for await(const r of e)t.push(r),n+=r.byteLength;return o.concatChunks(t,n)}getReadableStream(){const e=this[Symbol.asyncIterator]();return new ReadableStream({pull:t=>e.next().then(e=>{e.done||!e.value?t.close():t.enqueue(e.value)})})}readFully(){return o.readFully(this)}async readline(e=0){const t=await this.readlineRaw(e);return t?i.decode(t):""}async*iterLines(e=0){let t=null;for(;t=await this.readline(e);)yield t}}class a extends o{constructor(e,t="gzip",n=!1){if(super(),this.compressed=t,this.opts={raw:"deflateRaw"===t},this.inflator=t?new s(this.opts,this):null,"function"!=typeof e[Symbol.asyncIterator])if("function"==typeof e.getReader)e=a.fromReadable(e.getReader());else if("function"==typeof e.read)e=a.fromReadable(e);else{if("function"!=typeof e[Symbol.iterator])throw new TypeError("Invalid Stream Source");e=a.fromIter(e)}this._sourceIter=n?this.dechunk(e):e[Symbol.asyncIterator](),this.lastValue=null,this.errored=!1,this._savedChunk=null,this._rawOffset=0,this._readOffset=0,this.numChunks=0}async _loadNext(){const e=await this._sourceIter.next();return e.done?null:e.value}async*dechunk(e){const t=e instanceof a?e:new a(e,null);let n=-1,r=!0;for(;0!=n;){const e=await t.readlineRaw(64);let s=null;if(!(n=parseInt(i.decode(e),16))||n>2**32){if(Number.isNaN(n)||n>2**32){r||(this.errored=!0),yield e;break}}else if((s=await t.readSize(n)).length!=n){r?yield e:this.errored=!0,yield s;break}const o=await t.readSize(2);if(13!=o[0]||10!=o[1]){r?yield e:this.errored=!0,yield s,yield o;break}if(r=!1,!s||0===n)return;yield s}yield*t}_unread(e){e.length&&(this._readOffset-=e.length,this._savedChunk&&console.log("Already have chunk!"),this._savedChunk=e)}async _next(){if(this._savedChunk){const e=this._savedChunk;return this._savedChunk=null,e}if(this.compressed){const e=this._getNextChunk();if(e)return e}let e=await this._loadNext();for(;this.compressed&&e;){this._push(e);const t=this._getNextChunk(e);if(t)return t;e=await this._loadNext()}return e}_push(e){this.lastValue=e,this.inflator.ended&&(this.inflator=new s(this.opts,this)),this.inflator.push(e),this.inflator.err&&this.inflator.ended&&"deflate"===this.compressed&&!1===this.opts.raw&&0===this.numChunks&&(this.opts.raw=!0,this.compressed="deflateRaw",this.inflator=new s(this.opts,this),this.inflator.push(e))}_getNextChunk(e){for(;;){if(this.inflator.chunks.length>0)return this.numChunks++,this.inflator.chunks.shift();if(this.inflator.ended){if(0!==this.inflator.err)return this.compressed=null,e;const t=this.inflator.strm.avail_in;if(t&&this.lastValue){this._push(this.lastValue.slice(-t));continue}}return null}}async*[Symbol.asyncIterator](){let e=null;for(;e=await this._next();)this._readOffset+=e.length,yield e}async readlineRaw(e){const t=[];let n,r=0,i=null;for await(const s of this){if(e&&r+s.byteLength>e){i=s,n=e-r-1;const t=s.slice(0,n+1).indexOf(10);t>=0&&(n=t);break}if((n=s.indexOf(10))>=0){i=s;break}t.push(s),r+=s.byteLength}if(i){const[e,s]=a.splitChunk(i,n+1);t.push(e),r+=e.byteLength,this._unread(s)}else if(!t.length)return null;return a.concatChunks(t,r)}readFully(){return this.readSize()}async readSize(e=-1,t=!1){const n=[];let r=0;for await(const i of this){if(e>=0){if(i.length>e){const[s,o]=a.splitChunk(i,e);t||n.push(s),r+=s.byteLength,this._unread(o);break}if(i.length===e){t||n.push(i),r+=i.byteLength,e=0;break}e-=i.length}t||n.push(i),r+=i.byteLength}return t?r:a.concatChunks(n,r)}getReadOffset(){return this._readOffset}getRawOffset(){return this.compressed?this._rawOffset:this._readOffset}getRawLength(e){return this.compressed?this.inflator.strm.total_in:this._readOffset-e}static fromReadable(e){return{async*[Symbol.asyncIterator](){let t=null;for(;(t=await e.read())&&!t.done;)yield t.value}}}static fromIter(e){return{async*[Symbol.asyncIterator](){for(const t of e)yield t}}}}class u extends o{constructor(e,t,n=0){super(),this.sourceIter=e,this.length=t,this.limit=t,this.skip=n}setLimitSkip(e,t=0){this.limit=e,this.skip=t}async*[Symbol.asyncIterator](){if(!(this.limit<=0))for await(let e of this.sourceIter){if(this.skip>0){if(!(e.length>=this.skip)){this.skip-=e.length;continue}{const[t,n]=u.splitChunk(e,this.skip);e=n,this.skip=0}}if(e.length>this.limit){const[t,n]=u.splitChunk(e,this.limit);e=t,this.sourceIter._unread(n)}if(e.length&&(this.limit-=e.length,yield e),this.limit<=0)break}}async readlineRaw(e){if(this.limit<=0)return null;const t=await this.sourceIter.readlineRaw(e?Math.min(e,this.limit):this.limit);return this.limit-=t.length,t}async skipFully(){const e=this.limit;for(;this.limit>0;)this.limit-=await this.sourceIter.readSize(this.limit,!0);return e}}const l=new Uint8Array([13,10]),c=new Uint8Array([13,10,13,10]);class h{constructor({statusline:e,headers:t}){this.statusline=e,this.headers=t}toString(){const e=[this.statusline];for(const[t,n]of this.headers)e.push(`${t}: ${n}`);return e.join("\r\n")+"\r\n"}async*iterSerialize(e){yield e.encode(this.statusline),yield l;for(const[t,n]of this.headers)yield e.encode(`${t}: ${n}\r\n`)}_parseResponseStatusLine(){const e=p(this.statusline," ",2);this._protocol=e[0],this._statusCode=e.length>1?Number(e[1]):"",this._statusText=e.length>2?e[2]:""}get statusCode(){return void 0===this._statusCode&&this._parseResponseStatusLine(),this._statusCode}get protocol(){return void 0===this._protocol&&this._parseResponseStatusLine(),this._protocol}get statusText(){return void 0===this._statusText&&this._parseResponseStatusLine(),this._statusText}_parseRequestStatusLine(){const e=this.statusline.split(" ",2);this._method=e[0],this._requestPath=e.length>1?e[1]:""}get method(){return void 0===this._method&&this._parseRequestStatusLine(),this._method}get requestPath(){return void 0===this._requestPath&&this._parseRequestStatusLine(),this._requestPath}}class d{startsWithSpace(e){const t=e.charAt(0);return" "===t||"\t"===t}async parse(e,{headersClass:t=Map}={}){const n=await e.readline();if(!n)return null;let r=n.trimEnd();const i=new t;if(!r)return null;let s=(await e.readline()).trimEnd();for(;s;){let[t,n]=p(s,":",1);n&&(t=t.trimStart(),n=n.trim());let r=(await e.readline()).trimEnd();for(;this.startsWithSpace(r);)n&&(n+=r),r=(await e.readline()).trimEnd();if(n)try{i.set(t,n)}catch(e){}s=r}return new h({statusline:r,headers:i,totalRead:this.totalRead})}}function p(e,t,n){const r=e.split(t),i=r.slice(0,n);return r.slice(n).length>0&&i.push(r.slice(n).join(t)),i}var f=n(84),m=n.n(f);const w=new TextDecoder("utf-8"),g=new TextEncoder("utf-8"),b="WARC/1.1",_="WARC/1.0",y="http://netpreserve.org/warc/1.0/revisit/identical-payload-digest",v="http://netpreserve.org/warc/1.1/revisit/identical-payload-digest",x={warcinfo:"application/warc-fields",response:"application/http; msgtype=response",revisit:"application/http; msgtype=response",request:"application/http; msgtype=request",metadata:"application/warc-fields"};class E extends o{static create({url:e,date:t,type:n,warcHeaders:r={},filename:i="",httpHeaders:s={},status:o="200",statusText:a="OK",httpVersion:u="HTTP/1.1",warcVersion:l=_,keepHeadersCase:c=!0,refersToUrl:d,refersToDate:p}={},f){function w(e){return l===_&&"Z"!=(e=e.split(".")[0]).charAt(t.length-1)&&(e+="Z"),e}t||(t=(new Date).toISOString()),t=w(t),r={...r},"warcinfo"===n?i&&(r["WARC-Filename"]=i):r["WARC-Target-URI"]=e,r["WARC-Date"]=t,r["WARC-Type"]=n,"revisit"===n&&(r["WARC-Profile"]=l===b?v:y,r["WARC-Refers-To-Target-URI"]=d,r["WARC-Refers-To-Date"]=w(p)),(r=new h({statusline:l,headers:c?new Map(Object.entries(r)):new Headers(r)})).headers.get("WARC-Record-ID")||r.headers.set("WARC-Record-ID",``),!r.headers.get("Content-Type")&&x[n]&&r.headers.set("Content-Type",x[n]);const g=new E({warcHeaders:r,reader:f});switch(n){case"response":case"request":case"revisit":g.httpHeaders=new h({statusline:u+" "+o+" "+a,headers:c?new Map(Object.entries(s)):new Headers(s)})}return g}static createWARCInfo(e={},t){return e.type="warcinfo",E.create(e,async function*(){for(const[e,n]of Object.entries(t))yield g.encode(`${e}: ${n}\r\n`)}())}constructor({warcHeaders:e,reader:t}){super(),this.warcHeaders=e,this._reader=t,this._contentReader=null,this.payload=null,this.httpHeaders=null,this.consumed=!1,this.fixUp()}getResponseInfo(){const e=this.httpHeaders;return e?{headers:e.headers,status:e.statusCode,statusText:e.statusText}:null}fixUp(){const e=this.warcHeaders.headers.get("WARC-Target-URI");e&&e.startsWith("<")&&e.endsWith(">")&&this.warcHeaders.headers.set("WARC-Target-URI",e.slice(1,-1))}async readFully(e=!1){if(this.httpHeaders){if(this._contentReader&&!e)throw new TypeError("WARC Record decoding already started, but requesting raw payload");if(e&&"raw"===this.consumed&&this.payload)return await this._createDecodingReader([this.payload]).readFully()}return this.payload?this.payload:(e?(this.payload=await super.readFully(),this.consumed="content"):(this.payload=await E.readFully(this._reader),this.consumed="raw"),this.payload)}get reader(){if(this._contentReader)throw new TypeError("WARC Record decoding already started, but requesting raw payload");return this._reader}get contentReader(){return this.httpHeaders?(this._contentReader||(this._contentReader=this._createDecodingReader(this._reader)),this._contentReader):this._reader}_createDecodingReader(e){let t=this.httpHeaders.headers.get("content-encoding"),n=this.httpHeaders.headers.get("transfer-encoding");const r="chunked"===n;return t||r||(t=n),new a(e,t,r)}async readlineRaw(e){if(this.consumed)throw new Error("Record already consumed.. Perhaps a promise was not awaited?");return this.contentReader.readlineRaw(e)}async contentText(){const e=await this.readFully(!0);return w.decode(e)}async*[Symbol.asyncIterator](){for await(const e of this.contentReader)if(yield e,this.consumed)throw new Error("Record already consumed.. Perhaps a promise was not awaited?");this.consumed="content"}async skipFully(){if(this.consumed)return;const e=await this._reader.skipFully();return this.consumed="skipped",e}warcHeader(e){return this.warcHeaders.headers.get(e)}get warcType(){return this.warcHeaders.headers.get("WARC-Type")}get warcTargetURI(){return this.warcHeaders.headers.get("WARC-Target-URI")}get warcDate(){return this.warcHeaders.headers.get("WARC-Date")}get warcRefersToTargetURI(){return this.warcHeaders.headers.get("WARC-Refers-To-Target-URI")}get warcRefersToDate(){return this.warcHeaders.headers.get("WARC-Refers-To-Date")}get warcPayloadDigest(){return this.warcHeaders.headers.get("WARC-Payload-Digest")}get warcBlockDigest(){return this.warcHeaders.headers.get("WARC-Block-Digest")}get warcContentType(){return this.warcHeaders.headers.get("Content-Type")}get warcContentLength(){return Number(this.warcHeaders.headers.get("Content-Length"))}}class A{static parse(e,t){return new A(e,t).parse()}static iterRecords(e,t){return new A(e,t)[Symbol.asyncIterator]()}constructor(e,{keepHeadersCase:t=!1,parseHttp:n=!0}={}){this._offset=0,this._warcHeadersLength=0,this._headersClass=t?Map:Headers,this._parseHttp=n,this._atRecordBoundary=!0,e instanceof a||(e=new a(e)),this._reader=e,this._record=null}async readToNextRecord(){!this._atRecordBoundary&&this._reader&&this._record&&(await this._record.skipFully(),await this._reader.readSize(4,!0),this._atRecordBoundary=!0)}_initRecordReader(e){return new u(this._reader,Number(e.headers.get("Content-Length")||0))}async parse(){await this.readToNextRecord(),this._offset=this._reader.getRawOffset();const e=new d,t=await e.parse(this._reader,{headersClass:this._headersClass});if(!t)return null;this._warcHeadersLength=this._reader.getReadOffset();const n=new E({warcHeaders:t,reader:this._initRecordReader(t)});if(this._atRecordBoundary=!1,this._record=n,this._parseHttp)switch(n.warcType){case"response":case"request":await this._addHttpHeaders(n,e,this._reader);break;case"revisit":n.warcContentLength>0&&await this._addHttpHeaders(n,e,this._reader)}return n}get offset(){return this._offset}get recordLength(){return this._reader.getRawLength(this._offset)}async*[Symbol.asyncIterator](){let e=null;for(;e=await this.parse(this._reader);)yield e;this._record=null}async _addHttpHeaders(e,t){const n=await t.parse(this._reader,{headersClass:this._headersClass});e.httpHeaders=n;const r=this._reader.getReadOffset()-this._warcHeadersLength;e.reader.setLimitSkip&&e.reader.setLimitSkip(e.warcContentLength-r)}}var S=n(85),k=n.n(S),T=n(86);const C=new TextEncoder;class D extends o{static async serialize(e,t){const n=new D(e,t);return await n.readFully()}static base16(e){return Array.from(new Uint8Array(e)).map(e=>e.toString(16).padStart(2,"0")).join("")}constructor(e,t={}){super(),this.record=e,this.gzip=t.gzip;const n=t&&t.digest||{};"revisit"===e.warcType||"warcinfo"===e.warcType||e.warcPayloadDigest&&e.warcBlockDigest?this.digestAlgo=null:(this.digestAlgo=n.algo||"sha-256",this.digestAlgoPrefix=n.prefix||"sha-256:",this.digestBase32=n.base32||!1)}async*[Symbol.asyncIterator](){if(!this.gzip)return void(yield*this.generateRecord());const e=new T.Deflate({gzip:!0});let t=null;for await(const n of this.generateRecord())for(t&&t.length>0&&e.push(t),t=n;e.chunks.length;)yield e.chunks.shift();e.push(t,!0),yield e.result}async digestMessage(e){const t=await crypto.subtle.digest(this.digestAlgo,e);return this.digestAlgoPrefix+(this.digestBase32?k.a.encode(t):D.base16(t))}async*generateRecord(){let e=0,t=null;this.record.httpHeaders&&(e+=(t=C.encode(this.record.httpHeaders.toString()+"\r\n")).length);const n=await this.record.readFully();if(e+=n.length,this.digestAlgo){const r=await this.digestMessage(n),i=t?await this.digestMessage(D.concatChunks([t,n],e)):r;this.record.warcHeaders.headers.set("WARC-Payload-Digest",r),this.record.warcHeaders.headers.set("WARC-Block-Digest",i)}this.record.warcHeaders.headers.set("Content-Length",e);const r=C.encode(this.record.warcHeaders.toString());yield r,yield l,t&&(yield t),yield n,yield c}}const R="offset,warc-type,warc-target-uri".split(",");class O{constructor(e,t){this.opts=e,this.out=t}serialize(e){return JSON.stringify(e)+"\n"}write(e){this.out.write(this.serialize(e))}async run(e){for await(const t of this.iterIndex(e))this.write(t)}async*iterIndex(e){const t={strictHeaders:!0,parseHttp:this.parseHttp};for(const{filename:n,reader:r}of e){if(!n||!r)continue;const e=new A(r,t);for await(const t of e){await t.skipFully();const r=this.indexRecord(t,e,n);r&&(yield r)}}}indexRecord(e,t,n){if(this.filterRecord&&!this.filterRecord(e))return null;const r={},i={offset:t.offset,length:t.recordLength,filename:n};for(const t of this.fields)null!=i[t]?r[t]=i[t]:this.setField(t,e,r);return r}setField(e,t,n){const r=this.getField(e,t);null!=r&&(n[e]=r)}getField(e,t){return"http:status"===e?!t.httpHeaders||"response"!==t.warcType&&"revisit"!==t.warcType?null:t.httpHeaders.statusCode:e.startsWith("http:")?t.httpHeaders?t.httpHeaders.headers.get(e.slice(5)):null:t.warcHeaders.headers.get(e)}}class I extends O{constructor(e={},t=null){if(super(e,t),e.fields){this.fields=e.fields.split(","),this.parseHttp=!1;for(const e of this.fields)if(e.startsWith("http:")){this.parseHttp=!0;break}}else this.fields=R,this.parseHttp=!1}}const N="urlkey,timestamp,url,mime,status,digest,length,offset,filename".split(","),F="urlkey,timestamp,url,mime,status,digest,redirect,meta,length,offset,filename".split(",");class P extends I{constructor(e={},t=null){switch(super(e,t),this.includeAll=e.all,this.fields=N,this.parseHttp=!0,e.format){case"cdxj":this.serialize=this.serializeCDXJ;break;case"cdx":this.serialize=this.serializeCDX11}}filterRecord(e){if(this.includeAll)return!0;const t=e.warcType;return"request"!==t&&"warcinfo"!==t}serializeCDXJ(e){const{urlkey:t,timestamp:n}=e;return delete e.urlkey,delete e.timestamp,`${t} ${n} ${JSON.stringify(e)}\n`}serializeCDX11(e){const t=[];for(const n of F)t.push(null!=e[n]?e[n]:"-");return t.join(" ")+"\n"}getField(e,t){let n=null;switch(e){case"urlkey":return this.getSurt(t.warcTargetURI);case"timestamp":return(n=t.warcDate).replace(/[-:T]/g,"").slice(0,14);case"url":return t.warcTargetURI;case"mime":switch(t.warcType){case"revisit":return"warc/revisit";case"response":case"request":e="http:content-type";break;default:e="content-type"}return(n=super.getField(e,t))?n.split(";",1)[0].trim():null;case"status":return super.getField("http:status",t);case"digest":return(n=t.warcPayloadDigest)?n.split(":",2)[1]:null}}getSurt(e){try{const t=new URL(e);let n=t.hostname.split(".").reverse().join(",");return t.port&&(n+=":"+t.port),n+=")",(n+=t.pathname).toLowerCase()}catch(t){return e}}}},function(e,t,n){"use strict";var r=n(21),i=["kind","resolve","construct","instanceOf","predicate","represent","defaultStyle","styleAliases"],s=["scalar","sequence","mapping"];e.exports=function(e,t){var n,o;if(t=t||{},Object.keys(t).forEach((function(t){if(-1===i.indexOf(t))throw new r('Unknown option "'+t+'" is met in definition of "'+e+'" YAML type.')})),this.tag=e,this.kind=t.kind||null,this.resolve=t.resolve||function(){return!0},this.construct=t.construct||function(e){return e},this.instanceOf=t.instanceOf||null,this.predicate=t.predicate||null,this.represent=t.represent||null,this.defaultStyle=t.defaultStyle||null,this.styleAliases=(n=t.styleAliases||null,o={},null!==n&&Object.keys(n).forEach((function(e){n[e].forEach((function(t){o[String(t)]=e}))})),o),-1===s.indexOf(this.kind))throw new r('Unknown kind "'+this.kind+'" is specified for "'+e+'" YAML type.')}},function(e,t,n){"use strict";(function(e){ +/*! + * The buffer module from node.js, for the browser. + * + * @author Feross Aboukhadijeh + * @license MIT + */ +var r=n(57),i=n(93),s=n(55);function o(){return u.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function a(e,t){if(o()=o())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+o().toString(16)+" bytes");return 0|e}function f(e,t){if(u.isBuffer(e))return e.length;if("undefined"!=typeof ArrayBuffer&&"function"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(e)||e instanceof ArrayBuffer))return e.byteLength;"string"!=typeof e&&(e=""+e);var n=e.length;if(0===n)return 0;for(var r=!1;;)switch(t){case"ascii":case"latin1":case"binary":return n;case"utf8":case"utf-8":case void 0:return W(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*n;case"hex":return n>>>1;case"base64":return z(e).length;default:if(r)return W(e).length;t=(""+t).toLowerCase(),r=!0}}function m(e,t,n){var r=!1;if((void 0===t||t<0)&&(t=0),t>this.length)return"";if((void 0===n||n>this.length)&&(n=this.length),n<=0)return"";if((n>>>=0)<=(t>>>=0))return"";for(e||(e="utf8");;)switch(e){case"hex":return R(this,t,n);case"utf8":case"utf-8":return k(this,t,n);case"ascii":return C(this,t,n);case"latin1":case"binary":return D(this,t,n);case"base64":return S(this,t,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return O(this,t,n);default:if(r)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),r=!0}}function w(e,t,n){var r=e[t];e[t]=e[n],e[n]=r}function g(e,t,n,r,i){if(0===e.length)return-1;if("string"==typeof n?(r=n,n=0):n>2147483647?n=2147483647:n<-2147483648&&(n=-2147483648),n=+n,isNaN(n)&&(n=i?0:e.length-1),n<0&&(n=e.length+n),n>=e.length){if(i)return-1;n=e.length-1}else if(n<0){if(!i)return-1;n=0}if("string"==typeof t&&(t=u.from(t,r)),u.isBuffer(t))return 0===t.length?-1:b(e,t,n,r,i);if("number"==typeof t)return t&=255,u.TYPED_ARRAY_SUPPORT&&"function"==typeof Uint8Array.prototype.indexOf?i?Uint8Array.prototype.indexOf.call(e,t,n):Uint8Array.prototype.lastIndexOf.call(e,t,n):b(e,[t],n,r,i);throw new TypeError("val must be string, number or Buffer")}function b(e,t,n,r,i){var s,o=1,a=e.length,u=t.length;if(void 0!==r&&("ucs2"===(r=String(r).toLowerCase())||"ucs-2"===r||"utf16le"===r||"utf-16le"===r)){if(e.length<2||t.length<2)return-1;o=2,a/=2,u/=2,n/=2}function l(e,t){return 1===o?e[t]:e.readUInt16BE(t*o)}if(i){var c=-1;for(s=n;sa&&(n=a-u),s=n;s>=0;s--){for(var h=!0,d=0;di&&(r=i):r=i;var s=t.length;if(s%2!=0)throw new TypeError("Invalid hex string");r>s/2&&(r=s/2);for(var o=0;o>8,i=n%256,s.push(i),s.push(r);return s}(t,e.length-n),e,n,r)}function S(e,t,n){return 0===t&&n===e.length?r.fromByteArray(e):r.fromByteArray(e.slice(t,n))}function k(e,t,n){n=Math.min(e.length,n);for(var r=[],i=t;i239?4:l>223?3:l>191?2:1;if(i+h<=n)switch(h){case 1:l<128&&(c=l);break;case 2:128==(192&(s=e[i+1]))&&(u=(31&l)<<6|63&s)>127&&(c=u);break;case 3:s=e[i+1],o=e[i+2],128==(192&s)&&128==(192&o)&&(u=(15&l)<<12|(63&s)<<6|63&o)>2047&&(u<55296||u>57343)&&(c=u);break;case 4:s=e[i+1],o=e[i+2],a=e[i+3],128==(192&s)&&128==(192&o)&&128==(192&a)&&(u=(15&l)<<18|(63&s)<<12|(63&o)<<6|63&a)>65535&&u<1114112&&(c=u)}null===c?(c=65533,h=1):c>65535&&(c-=65536,r.push(c>>>10&1023|55296),c=56320|1023&c),r.push(c),i+=h}return function(e){var t=e.length;if(t<=T)return String.fromCharCode.apply(String,e);var n="",r=0;for(;r0&&(e=this.toString("hex",0,n).match(/.{2}/g).join(" "),this.length>n&&(e+=" ... ")),""},u.prototype.compare=function(e,t,n,r,i){if(!u.isBuffer(e))throw new TypeError("Argument must be a Buffer");if(void 0===t&&(t=0),void 0===n&&(n=e?e.length:0),void 0===r&&(r=0),void 0===i&&(i=this.length),t<0||n>e.length||r<0||i>this.length)throw new RangeError("out of range index");if(r>=i&&t>=n)return 0;if(r>=i)return-1;if(t>=n)return 1;if(this===e)return 0;for(var s=(i>>>=0)-(r>>>=0),o=(n>>>=0)-(t>>>=0),a=Math.min(s,o),l=this.slice(r,i),c=e.slice(t,n),h=0;hi)&&(n=i),e.length>0&&(n<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");r||(r="utf8");for(var s=!1;;)switch(r){case"hex":return _(this,e,t,n);case"utf8":case"utf-8":return y(this,e,t,n);case"ascii":return v(this,e,t,n);case"latin1":case"binary":return x(this,e,t,n);case"base64":return E(this,e,t,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return A(this,e,t,n);default:if(s)throw new TypeError("Unknown encoding: "+r);r=(""+r).toLowerCase(),s=!0}},u.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var T=4096;function C(e,t,n){var r="";n=Math.min(e.length,n);for(var i=t;ir)&&(n=r);for(var i="",s=t;sn)throw new RangeError("Trying to access beyond buffer length")}function N(e,t,n,r,i,s){if(!u.isBuffer(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>i||te.length)throw new RangeError("Index out of range")}function F(e,t,n,r){t<0&&(t=65535+t+1);for(var i=0,s=Math.min(e.length-n,2);i>>8*(r?i:1-i)}function P(e,t,n,r){t<0&&(t=4294967295+t+1);for(var i=0,s=Math.min(e.length-n,4);i>>8*(r?i:3-i)&255}function L(e,t,n,r,i,s){if(n+r>e.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("Index out of range")}function B(e,t,n,r,s){return s||L(e,0,n,4),i.write(e,t,n,r,23,4),n+4}function U(e,t,n,r,s){return s||L(e,0,n,8),i.write(e,t,n,r,52,8),n+8}u.prototype.slice=function(e,t){var n,r=this.length;if((e=~~e)<0?(e+=r)<0&&(e=0):e>r&&(e=r),(t=void 0===t?r:~~t)<0?(t+=r)<0&&(t=0):t>r&&(t=r),t0&&(i*=256);)r+=this[e+--t]*i;return r},u.prototype.readUInt8=function(e,t){return t||I(e,1,this.length),this[e]},u.prototype.readUInt16LE=function(e,t){return t||I(e,2,this.length),this[e]|this[e+1]<<8},u.prototype.readUInt16BE=function(e,t){return t||I(e,2,this.length),this[e]<<8|this[e+1]},u.prototype.readUInt32LE=function(e,t){return t||I(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},u.prototype.readUInt32BE=function(e,t){return t||I(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},u.prototype.readIntLE=function(e,t,n){e|=0,t|=0,n||I(e,t,this.length);for(var r=this[e],i=1,s=0;++s=(i*=128)&&(r-=Math.pow(2,8*t)),r},u.prototype.readIntBE=function(e,t,n){e|=0,t|=0,n||I(e,t,this.length);for(var r=t,i=1,s=this[e+--r];r>0&&(i*=256);)s+=this[e+--r]*i;return s>=(i*=128)&&(s-=Math.pow(2,8*t)),s},u.prototype.readInt8=function(e,t){return t||I(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},u.prototype.readInt16LE=function(e,t){t||I(e,2,this.length);var n=this[e]|this[e+1]<<8;return 32768&n?4294901760|n:n},u.prototype.readInt16BE=function(e,t){t||I(e,2,this.length);var n=this[e+1]|this[e]<<8;return 32768&n?4294901760|n:n},u.prototype.readInt32LE=function(e,t){return t||I(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},u.prototype.readInt32BE=function(e,t){return t||I(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},u.prototype.readFloatLE=function(e,t){return t||I(e,4,this.length),i.read(this,e,!0,23,4)},u.prototype.readFloatBE=function(e,t){return t||I(e,4,this.length),i.read(this,e,!1,23,4)},u.prototype.readDoubleLE=function(e,t){return t||I(e,8,this.length),i.read(this,e,!0,52,8)},u.prototype.readDoubleBE=function(e,t){return t||I(e,8,this.length),i.read(this,e,!1,52,8)},u.prototype.writeUIntLE=function(e,t,n,r){(e=+e,t|=0,n|=0,r)||N(this,e,t,n,Math.pow(2,8*n)-1,0);var i=1,s=0;for(this[t]=255&e;++s=0&&(s*=256);)this[t+i]=e/s&255;return t+n},u.prototype.writeUInt8=function(e,t,n){return e=+e,t|=0,n||N(this,e,t,1,255,0),u.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),this[t]=255&e,t+1},u.prototype.writeUInt16LE=function(e,t,n){return e=+e,t|=0,n||N(this,e,t,2,65535,0),u.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):F(this,e,t,!0),t+2},u.prototype.writeUInt16BE=function(e,t,n){return e=+e,t|=0,n||N(this,e,t,2,65535,0),u.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):F(this,e,t,!1),t+2},u.prototype.writeUInt32LE=function(e,t,n){return e=+e,t|=0,n||N(this,e,t,4,4294967295,0),u.TYPED_ARRAY_SUPPORT?(this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e):P(this,e,t,!0),t+4},u.prototype.writeUInt32BE=function(e,t,n){return e=+e,t|=0,n||N(this,e,t,4,4294967295,0),u.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):P(this,e,t,!1),t+4},u.prototype.writeIntLE=function(e,t,n,r){if(e=+e,t|=0,!r){var i=Math.pow(2,8*n-1);N(this,e,t,n,i-1,-i)}var s=0,o=1,a=0;for(this[t]=255&e;++s>0)-a&255;return t+n},u.prototype.writeIntBE=function(e,t,n,r){if(e=+e,t|=0,!r){var i=Math.pow(2,8*n-1);N(this,e,t,n,i-1,-i)}var s=n-1,o=1,a=0;for(this[t+s]=255&e;--s>=0&&(o*=256);)e<0&&0===a&&0!==this[t+s+1]&&(a=1),this[t+s]=(e/o>>0)-a&255;return t+n},u.prototype.writeInt8=function(e,t,n){return e=+e,t|=0,n||N(this,e,t,1,127,-128),u.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),e<0&&(e=255+e+1),this[t]=255&e,t+1},u.prototype.writeInt16LE=function(e,t,n){return e=+e,t|=0,n||N(this,e,t,2,32767,-32768),u.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):F(this,e,t,!0),t+2},u.prototype.writeInt16BE=function(e,t,n){return e=+e,t|=0,n||N(this,e,t,2,32767,-32768),u.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):F(this,e,t,!1),t+2},u.prototype.writeInt32LE=function(e,t,n){return e=+e,t|=0,n||N(this,e,t,4,2147483647,-2147483648),u.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24):P(this,e,t,!0),t+4},u.prototype.writeInt32BE=function(e,t,n){return e=+e,t|=0,n||N(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),u.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):P(this,e,t,!1),t+4},u.prototype.writeFloatLE=function(e,t,n){return B(this,e,t,!0,n)},u.prototype.writeFloatBE=function(e,t,n){return B(this,e,t,!1,n)},u.prototype.writeDoubleLE=function(e,t,n){return U(this,e,t,!0,n)},u.prototype.writeDoubleBE=function(e,t,n){return U(this,e,t,!1,n)},u.prototype.copy=function(e,t,n,r){if(n||(n=0),r||0===r||(r=this.length),t>=e.length&&(t=e.length),t||(t=0),r>0&&r=this.length)throw new RangeError("sourceStart out of bounds");if(r<0)throw new RangeError("sourceEnd out of bounds");r>this.length&&(r=this.length),e.length-t=0;--i)e[i+t]=this[i+n];else if(s<1e3||!u.TYPED_ARRAY_SUPPORT)for(i=0;i>>=0,n=void 0===n?this.length:n>>>0,e||(e=0),"number"==typeof e)for(s=t;s55295&&n<57344){if(!i){if(n>56319){(t-=3)>-1&&s.push(239,191,189);continue}if(o+1===r){(t-=3)>-1&&s.push(239,191,189);continue}i=n;continue}if(n<56320){(t-=3)>-1&&s.push(239,191,189),i=n;continue}n=65536+(i-55296<<10|n-56320)}else i&&(t-=3)>-1&&s.push(239,191,189);if(i=null,n<128){if((t-=1)<0)break;s.push(n)}else if(n<2048){if((t-=2)<0)break;s.push(n>>6|192,63&n|128)}else if(n<65536){if((t-=3)<0)break;s.push(n>>12|224,n>>6&63|128,63&n|128)}else{if(!(n<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;s.push(n>>18|240,n>>12&63|128,n>>6&63|128,63&n|128)}}return s}function z(e){return r.toByteArray(function(e){if((e=function(e){return e.trim?e.trim():e.replace(/^\s+|\s+$/g,"")}(e).replace(M,"")).length<2)return"";for(;e.length%4!=0;)e+="=";return e}(e))}function H(e,t,n,r){for(var i=0;i=t.length||i>=e.length);++i)t[i+n]=e[i];return i}}).call(this,n(6))},function(e,t,n){e.exports=i;var r=n(38).EventEmitter;function i(){r.call(this)}n(9)(i,r),i.Readable=n(39),i.Writable=n(100),i.Duplex=n(101),i.Transform=n(102),i.PassThrough=n(103),i.Stream=i,i.prototype.pipe=function(e,t){var n=this;function i(t){e.writable&&!1===e.write(t)&&n.pause&&n.pause()}function s(){n.readable&&n.resume&&n.resume()}n.on("data",i),e.on("drain",s),e._isStdio||t&&!1===t.end||(n.on("end",a),n.on("close",u));var o=!1;function a(){o||(o=!0,e.end())}function u(){o||(o=!0,"function"==typeof e.destroy&&e.destroy())}function l(e){if(c(),0===r.listenerCount(this,"error"))throw e}function c(){n.removeListener("data",i),e.removeListener("drain",s),n.removeListener("end",a),n.removeListener("close",u),n.removeListener("error",l),e.removeListener("error",l),n.removeListener("end",c),n.removeListener("close",c),e.removeListener("close",c)}return n.on("error",l),e.on("error",l),n.on("end",c),n.on("close",c),e.on("close",c),e.emit("pipe",n),e}},function(e,t,n){"use strict";n.d(t,"a",(function(){return o}));var r=n(1),i=n(0);const s=new TextDecoder("utf-8");class o{static fromResponse({url:e,response:t,date:n,noRW:i,isLive:s}){const a=t.body?new r.a(t.body.getReader(),!1):null,u=Number(t.headers.get("x-redirect-status")||t.status),l=t.statusText;let c=t.headers;const h=c.get("x-proxy-set-cookie");if(h){const e=[];h.split(",").forEach(t=>{const n=t.split(";",1)[0].trim();n.indexOf("=")>0&&e.push(n)}),e.length&&((c=new Headers(c)).set("x-wabac-preset-cookie",e.join(";")),console.log("cookies",e.join(";")))}return new o({payload:a,status:u,statusText:l,headers:c,url:e,date:n,noRW:i,isLive:s})}constructor({payload:e,status:t,statusText:n,headers:r,url:i,date:s,extraOpts:o=null,noRW:a=!1,isLive:u=!1}){this.reader=null,this.buffer=null,e&&e[Symbol.asyncIterator]?this.reader=e:this.buffer=e,this.status=t,this.statusText=n,this.headers=r,this.url=i,this.date=s,this.extraOpts=o,this.noRW=a,this.isLive=u}async getText(){const e=await this.getBuffer();return"string"==typeof e?e:s.decode(e)}async getBuffer(){return this.buffer?this.buffer:(this.buffer=await this.reader.readFully(),this.buffer)}async setContent(e){e instanceof r.b?(this.reader=e,this.buffer=null):e.getReader?(this.reader=new r.a(e.getReader()),this.buffer=null):(this.reader=null,this.buffer=e)}async*[Symbol.asyncIterator](){this.buffer?yield this.buffer:this.reader&&(yield*this.reader)}setRange(e){const t=e.match(/^bytes\=(\d+)\-(\d+)?$/);let n=0;if(this.buffer)n=this.buffer.length;else if(this.reader&&!(n=Number(this.headers.get("content-length"))))return;if(!t)return this.status=416,this.statusText="Range Not Satisfiable",this.headers.set("Content-Range",`*/${n}`),!1;const r=Number(t[1]),i=Number(t[2])||n-1;return this.buffer?this.buffer=this.buffer.slice(r,i+1):this.reader&&(0===r&&i===n-1||this.reader.setLimitSkip(i-r+1,r)),this.headers.set("Content-Range",`bytes ${r}-${i}/${n}`),this.headers.set("Content-Length",i-r+1),this.status=206,this.statusText="Partial Content",!0}makeResponse(){let e=null;Object(i.i)(this.status)||(e=this.buffer||!this.reader?this.buffer:this.reader.getReadableStream());const t=new Response(e,{status:this.status,statusText:this.statusText,headers:this.headers});return t.date=this.date,t}}},function(e,t){var n;n=function(){return this}();try{n=n||new Function("return this")()}catch(e){"object"==typeof window&&(n=window)}e.exports=n},function(e,t,n){"use strict";const r=function(e,t){const n=t.exec(e);return!(null==n)};t.isExist=function(e){return void 0!==e},t.isEmptyObject=function(e){return 0===Object.keys(e).length},t.merge=function(e,t,n){if(t){const r=Object.keys(t),i=r.length;for(let s=0;s1)for(var n=1;ne.decode(t),t.utf8.checksUTF8=!0}else t.utf8=e=>e.toString("utf8"),t.utf8.checksUTF8=!1;t.parseCBORint=function(e,t){switch(e){case o.ONE:return t.readUInt8(0);case o.TWO:return t.readUInt16BE(0);case o.FOUR:return t.readUInt32BE(0);case o.EIGHT:const n=t.readUInt32BE(0),r=t.readUInt32BE(4);return n>2097151?new i(n).times(a).plus(r):n*a+r;default:throw new Error("Invalid additional info for int: "+e)}},t.writeHalf=function(t,n){const r=e.allocUnsafe(4);r.writeFloatBE(n,0);const i=r.readUInt32BE(0);if(0!=(8191&i))return!1;let s=i>>16&32768;const o=i>>23&255,a=8388607&i;if(o>=113&&o<=142)s+=(o-112<<10)+(a>>13);else{if(!(o>=103&&o<113))return!1;if(a&(1<<126-o)-1)return!1;s+=a+8388608>>126-o}return t.writeUInt16BE(s),!0},t.parseHalf=function(e){const t=128&e[0]?-1:1,n=(124&e[0])>>2,r=(3&e[0])<<8|e[1];return n?31===n?t*(r?NaN:Infinity):t*Math.pow(2,n-25)*(1024+r):5.960464477539063e-8*t*r},t.parseCBORfloat=function(e){switch(e.length){case 2:return t.parseHalf(e);case 4:return e.readFloatBE(0);case 8:return e.readDoubleBE(0);default:throw new Error("Invalid float size: "+e.length)}},t.hex=function(t){return e.from(t.replace(/^0x/,""),"hex")},t.bin=function(t){let n=0,r=(t=t.replace(/\s/g,"")).length%8||8;const i=[];for(;r<=t.length;)i.push(parseInt(t.slice(n,r),2)),n=r,r+=8;return e.from(i)},t.extend=function(e={},...t){const n=t.length;for(let r=0;re===t[n]))},t.bufferEqual=function(t,n){if(null==t&&null==n)return!0;if(null==t||null==n)return!1;if(!e.isBuffer(t)||!e.isBuffer(n)||t.length!==n.length)return!1;const r=t.length;let i,s,o=!0;for(i=s=0;s0||e===t?t:t-1}function b(e){for(var t,n,r=1,i=e.length,s=e[0]+"";rl^n?1:-1;for(a=(u=i.length)<(l=s.length)?u:l,o=0;os[o]^n?1:-1;return u==l?0:u>l^n?1:-1}function y(e,t,n,r){if(en||e!==u(e))throw Error(l+(r||"Argument")+("number"==typeof e?en?" out of range: ":" not an integer: ":" not a primitive number: ")+String(e))}function v(e){var t=e.c.length-1;return g(e.e/d)==t&&e.c[t]%2!=0}function x(e,t){return(e.length>1?e.charAt(0)+"."+e.slice(1):e)+(t<0?"e":"e+")+t}function E(e,t,n){var r,i;if(t<0){for(i=n+".";++t;i+=n);e=i+e}else if(++t>(r=e.length)){for(i=n,t-=r;--t;i+=n);e+=i}else tL?g.c=g.e=null:e.e=10;h/=10,l++);return void(l>L?g.c=g.e=null:(g.e=l,g.c=[e]))}w=String(e)}else{if(!o.test(w=String(e)))return i(g,w,f);g.s=45==w.charCodeAt(0)?(w=w.slice(1),-1):1}(l=w.indexOf("."))>-1&&(w=w.replace(".","")),(h=w.search(/e/i))>0?(l<0&&(l=h),l+=+w.slice(h+1),w=w.substring(0,h)):l<0&&(l=w.length)}else{if(y(t,2,W.length,"Base"),10==t)return V(g=new z(e),O+g.e+1,I);if(w=String(e),f="number"==typeof e){if(0*e!=0)return i(g,w,f,t);if(g.s=1/e<0?(w=w.slice(1),-1):1,z.DEBUG&&w.replace(/^0\.0*|\./,"").length>15)throw Error(c+e)}else g.s=45===w.charCodeAt(0)?(w=w.slice(1),-1):1;for(n=W.slice(0,t),l=h=0,m=w.length;hl){l=m;continue}}else if(!a&&(w==w.toUpperCase()&&(w=w.toLowerCase())||w==w.toLowerCase()&&(w=w.toUpperCase()))){a=!0,h=-1,l=0;continue}return i(g,String(e),f,t)}f=!1,(l=(w=r(w,t,10,g.s)).indexOf("."))>-1?w=w.replace(".",""):l=w.length}for(h=0;48===w.charCodeAt(h);h++);for(m=w.length;48===w.charCodeAt(--m););if(w=w.slice(h,++m)){if(m-=h,f&&z.DEBUG&&m>15&&(e>p||e!==u(e)))throw Error(c+g.s*e);if((l=l-h-1)>L)g.c=g.e=null;else if(l=F)?x(u,o):E(u,o,"0");else if(s=(e=V(new z(e),t,n)).e,a=(u=b(e.c)).length,1==r||2==r&&(t<=s||s<=N)){for(;aa){if(--t>0)for(u+=".";t--;u+="0");}else if((t+=s-a)>0)for(s+1==a&&(u+=".");t--;u+="0");return e.s<0&&i?"-"+u:u}function G(e,t){for(var n,r=1,i=new z(e[0]);r=10;i/=10,r++);return(n=r+n*d-1)>L?e.c=e.e=null:n=10;l/=10,i++);if((s=t-i)<0)s+=d,o=t,m=(c=w[p=0])/g[i-o-1]%10|0;else if((p=a((s+1)/d))>=w.length){if(!r)break e;for(;w.length<=p;w.push(0));c=m=0,i=1,o=(s%=d)-d+1}else{for(c=l=w[p],i=1;l>=10;l/=10,i++);m=(o=(s%=d)-d+i)<0?0:c/g[i-o-1]%10|0}if(r=r||t<0||null!=w[p+1]||(o<0?c:c%g[i-o-1]),r=n<4?(m||r)&&(0==n||n==(e.s<0?3:2)):m>5||5==m&&(4==n||r||6==n&&(s>0?o>0?c/g[i-o]:0:w[p-1])%10&1||n==(e.s<0?8:7)),t<1||!w[0])return w.length=0,r?(t-=e.e+1,w[0]=g[(d-t%d)%d],e.e=-t||0):w[0]=e.e=0,e;if(0==s?(w.length=p,l=1,p--):(w.length=p+1,l=g[d-s],w[p]=o>0?u(c/g[i-o]%g[o])*l:0),r)for(;;){if(0==p){for(s=1,o=w[0];o>=10;o/=10,s++);for(o=w[0]+=l,l=1;o>=10;o/=10,l++);s!=l&&(e.e++,w[0]==h&&(w[0]=1));break}if(w[p]+=l,w[p]!=h)break;w[p--]=0,l=1}for(s=w.length;0===w[--s];w.pop());}e.e>L?e.c=e.e=null:e.e=F?x(t,n):E(t,n,"0"),e.s<0?"-"+t:t)}return z.clone=e,z.ROUND_UP=0,z.ROUND_DOWN=1,z.ROUND_CEIL=2,z.ROUND_FLOOR=3,z.ROUND_HALF_UP=4,z.ROUND_HALF_DOWN=5,z.ROUND_HALF_EVEN=6,z.ROUND_HALF_CEIL=7,z.ROUND_HALF_FLOOR=8,z.EUCLID=9,z.config=z.set=function(e){var t,n;if(null!=e){if("object"!=typeof e)throw Error(l+"Object expected: "+e);if(e.hasOwnProperty(t="DECIMAL_PLACES")&&(y(n=e[t],0,w,t),O=n),e.hasOwnProperty(t="ROUNDING_MODE")&&(y(n=e[t],0,8,t),I=n),e.hasOwnProperty(t="EXPONENTIAL_AT")&&((n=e[t])&&n.pop?(y(n[0],-w,0,t),y(n[1],0,w,t),N=n[0],F=n[1]):(y(n,-w,w,t),N=-(F=n<0?-n:n))),e.hasOwnProperty(t="RANGE"))if((n=e[t])&&n.pop)y(n[0],-w,-1,t),y(n[1],1,w,t),P=n[0],L=n[1];else{if(y(n,-w,w,t),!n)throw Error(l+t+" cannot be zero: "+n);P=-(L=n<0?-n:n)}if(e.hasOwnProperty(t="CRYPTO")){if((n=e[t])!==!!n)throw Error(l+t+" not true or false: "+n);if(n){if("undefined"==typeof crypto||!crypto||!crypto.getRandomValues&&!crypto.randomBytes)throw B=!n,Error(l+"crypto unavailable");B=n}else B=n}if(e.hasOwnProperty(t="MODULO_MODE")&&(y(n=e[t],0,9,t),U=n),e.hasOwnProperty(t="POW_PRECISION")&&(y(n=e[t],0,w,t),M=n),e.hasOwnProperty(t="FORMAT")){if("object"!=typeof(n=e[t]))throw Error(l+t+" not an object: "+n);j=n}if(e.hasOwnProperty(t="ALPHABET")){if("string"!=typeof(n=e[t])||/^.$|[+-.\s]|(.).*\1/.test(n))throw Error(l+t+" invalid: "+n);W=n}}return{DECIMAL_PLACES:O,ROUNDING_MODE:I,EXPONENTIAL_AT:[N,F],RANGE:[P,L],CRYPTO:B,MODULO_MODE:U,POW_PRECISION:M,FORMAT:j,ALPHABET:W}},z.isBigNumber=function(e){if(!e||!0!==e._isBigNumber)return!1;if(!z.DEBUG)return!0;var t,n,r=e.c,i=e.e,s=e.s;e:if("[object Array]"=={}.toString.call(r)){if((1===s||-1===s)&&i>=-w&&i<=w&&i===u(i)){if(0===r[0]){if(0===i&&1===r.length)return!0;break e}if((t=(i+1)%d)<1&&(t+=d),String(r[0]).length==t){for(t=0;t=h||n!==u(n))break e;if(0!==n)return!0}}}else if(null===r&&null===i&&(null===s||1===s||-1===s))return!0;throw Error(l+"Invalid BigNumber: "+e)},z.maximum=z.max=function(){return G(arguments,D.lt)},z.minimum=z.min=function(){return G(arguments,D.gt)},z.random=(s=9007199254740992*Math.random()&2097151?function(){return u(9007199254740992*Math.random())}:function(){return 8388608*(1073741824*Math.random()|0)+(8388608*Math.random()|0)},function(e){var t,n,r,i,o,c=0,h=[],p=new z(R);if(null==e?e=O:y(e,0,w),i=a(e/d),B)if(crypto.getRandomValues){for(t=crypto.getRandomValues(new Uint32Array(i*=2));c>>11))>=9e15?(n=crypto.getRandomValues(new Uint32Array(2)),t[c]=n[0],t[c+1]=n[1]):(h.push(o%1e14),c+=2);c=i/2}else{if(!crypto.randomBytes)throw B=!1,Error(l+"crypto unavailable");for(t=crypto.randomBytes(i*=7);c=9e15?crypto.randomBytes(7).copy(t,c):(h.push(o%1e14),c+=7);c=i/7}if(!B)for(;c=10;o/=10,c++);cn-1&&(null==o[i+1]&&(o[i+1]=0),o[i+1]+=o[i]/n|0,o[i]%=n)}return o.reverse()}return function(t,r,i,s,o){var a,u,l,c,h,d,p,f,m=t.indexOf("."),w=O,g=I;for(m>=0&&(c=M,M=0,t=t.replace(".",""),d=(f=new z(r)).pow(t.length-m),M=c,f.c=e(E(b(d.c),d.e,"0"),10,i,"0123456789"),f.e=f.c.length),l=c=(p=e(t,r,i,o?(a=W,"0123456789"):(a="0123456789",W))).length;0==p[--c];p.pop());if(!p[0])return a.charAt(0);if(m<0?--l:(d.c=p,d.e=l,d.s=s,p=(d=n(d,f,w,g,i)).c,h=d.r,l=d.e),m=p[u=l+w+1],c=i/2,h=h||u<0||null!=p[u+1],h=g<4?(null!=m||h)&&(0==g||g==(d.s<0?3:2)):m>c||m==c&&(4==g||h||6==g&&1&p[u-1]||g==(d.s<0?8:7)),u<1||!p[0])t=h?E(a.charAt(1),-w,a.charAt(0)):a.charAt(0);else{if(p.length=u,h)for(--i;++p[--u]>i;)p[u]=0,u||(++l,p=[1].concat(p));for(c=p.length;!p[--c];);for(m=0,t="";m<=c;t+=a.charAt(p[m++]));t=E(t,l,a.charAt(0))}return t}}(),n=function(){function e(e,t,n){var r,i,s,o,a=0,u=e.length,l=t%m,c=t/m|0;for(e=e.slice();u--;)a=((i=l*(s=e[u]%m)+(r=c*s+(o=e[u]/m|0)*l)%m*m+a)/n|0)+(r/m|0)+c*o,e[u]=i%n;return a&&(e=[a].concat(e)),e}function t(e,t,n,r){var i,s;if(n!=r)s=n>r?1:-1;else for(i=s=0;it[i]?1:-1;break}return s}function n(e,t,n,r){for(var i=0;n--;)e[n]-=i,i=e[n]1;e.splice(0,1));}return function(r,i,s,o,a){var l,c,p,f,m,w,b,_,y,v,x,E,A,S,k,T,C,D=r.s==i.s?1:-1,R=r.c,O=i.c;if(!(R&&R[0]&&O&&O[0]))return new z(r.s&&i.s&&(R?!O||R[0]!=O[0]:O)?R&&0==R[0]||!O?0*D:D/0:NaN);for(y=(_=new z(D)).c=[],D=s+(c=r.e-i.e)+1,a||(a=h,c=g(r.e/d)-g(i.e/d),D=D/d|0),p=0;O[p]==(R[p]||0);p++);if(O[p]>(R[p]||0)&&c--,D<0)y.push(1),f=!0;else{for(S=R.length,T=O.length,p=0,D+=2,(m=u(a/(O[0]+1)))>1&&(O=e(O,m,a),R=e(R,m,a),T=O.length,S=R.length),A=T,x=(v=R.slice(0,T)).length;x=a/2&&k++;do{if(m=0,(l=t(O,v,T,x))<0){if(E=v[0],T!=x&&(E=E*a+(v[1]||0)),(m=u(E/k))>1)for(m>=a&&(m=a-1),b=(w=e(O,m,a)).length,x=v.length;1==t(w,v,b,x);)m--,n(w,T=10;D/=10,p++);V(_,s+(_.e=p+c*d-1)+1,o,f)}else _.e=c,_.r=+f;return _}}(),A=/^(-?)0([xbo])(?=\w[\w.]*$)/i,S=/^([^.]+)\.$/,k=/^\.([^.]+)$/,T=/^-?(Infinity|NaN)$/,C=/^\s*\+(?=[\w.])|^\s+|\s+$/g,i=function(e,t,n,r){var i,s=n?t:t.replace(C,"");if(T.test(s))e.s=isNaN(s)?null:s<0?-1:1;else{if(!n&&(s=s.replace(A,(function(e,t,n){return i="x"==(n=n.toLowerCase())?16:"b"==n?2:8,r&&r!=i?e:t})),r&&(i=r,s=s.replace(S,"$1").replace(k,"0.$1")),t!=s))return new z(s,i);if(z.DEBUG)throw Error(l+"Not a"+(r?" base "+r:"")+" number: "+t);e.s=null}e.c=e.e=null},D.absoluteValue=D.abs=function(){var e=new z(this);return e.s<0&&(e.s=1),e},D.comparedTo=function(e,t){return _(this,new z(e,t))},D.decimalPlaces=D.dp=function(e,t){var n,r,i,s=this;if(null!=e)return y(e,0,w),null==t?t=I:y(t,0,8),V(new z(s),e+s.e+1,t);if(!(n=s.c))return null;if(r=((i=n.length-1)-g(this.e/d))*d,i=n[i])for(;i%10==0;i/=10,r--);return r<0&&(r=0),r},D.dividedBy=D.div=function(e,t){return n(this,new z(e,t),O,I)},D.dividedToIntegerBy=D.idiv=function(e,t){return n(this,new z(e,t),0,1)},D.exponentiatedBy=D.pow=function(e,t){var n,r,i,s,o,c,h,p,f=this;if((e=new z(e)).c&&!e.isInteger())throw Error(l+"Exponent not an integer: "+K(e));if(null!=t&&(t=new z(t)),o=e.e>14,!f.c||!f.c[0]||1==f.c[0]&&!f.e&&1==f.c.length||!e.c||!e.c[0])return p=new z(Math.pow(+K(f),o?2-v(e):+K(e))),t?p.mod(t):p;if(c=e.s<0,t){if(t.c?!t.c[0]:!t.s)return new z(NaN);(r=!c&&f.isInteger()&&t.isInteger())&&(f=f.mod(t))}else{if(e.e>9&&(f.e>0||f.e<-1||(0==f.e?f.c[0]>1||o&&f.c[1]>=24e7:f.c[0]<8e13||o&&f.c[0]<=9999975e7)))return s=f.s<0&&v(e)?-0:0,f.e>-1&&(s=1/s),new z(c?1/s:s);M&&(s=a(M/d+2))}for(o?(n=new z(.5),c&&(e.s=1),h=v(e)):h=(i=Math.abs(+K(e)))%2,p=new z(R);;){if(h){if(!(p=p.times(f)).c)break;s?p.c.length>s&&(p.c.length=s):r&&(p=p.mod(t))}if(i){if(0===(i=u(i/2)))break;h=i%2}else if(V(e=e.times(n),e.e+1,1),e.e>14)h=v(e);else{if(0===(i=+K(e)))break;h=i%2}f=f.times(f),s?f.c&&f.c.length>s&&(f.c.length=s):r&&(f=f.mod(t))}return r?p:(c&&(p=R.div(p)),t?p.mod(t):s?V(p,M,I,void 0):p)},D.integerValue=function(e){var t=new z(this);return null==e?e=I:y(e,0,8),V(t,t.e+1,e)},D.isEqualTo=D.eq=function(e,t){return 0===_(this,new z(e,t))},D.isFinite=function(){return!!this.c},D.isGreaterThan=D.gt=function(e,t){return _(this,new z(e,t))>0},D.isGreaterThanOrEqualTo=D.gte=function(e,t){return 1===(t=_(this,new z(e,t)))||0===t},D.isInteger=function(){return!!this.c&&g(this.e/d)>this.c.length-2},D.isLessThan=D.lt=function(e,t){return _(this,new z(e,t))<0},D.isLessThanOrEqualTo=D.lte=function(e,t){return-1===(t=_(this,new z(e,t)))||0===t},D.isNaN=function(){return!this.s},D.isNegative=function(){return this.s<0},D.isPositive=function(){return this.s>0},D.isZero=function(){return!!this.c&&0==this.c[0]},D.minus=function(e,t){var n,r,i,s,o=this,a=o.s;if(t=(e=new z(e,t)).s,!a||!t)return new z(NaN);if(a!=t)return e.s=-t,o.plus(e);var u=o.e/d,l=e.e/d,c=o.c,p=e.c;if(!u||!l){if(!c||!p)return c?(e.s=-t,e):new z(p?o:NaN);if(!c[0]||!p[0])return p[0]?(e.s=-t,e):new z(c[0]?o:3==I?-0:0)}if(u=g(u),l=g(l),c=c.slice(),a=u-l){for((s=a<0)?(a=-a,i=c):(l=u,i=p),i.reverse(),t=a;t--;i.push(0));i.reverse()}else for(r=(s=(a=c.length)<(t=p.length))?a:t,a=t=0;t0)for(;t--;c[n++]=0);for(t=h-1;r>a;){if(c[--r]=0;){for(n=0,f=E[i]%y,w=E[i]/y|0,s=i+(o=u);s>i;)n=((l=f*(l=x[--o]%y)+(a=w*l+(c=x[o]/y|0)*f)%y*y+b[s]+n)/_|0)+(a/y|0)+w*c,b[s--]=l%_;b[s]=n}return n?++r:b.splice(0,1),q(e,b,r)},D.negated=function(){var e=new z(this);return e.s=-e.s||null,e},D.plus=function(e,t){var n,r=this,i=r.s;if(t=(e=new z(e,t)).s,!i||!t)return new z(NaN);if(i!=t)return e.s=-t,r.minus(e);var s=r.e/d,o=e.e/d,a=r.c,u=e.c;if(!s||!o){if(!a||!u)return new z(i/0);if(!a[0]||!u[0])return u[0]?e:new z(a[0]?r:0*i)}if(s=g(s),o=g(o),a=a.slice(),i=s-o){for(i>0?(o=s,n=u):(i=-i,n=a),n.reverse();i--;n.push(0));n.reverse()}for((i=a.length)-(t=u.length)<0&&(n=u,u=a,a=n,t=i),i=0;t;)i=(a[--t]=a[t]+u[t]+i)/h|0,a[t]=h===a[t]?0:a[t]%h;return i&&(a=[i].concat(a),++o),q(e,a,o)},D.precision=D.sd=function(e,t){var n,r,i,s=this;if(null!=e&&e!==!!e)return y(e,1,w),null==t?t=I:y(t,0,8),V(new z(s),e,t);if(!(n=s.c))return null;if(r=(i=n.length-1)*d+1,i=n[i]){for(;i%10==0;i/=10,r--);for(i=n[0];i>=10;i/=10,r++);}return e&&s.e+1>r&&(r=s.e+1),r},D.shiftedBy=function(e){return y(e,-p,p),this.times("1e"+e)},D.squareRoot=D.sqrt=function(){var e,t,r,i,s,o=this,a=o.c,u=o.s,l=o.e,c=O+4,h=new z("0.5");if(1!==u||!a||!a[0])return new z(!u||u<0&&(!a||a[0])?NaN:a?o:1/0);if(0==(u=Math.sqrt(+K(o)))||u==1/0?(((t=b(a)).length+l)%2==0&&(t+="0"),u=Math.sqrt(+t),l=g((l+1)/2)-(l<0||l%2),r=new z(t=u==1/0?"1e"+l:(t=u.toExponential()).slice(0,t.indexOf("e")+1)+l)):r=new z(u+""),r.c[0])for((u=(l=r.e)+c)<3&&(u=0);;)if(s=r,r=h.times(s.plus(n(o,s,c,1))),b(s.c).slice(0,u)===(t=b(r.c)).slice(0,u)){if(r.e0&&m>0){for(s=m%a||a,h=f.substr(0,s);s0&&(h+=c+f.slice(s)),p&&(h="-"+h)}r=d?h+(n.decimalSeparator||"")+((u=+n.fractionGroupSize)?d.replace(new RegExp("\\d{"+u+"}\\B","g"),"$&"+(n.fractionGroupSeparator||"")):d):h}return(n.prefix||"")+r+(n.suffix||"")},D.toFraction=function(e){var t,r,i,s,o,a,u,c,h,p,m,w,g=this,_=g.c;if(null!=e&&(!(u=new z(e)).isInteger()&&(u.c||1!==u.s)||u.lt(R)))throw Error(l+"Argument "+(u.isInteger()?"out of range: ":"not an integer: ")+K(u));if(!_)return new z(g);for(t=new z(R),h=r=new z(R),i=c=new z(R),w=b(_),o=t.e=w.length-g.e-1,t.c[0]=f[(a=o%d)<0?d+a:a],e=!e||u.comparedTo(t)>0?o>0?t:h:u,a=L,L=1/0,u=new z(w),c.c[0]=0;p=n(u,t,0,1),1!=(s=r.plus(p.times(i))).comparedTo(e);)r=i,i=s,h=c.plus(p.times(s=h)),c=s,t=u.minus(p.times(s=t)),u=s;return s=n(e.minus(r),i,0,1),c=c.plus(s.times(h)),r=r.plus(s.times(i)),c.s=h.s=g.s,m=n(h,i,o*=2,I).minus(g).abs().comparedTo(n(c,r,o,I).minus(g).abs())<1?[h,i]:[c,r],L=a,m},D.toNumber=function(){return+K(this)},D.toPrecision=function(e,t){return null!=e&&y(e,1,w),H(this,e,t,2)},D.toString=function(e){var t,n=this,i=n.s,s=n.e;return null===s?i?(t="Infinity",i<0&&(t="-"+t)):t="NaN":(null==e?t=s<=N||s>=F?x(b(n.c),s):E(b(n.c),s,"0"):10===e?t=E(b((n=V(new z(n),O+s+1,I)).c),n.e,"0"):(y(e,2,W.length,"Base"),t=r(E(b(n.c),s,"0"),10,e,i,!0)),i<0&&n.c[0]&&(t="-"+t)),t},D.valueOf=D.toJSON=function(){return K(this)},D._isBigNumber=!0,null!=t&&z.set(t),z}()).default=s.BigNumber=s,void 0===(r=function(){return s}.call(t,n,t,e))||(e.exports=r)}()},function(e,t,n){"use strict";n.d(t,"a",(function(){return i}));const r=1e3;class i{constructor(){this.promises=[],this.batch=[],this.count=0}addPage(e){this.promises.push(this.db.addPage(e))}addResource(e){this.batch.length>=r&&(this.promises.push(this.db.addResources(this.batch)),this.batch=[],console.log(`Read ${this.count+=r} records`)),this.batch.push(e)}async finishIndexing(){this.batch.length>0&&this.promises.push(this.db.addResources(this.batch)),console.log(`Indexed ${this.count+=this.batch.length} records`),this._finishLoad();try{await Promise.all(this.promises)}catch(e){console.warn(e)}this.promises=[]}_finishLoad(){}}},function(e,t,n){(function(e){function n(e){return Object.prototype.toString.call(e)}t.isArray=function(e){return Array.isArray?Array.isArray(e):"[object Array]"===n(e)},t.isBoolean=function(e){return"boolean"==typeof e},t.isNull=function(e){return null===e},t.isNullOrUndefined=function(e){return null==e},t.isNumber=function(e){return"number"==typeof e},t.isString=function(e){return"string"==typeof e},t.isSymbol=function(e){return"symbol"==typeof e},t.isUndefined=function(e){return void 0===e},t.isRegExp=function(e){return"[object RegExp]"===n(e)},t.isObject=function(e){return"object"==typeof e&&null!==e},t.isDate=function(e){return"[object Date]"===n(e)},t.isError=function(e){return"[object Error]"===n(e)||e instanceof Error},t.isFunction=function(e){return"function"==typeof e},t.isPrimitive=function(e){return null===e||"boolean"==typeof e||"number"==typeof e||"string"==typeof e||"symbol"==typeof e||void 0===e},t.isBuffer=e.isBuffer}).call(this,n(3).Buffer)},function(e,t,n){"use strict";const r=t.NAMESPACES={HTML:"http://www.w3.org/1999/xhtml",MATHML:"http://www.w3.org/1998/Math/MathML",SVG:"http://www.w3.org/2000/svg",XLINK:"http://www.w3.org/1999/xlink",XML:"http://www.w3.org/XML/1998/namespace",XMLNS:"http://www.w3.org/2000/xmlns/"};t.ATTRS={TYPE:"type",ACTION:"action",ENCODING:"encoding",PROMPT:"prompt",NAME:"name",COLOR:"color",FACE:"face",SIZE:"size"},t.DOCUMENT_MODE={NO_QUIRKS:"no-quirks",QUIRKS:"quirks",LIMITED_QUIRKS:"limited-quirks"};const i=t.TAG_NAMES={A:"a",ADDRESS:"address",ANNOTATION_XML:"annotation-xml",APPLET:"applet",AREA:"area",ARTICLE:"article",ASIDE:"aside",B:"b",BASE:"base",BASEFONT:"basefont",BGSOUND:"bgsound",BIG:"big",BLOCKQUOTE:"blockquote",BODY:"body",BR:"br",BUTTON:"button",CAPTION:"caption",CENTER:"center",CODE:"code",COL:"col",COLGROUP:"colgroup",DD:"dd",DESC:"desc",DETAILS:"details",DIALOG:"dialog",DIR:"dir",DIV:"div",DL:"dl",DT:"dt",EM:"em",EMBED:"embed",FIELDSET:"fieldset",FIGCAPTION:"figcaption",FIGURE:"figure",FONT:"font",FOOTER:"footer",FOREIGN_OBJECT:"foreignObject",FORM:"form",FRAME:"frame",FRAMESET:"frameset",H1:"h1",H2:"h2",H3:"h3",H4:"h4",H5:"h5",H6:"h6",HEAD:"head",HEADER:"header",HGROUP:"hgroup",HR:"hr",HTML:"html",I:"i",IMG:"img",IMAGE:"image",INPUT:"input",IFRAME:"iframe",KEYGEN:"keygen",LABEL:"label",LI:"li",LINK:"link",LISTING:"listing",MAIN:"main",MALIGNMARK:"malignmark",MARQUEE:"marquee",MATH:"math",MENU:"menu",META:"meta",MGLYPH:"mglyph",MI:"mi",MO:"mo",MN:"mn",MS:"ms",MTEXT:"mtext",NAV:"nav",NOBR:"nobr",NOFRAMES:"noframes",NOEMBED:"noembed",NOSCRIPT:"noscript",OBJECT:"object",OL:"ol",OPTGROUP:"optgroup",OPTION:"option",P:"p",PARAM:"param",PLAINTEXT:"plaintext",PRE:"pre",RB:"rb",RP:"rp",RT:"rt",RTC:"rtc",RUBY:"ruby",S:"s",SCRIPT:"script",SECTION:"section",SELECT:"select",SOURCE:"source",SMALL:"small",SPAN:"span",STRIKE:"strike",STRONG:"strong",STYLE:"style",SUB:"sub",SUMMARY:"summary",SUP:"sup",TABLE:"table",TBODY:"tbody",TEMPLATE:"template",TEXTAREA:"textarea",TFOOT:"tfoot",TD:"td",TH:"th",THEAD:"thead",TITLE:"title",TR:"tr",TRACK:"track",TT:"tt",U:"u",UL:"ul",SVG:"svg",VAR:"var",WBR:"wbr",XMP:"xmp"};t.SPECIAL_ELEMENTS={[r.HTML]:{[i.ADDRESS]:!0,[i.APPLET]:!0,[i.AREA]:!0,[i.ARTICLE]:!0,[i.ASIDE]:!0,[i.BASE]:!0,[i.BASEFONT]:!0,[i.BGSOUND]:!0,[i.BLOCKQUOTE]:!0,[i.BODY]:!0,[i.BR]:!0,[i.BUTTON]:!0,[i.CAPTION]:!0,[i.CENTER]:!0,[i.COL]:!0,[i.COLGROUP]:!0,[i.DD]:!0,[i.DETAILS]:!0,[i.DIR]:!0,[i.DIV]:!0,[i.DL]:!0,[i.DT]:!0,[i.EMBED]:!0,[i.FIELDSET]:!0,[i.FIGCAPTION]:!0,[i.FIGURE]:!0,[i.FOOTER]:!0,[i.FORM]:!0,[i.FRAME]:!0,[i.FRAMESET]:!0,[i.H1]:!0,[i.H2]:!0,[i.H3]:!0,[i.H4]:!0,[i.H5]:!0,[i.H6]:!0,[i.HEAD]:!0,[i.HEADER]:!0,[i.HGROUP]:!0,[i.HR]:!0,[i.HTML]:!0,[i.IFRAME]:!0,[i.IMG]:!0,[i.INPUT]:!0,[i.LI]:!0,[i.LINK]:!0,[i.LISTING]:!0,[i.MAIN]:!0,[i.MARQUEE]:!0,[i.MENU]:!0,[i.META]:!0,[i.NAV]:!0,[i.NOEMBED]:!0,[i.NOFRAMES]:!0,[i.NOSCRIPT]:!0,[i.OBJECT]:!0,[i.OL]:!0,[i.P]:!0,[i.PARAM]:!0,[i.PLAINTEXT]:!0,[i.PRE]:!0,[i.SCRIPT]:!0,[i.SECTION]:!0,[i.SELECT]:!0,[i.SOURCE]:!0,[i.STYLE]:!0,[i.SUMMARY]:!0,[i.TABLE]:!0,[i.TBODY]:!0,[i.TD]:!0,[i.TEMPLATE]:!0,[i.TEXTAREA]:!0,[i.TFOOT]:!0,[i.TH]:!0,[i.THEAD]:!0,[i.TITLE]:!0,[i.TR]:!0,[i.TRACK]:!0,[i.UL]:!0,[i.WBR]:!0,[i.XMP]:!0},[r.MATHML]:{[i.MI]:!0,[i.MO]:!0,[i.MN]:!0,[i.MS]:!0,[i.MTEXT]:!0,[i.ANNOTATION_XML]:!0},[r.SVG]:{[i.TITLE]:!0,[i.FOREIGN_OBJECT]:!0,[i.DESC]:!0}}},function(e,t,n){"use strict";function r(e,t){Error.call(this),this.name="YAMLException",this.reason=e,this.mark=t,this.message=(this.reason||"(unknown reason)")+(this.mark?" "+this.mark.toString():""),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=(new Error).stack||""}r.prototype=Object.create(Error.prototype),r.prototype.constructor=r,r.prototype.toString=function(e){var t=this.name+": ";return t+=this.reason||"(unknown reason)",!e&&this.mark&&(t+=" "+this.mark.toString()),t},e.exports=r},function(e,t,n){"use strict";var r=n(15);e.exports=new r({include:[n(77)],implicit:[n(154),n(155)],explicit:[n(156),n(157),n(158),n(159)]})},function(e,t,n){(function(e){var r=Object.getOwnPropertyDescriptors||function(e){for(var t=Object.keys(e),n={},r=0;r=s)return e;switch(e){case"%s":return String(r[n++]);case"%d":return Number(r[n++]);case"%j":try{return JSON.stringify(r[n++])}catch(e){return"[Circular]"}default:return e}})),u=r[n];n=3&&(r.depth=arguments[2]),arguments.length>=4&&(r.colors=arguments[3]),f(n)?r.showHidden=n:n&&t._extend(r,n),b(r.showHidden)&&(r.showHidden=!1),b(r.depth)&&(r.depth=2),b(r.colors)&&(r.colors=!1),b(r.customInspect)&&(r.customInspect=!0),r.colors&&(r.stylize=u),c(r,e,r.depth)}function u(e,t){var n=a.styles[t];return n?"["+a.colors[n][0]+"m"+e+"["+a.colors[n][1]+"m":e}function l(e,t){return e}function c(e,n,r){if(e.customInspect&&n&&E(n.inspect)&&n.inspect!==t.inspect&&(!n.constructor||n.constructor.prototype!==n)){var i=n.inspect(r,e);return g(i)||(i=c(e,i,r)),i}var s=function(e,t){if(b(t))return e.stylize("undefined","undefined");if(g(t)){var n="'"+JSON.stringify(t).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return e.stylize(n,"string")}if(w(t))return e.stylize(""+t,"number");if(f(t))return e.stylize(""+t,"boolean");if(m(t))return e.stylize("null","null")}(e,n);if(s)return s;var o=Object.keys(n),a=function(e){var t={};return e.forEach((function(e,n){t[e]=!0})),t}(o);if(e.showHidden&&(o=Object.getOwnPropertyNames(n)),x(n)&&(o.indexOf("message")>=0||o.indexOf("description")>=0))return h(n);if(0===o.length){if(E(n)){var u=n.name?": "+n.name:"";return e.stylize("[Function"+u+"]","special")}if(_(n))return e.stylize(RegExp.prototype.toString.call(n),"regexp");if(v(n))return e.stylize(Date.prototype.toString.call(n),"date");if(x(n))return h(n)}var l,y="",A=!1,S=["{","}"];(p(n)&&(A=!0,S=["[","]"]),E(n))&&(y=" [Function"+(n.name?": "+n.name:"")+"]");return _(n)&&(y=" "+RegExp.prototype.toString.call(n)),v(n)&&(y=" "+Date.prototype.toUTCString.call(n)),x(n)&&(y=" "+h(n)),0!==o.length||A&&0!=n.length?r<0?_(n)?e.stylize(RegExp.prototype.toString.call(n),"regexp"):e.stylize("[Object]","special"):(e.seen.push(n),l=A?function(e,t,n,r,i){for(var s=[],o=0,a=t.length;o=0&&0,e+t.replace(/\u001b\[\d\d?m/g,"").length+1}),0)>60)return n[0]+(""===t?"":t+"\n ")+" "+e.join(",\n ")+" "+n[1];return n[0]+t+" "+e.join(", ")+" "+n[1]}(l,y,S)):S[0]+y+S[1]}function h(e){return"["+Error.prototype.toString.call(e)+"]"}function d(e,t,n,r,i,s){var o,a,u;if((u=Object.getOwnPropertyDescriptor(t,i)||{value:t[i]}).get?a=u.set?e.stylize("[Getter/Setter]","special"):e.stylize("[Getter]","special"):u.set&&(a=e.stylize("[Setter]","special")),C(r,i)||(o="["+i+"]"),a||(e.seen.indexOf(u.value)<0?(a=m(n)?c(e,u.value,null):c(e,u.value,n-1)).indexOf("\n")>-1&&(a=s?a.split("\n").map((function(e){return" "+e})).join("\n").substr(2):"\n"+a.split("\n").map((function(e){return" "+e})).join("\n")):a=e.stylize("[Circular]","special")),b(o)){if(s&&i.match(/^\d+$/))return a;(o=JSON.stringify(""+i)).match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(o=o.substr(1,o.length-2),o=e.stylize(o,"name")):(o=o.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),o=e.stylize(o,"string"))}return o+": "+a}function p(e){return Array.isArray(e)}function f(e){return"boolean"==typeof e}function m(e){return null===e}function w(e){return"number"==typeof e}function g(e){return"string"==typeof e}function b(e){return void 0===e}function _(e){return y(e)&&"[object RegExp]"===A(e)}function y(e){return"object"==typeof e&&null!==e}function v(e){return y(e)&&"[object Date]"===A(e)}function x(e){return y(e)&&("[object Error]"===A(e)||e instanceof Error)}function E(e){return"function"==typeof e}function A(e){return Object.prototype.toString.call(e)}function S(e){return e<10?"0"+e.toString(10):e.toString(10)}t.debuglog=function(n){if(b(s)&&(s=e.env.NODE_DEBUG||""),n=n.toUpperCase(),!o[n])if(new RegExp("\\b"+n+"\\b","i").test(s)){var r=e.pid;o[n]=function(){var e=t.format.apply(t,arguments);console.error("%s %d: %s",n,r,e)}}else o[n]=function(){};return o[n]},t.inspect=a,a.colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]},a.styles={special:"cyan",number:"yellow",boolean:"yellow",undefined:"grey",null:"bold",string:"green",date:"magenta",regexp:"red"},t.isArray=p,t.isBoolean=f,t.isNull=m,t.isNullOrUndefined=function(e){return null==e},t.isNumber=w,t.isString=g,t.isSymbol=function(e){return"symbol"==typeof e},t.isUndefined=b,t.isRegExp=_,t.isObject=y,t.isDate=v,t.isError=x,t.isFunction=E,t.isPrimitive=function(e){return null===e||"boolean"==typeof e||"number"==typeof e||"string"==typeof e||"symbol"==typeof e||void 0===e},t.isBuffer=n(171);var k=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function T(){var e=new Date,t=[S(e.getHours()),S(e.getMinutes()),S(e.getSeconds())].join(":");return[e.getDate(),k[e.getMonth()],t].join(" ")}function C(e,t){return Object.prototype.hasOwnProperty.call(e,t)}t.log=function(){console.log("%s - %s",T(),t.format.apply(t,arguments))},t.inherits=n(9),t._extend=function(e,t){if(!t||!y(t))return e;for(var n=Object.keys(t),r=n.length;r--;)e[n[r]]=t[n[r]];return e};var D="undefined"!=typeof Symbol?Symbol("util.promisify.custom"):void 0;function R(e,t){if(!e){var n=new Error("Promise was rejected with a falsy value");n.reason=e,e=n}return t(e)}t.promisify=function(e){if("function"!=typeof e)throw new TypeError('The "original" argument must be of type Function');if(D&&e[D]){var t;if("function"!=typeof(t=e[D]))throw new TypeError('The "util.promisify.custom" argument must be of type Function');return Object.defineProperty(t,D,{value:t,enumerable:!1,writable:!1,configurable:!0}),t}function t(){for(var t,n,r=new Promise((function(e,r){t=e,n=r})),i=[],s=0;s255||(0|e)!==e)throw new Error("value must be a small positive integer: "+e);this.value=e}toString(){return"simple("+this.value+")"}[r.inspect.custom](e,t){return"simple("+this.value+")"}inspect(e,t){return"simple("+this.value+")"}encodeCBOR(e){return e._pushInt(this.value,s.SIMPLE_FLOAT)}static isSimple(e){return e instanceof u}static decode(e,t=!0,n=!1){switch(e){case o.FALSE:return!1;case o.TRUE:return!0;case o.NULL:return t?null:a.NULL;case o.UNDEFINED:return t?void 0:a.UNDEFINED;case-1:if(!t||!n)throw new Error("Invalid BREAK");return a.BREAK;default:return new u(e)}}}e.exports=u},function(e,t,n){"use strict";(function(t){const r=n(4),i=n(23);class s extends r.Transform{constructor(e,n,r){let i,s;switch(null==r&&(r={}),typeof e){case"object":t.isBuffer(e)?(i=e,null!=n&&"object"==typeof n&&(r=n)):r=e;break;case"string":i=e,null!=n&&"object"==typeof n?r=n:s=n}null==r&&(r={}),null==i&&(i=r.input),null==s&&(s=r.inputEncoding),delete r.input,delete r.inputEncoding;const o=null==r.watchPipe||r.watchPipe;delete r.watchPipe;const a=!!r.readError;delete r.readError,super(r),this.readError=a,o&&this.on("pipe",e=>{const t=e._readableState.objectMode;if(this.length>0&&t!==this._readableState.objectMode)throw new Error("Do not switch objectMode in the middle of the stream");return this._readableState.objectMode=t,this._writableState.objectMode=t}),null!=i&&this.end(i,s)}static isNoFilter(e){return e instanceof this}static compare(e,t){if(!(e instanceof this))throw new TypeError("Arguments must be NoFilters");return e===t?0:e.compare(t)}static concat(e,n){if(!Array.isArray(e))throw new TypeError("list argument must be an Array of NoFilters");if(0===e.length||0===n)return t.alloc(0);null==n&&(n=e.reduce((e,t)=>{if(!(t instanceof s))throw new TypeError("list argument must be an Array of NoFilters");return e+t.length},0));let r=!0,i=!0;const o=e.map(e=>{if(!(e instanceof s))throw new TypeError("list argument must be an Array of NoFilters");const n=e.slice();return t.isBuffer(n)?i=!1:r=!1,n});if(r)return t.concat(o,n);if(i)return[].concat(...o).slice(0,n);throw new Error("Concatenating mixed object and byte streams not supported")}_transform(e,n,r){this._readableState.objectMode||t.isBuffer(e)||(e=t.from(e,n)),this.push(e),r()}_bufArray(){let e=this._readableState.buffer;if(!Array.isArray(e)){let t=e.head;for(e=[];null!=t;)e.push(t.data),t=t.next}return e}read(e){const t=super.read(e);if(null!=t){if(this.emit("read",t),this.readError&&t.length{this.on("finish",()=>{const r=this.read();null==e||t||(t=!0,e(null,r)),n(r)}),this.on("error",n=>{null==e||t||(t=!0,e(n)),r(n)})})}compare(e){if(!(e instanceof s))throw new TypeError("Arguments must be NoFilters");if(this===e)return 0;{const n=this.slice(),r=e.slice();if(t.isBuffer(n)&&t.isBuffer(r))return n.compare(r);throw new Error("Cannot compare streams in object mode")}}equals(e){return 0===this.compare(e)}slice(e,n){if(this._readableState.objectMode)return this._bufArray().slice(e,n);const r=this._bufArray();switch(r.length){case 0:return t.alloc(0);case 1:return r[0].slice(e,n);default:return t.concat(r).slice(e,n)}}get(e){return this.slice()[e]}toJSON(){const e=this.slice();return t.isBuffer(e)?e.toJSON():e}toString(e,n,r){const s=this.slice(n,r);if(!t.isBuffer(s))return JSON.stringify(s);if((!e||"utf8"===e)&&i.TextDecoder){return new i.TextDecoder("utf8",{fatal:!0,ignoreBOM:!0}).decode(s)}return s.toString(e,n,r)}inspect(e,t){return this[i.inspect.custom](e,t)}[i.inspect.custom](e,n){const r=this._bufArray().map(e=>t.isBuffer(e)?(null!=n?n.stylize:void 0)?n.stylize(e.toString("hex"),"string"):e.toString("hex"):i.inspect(e,n)).join(", ");return`${this.constructor.name} [${r}]`}get length(){return this._readableState.length}writeBigInt(e){let n=e.toString(16);if(e<0){const t=BigInt(Math.floor(n.length/2));n=(e=(BigInt(1)<=a.DIGIT_0&&e<=a.DIGIT_9}function ze(e){return e>=a.LATIN_CAPITAL_A&&e<=a.LATIN_CAPITAL_Z}function He(e){return e>=a.LATIN_SMALL_A&&e<=a.LATIN_SMALL_Z}function Ge(e){return He(e)||ze(e)}function qe(e){return Ge(e)||We(e)}function Ve(e){return e>=a.LATIN_CAPITAL_A&&e<=a.LATIN_CAPITAL_F}function Ke(e){return e>=a.LATIN_SMALL_A&&e<=a.LATIN_SMALL_F}function Xe(e){return e+32}function Ye(e){return e<=65535?String.fromCharCode(e):(e-=65536,String.fromCharCode(e>>>10&1023|55296)+String.fromCharCode(56320|1023&e))}function Je(e){return String.fromCharCode(Xe(e))}function Ze(e,t){const n=s[++e];let r=++e,i=r+n-1;for(;r<=i;){const e=r+i>>>1,o=s[e];if(ot))return s[e+n];i=e-1}}return-1}class Qe{constructor(){this.preprocessor=new r,this.tokenQueue=[],this.allowCDATA=!1,this.state=f,this.returnState="",this.charRefCode=-1,this.tempBuff=[],this.lastStartTagName="",this.consumedAfterSnapshot=-1,this.active=!1,this.currentCharacterToken=null,this.currentToken=null,this.currentAttr=null}_err(){}_errOnNextCodePoint(e){this._consume(),this._err(e),this._unconsume()}getNextToken(){for(;!this.tokenQueue.length&&this.active;){this.consumedAfterSnapshot=0;const e=this._consume();this._ensureHibernation()||this[this.state](e)}return this.tokenQueue.shift()}write(e,t){this.active=!0,this.preprocessor.write(e,t)}insertHtmlAtCurrentPos(e){this.active=!0,this.preprocessor.insertHtmlAtCurrentPos(e)}_ensureHibernation(){if(this.preprocessor.endOfChunkHit){for(;this.consumedAfterSnapshot>0;this.consumedAfterSnapshot--)this.preprocessor.retreat();return this.active=!1,this.tokenQueue.push({type:Qe.HIBERNATION_TOKEN}),!0}return!1}_consume(){return this.consumedAfterSnapshot++,this.preprocessor.advance()}_unconsume(){this.consumedAfterSnapshot--,this.preprocessor.retreat()}_reconsumeInState(e){this.state=e,this._unconsume()}_consumeSequenceIfMatch(e,t,n){let r=0,i=!0;const s=e.length;let o=0,u=t,l=void 0;for(;o0&&(u=this._consume(),r++),u===a.EOF){i=!1;break}if(u!==(l=e[o])&&(n||u!==Xe(l))){i=!1;break}}if(!i)for(;r--;)this._unconsume();return i}_isTempBufferEqualToScriptString(){if(this.tempBuff.length!==u.SCRIPT_STRING.length)return!1;for(let e=0;e0&&this._err(o.endTagWithAttributes),e.selfClosing&&this._err(o.endTagWithTrailingSolidus)),this.tokenQueue.push(e)}_emitCurrentCharacterToken(){this.currentCharacterToken&&(this.tokenQueue.push(this.currentCharacterToken),this.currentCharacterToken=null)}_emitEOFToken(){this._createEOFToken(),this._emitCurrentToken()}_appendCharToCurrentCharacterToken(e,t){this.currentCharacterToken&&this.currentCharacterToken.type!==e&&this._emitCurrentCharacterToken(),this.currentCharacterToken?this.currentCharacterToken.chars+=t:this._createCharacterToken(e,t)}_emitCodePoint(e){let t=Qe.CHARACTER_TOKEN;je(e)?t=Qe.WHITESPACE_CHARACTER_TOKEN:e===a.NULL&&(t=Qe.NULL_CHARACTER_TOKEN),this._appendCharToCurrentCharacterToken(t,Ye(e))}_emitSeveralCodePoints(e){for(let t=0;t-1;){const e=s[r],i=e")):e===a.NULL?(this._err(o.unexpectedNullCharacter),this.state=N,this._emitChars(i.REPLACEMENT_CHARACTER)):e===a.EOF?(this._err(o.eofInScriptHtmlCommentLikeText),this._emitEOFToken()):(this.state=N,this._emitCodePoint(e))}[L](e){e===a.SOLIDUS?(this.tempBuff=[],this.state=B):Ge(e)?(this.tempBuff=[],this._emitChars("<"),this._reconsumeInState(M)):(this._emitChars("<"),this._reconsumeInState(N))}[B](e){Ge(e)?(this._createEndTagToken(),this._reconsumeInState(U)):(this._emitChars("")):e===a.NULL?(this._err(o.unexpectedNullCharacter),this.state=j,this._emitChars(i.REPLACEMENT_CHARACTER)):e===a.EOF?(this._err(o.eofInScriptHtmlCommentLikeText),this._emitEOFToken()):(this.state=j,this._emitCodePoint(e))}[H](e){e===a.SOLIDUS?(this.tempBuff=[],this.state=G,this._emitChars("/")):this._reconsumeInState(j)}[G](e){je(e)||e===a.SOLIDUS||e===a.GREATER_THAN_SIGN?(this.state=this._isTempBufferEqualToScriptString()?N:j,this._emitCodePoint(e)):ze(e)?(this.tempBuff.push(Xe(e)),this._emitCodePoint(e)):He(e)?(this.tempBuff.push(e),this._emitCodePoint(e)):this._reconsumeInState(j)}[q](e){je(e)||(e===a.SOLIDUS||e===a.GREATER_THAN_SIGN||e===a.EOF?this._reconsumeInState(K):e===a.EQUALS_SIGN?(this._err(o.unexpectedEqualsSignBeforeAttributeName),this._createAttr("="),this.state=V):(this._createAttr(""),this._reconsumeInState(V)))}[V](e){je(e)||e===a.SOLIDUS||e===a.GREATER_THAN_SIGN||e===a.EOF?(this._leaveAttrName(K),this._unconsume()):e===a.EQUALS_SIGN?this._leaveAttrName(X):ze(e)?this.currentAttr.name+=Je(e):e===a.QUOTATION_MARK||e===a.APOSTROPHE||e===a.LESS_THAN_SIGN?(this._err(o.unexpectedCharacterInAttributeName),this.currentAttr.name+=Ye(e)):e===a.NULL?(this._err(o.unexpectedNullCharacter),this.currentAttr.name+=i.REPLACEMENT_CHARACTER):this.currentAttr.name+=Ye(e)}[K](e){je(e)||(e===a.SOLIDUS?this.state=$:e===a.EQUALS_SIGN?this.state=X:e===a.GREATER_THAN_SIGN?(this.state=f,this._emitCurrentToken()):e===a.EOF?(this._err(o.eofInTag),this._emitEOFToken()):(this._createAttr(""),this._reconsumeInState(V)))}[X](e){je(e)||(e===a.QUOTATION_MARK?this.state=Y:e===a.APOSTROPHE?this.state=J:e===a.GREATER_THAN_SIGN?(this._err(o.missingAttributeValue),this.state=f,this._emitCurrentToken()):this._reconsumeInState(Z))}[Y](e){e===a.QUOTATION_MARK?this.state=Q:e===a.AMPERSAND?(this.returnState=Y,this.state=Oe):e===a.NULL?(this._err(o.unexpectedNullCharacter),this.currentAttr.value+=i.REPLACEMENT_CHARACTER):e===a.EOF?(this._err(o.eofInTag),this._emitEOFToken()):this.currentAttr.value+=Ye(e)}[J](e){e===a.APOSTROPHE?this.state=Q:e===a.AMPERSAND?(this.returnState=J,this.state=Oe):e===a.NULL?(this._err(o.unexpectedNullCharacter),this.currentAttr.value+=i.REPLACEMENT_CHARACTER):e===a.EOF?(this._err(o.eofInTag),this._emitEOFToken()):this.currentAttr.value+=Ye(e)}[Z](e){je(e)?this._leaveAttrValue(q):e===a.AMPERSAND?(this.returnState=Z,this.state=Oe):e===a.GREATER_THAN_SIGN?(this._leaveAttrValue(f),this._emitCurrentToken()):e===a.NULL?(this._err(o.unexpectedNullCharacter),this.currentAttr.value+=i.REPLACEMENT_CHARACTER):e===a.QUOTATION_MARK||e===a.APOSTROPHE||e===a.LESS_THAN_SIGN||e===a.EQUALS_SIGN||e===a.GRAVE_ACCENT?(this._err(o.unexpectedCharacterInUnquotedAttributeValue),this.currentAttr.value+=Ye(e)):e===a.EOF?(this._err(o.eofInTag),this._emitEOFToken()):this.currentAttr.value+=Ye(e)}[Q](e){je(e)?this._leaveAttrValue(q):e===a.SOLIDUS?this._leaveAttrValue($):e===a.GREATER_THAN_SIGN?(this._leaveAttrValue(f),this._emitCurrentToken()):e===a.EOF?(this._err(o.eofInTag),this._emitEOFToken()):(this._err(o.missingWhitespaceBetweenAttributes),this._reconsumeInState(q))}[$](e){e===a.GREATER_THAN_SIGN?(this.currentToken.selfClosing=!0,this.state=f,this._emitCurrentToken()):e===a.EOF?(this._err(o.eofInTag),this._emitEOFToken()):(this._err(o.unexpectedSolidusInTag),this._reconsumeInState(q))}[ee](e){e===a.GREATER_THAN_SIGN?(this.state=f,this._emitCurrentToken()):e===a.EOF?(this._emitCurrentToken(),this._emitEOFToken()):e===a.NULL?(this._err(o.unexpectedNullCharacter),this.currentToken.data+=i.REPLACEMENT_CHARACTER):this.currentToken.data+=Ye(e)}[te](e){this._consumeSequenceIfMatch(u.DASH_DASH_STRING,e,!0)?(this._createCommentToken(),this.state=ne):this._consumeSequenceIfMatch(u.DOCTYPE_STRING,e,!1)?this.state=de:this._consumeSequenceIfMatch(u.CDATA_START_STRING,e,!0)?this.allowCDATA?this.state=Ce:(this._err(o.cdataInHtmlContent),this._createCommentToken(),this.currentToken.data="[CDATA[",this.state=ee):this._ensureHibernation()||(this._err(o.incorrectlyOpenedComment),this._createCommentToken(),this._reconsumeInState(ee))}[ne](e){e===a.HYPHEN_MINUS?this.state=re:e===a.GREATER_THAN_SIGN?(this._err(o.abruptClosingOfEmptyComment),this.state=f,this._emitCurrentToken()):this._reconsumeInState(ie)}[re](e){e===a.HYPHEN_MINUS?this.state=ce:e===a.GREATER_THAN_SIGN?(this._err(o.abruptClosingOfEmptyComment),this.state=f,this._emitCurrentToken()):e===a.EOF?(this._err(o.eofInComment),this._emitCurrentToken(),this._emitEOFToken()):(this.currentToken.data+="-",this._reconsumeInState(ie))}[ie](e){e===a.HYPHEN_MINUS?this.state=le:e===a.LESS_THAN_SIGN?(this.currentToken.data+="<",this.state=se):e===a.NULL?(this._err(o.unexpectedNullCharacter),this.currentToken.data+=i.REPLACEMENT_CHARACTER):e===a.EOF?(this._err(o.eofInComment),this._emitCurrentToken(),this._emitEOFToken()):this.currentToken.data+=Ye(e)}[se](e){e===a.EXCLAMATION_MARK?(this.currentToken.data+="!",this.state=oe):e===a.LESS_THAN_SIGN?this.currentToken.data+="!":this._reconsumeInState(ie)}[oe](e){e===a.HYPHEN_MINUS?this.state=ae:this._reconsumeInState(ie)}[ae](e){e===a.HYPHEN_MINUS?this.state=ue:this._reconsumeInState(le)}[ue](e){e!==a.GREATER_THAN_SIGN&&e!==a.EOF&&this._err(o.nestedComment),this._reconsumeInState(ce)}[le](e){e===a.HYPHEN_MINUS?this.state=ce:e===a.EOF?(this._err(o.eofInComment),this._emitCurrentToken(),this._emitEOFToken()):(this.currentToken.data+="-",this._reconsumeInState(ie))}[ce](e){e===a.GREATER_THAN_SIGN?(this.state=f,this._emitCurrentToken()):e===a.EXCLAMATION_MARK?this.state=he:e===a.HYPHEN_MINUS?this.currentToken.data+="-":e===a.EOF?(this._err(o.eofInComment),this._emitCurrentToken(),this._emitEOFToken()):(this.currentToken.data+="--",this._reconsumeInState(ie))}[he](e){e===a.HYPHEN_MINUS?(this.currentToken.data+="--!",this.state=le):e===a.GREATER_THAN_SIGN?(this._err(o.incorrectlyClosedComment),this.state=f,this._emitCurrentToken()):e===a.EOF?(this._err(o.eofInComment),this._emitCurrentToken(),this._emitEOFToken()):(this.currentToken.data+="--!",this._reconsumeInState(ie))}[de](e){je(e)?this.state=pe:e===a.GREATER_THAN_SIGN?this._reconsumeInState(pe):e===a.EOF?(this._err(o.eofInDoctype),this._createDoctypeToken(null),this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this._emitEOFToken()):(this._err(o.missingWhitespaceBeforeDoctypeName),this._reconsumeInState(pe))}[pe](e){je(e)||(ze(e)?(this._createDoctypeToken(Je(e)),this.state=fe):e===a.NULL?(this._err(o.unexpectedNullCharacter),this._createDoctypeToken(i.REPLACEMENT_CHARACTER),this.state=fe):e===a.GREATER_THAN_SIGN?(this._err(o.missingDoctypeName),this._createDoctypeToken(null),this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this.state=f):e===a.EOF?(this._err(o.eofInDoctype),this._createDoctypeToken(null),this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this._emitEOFToken()):(this._createDoctypeToken(Ye(e)),this.state=fe))}[fe](e){je(e)?this.state=me:e===a.GREATER_THAN_SIGN?(this.state=f,this._emitCurrentToken()):ze(e)?this.currentToken.name+=Je(e):e===a.NULL?(this._err(o.unexpectedNullCharacter),this.currentToken.name+=i.REPLACEMENT_CHARACTER):e===a.EOF?(this._err(o.eofInDoctype),this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this._emitEOFToken()):this.currentToken.name+=Ye(e)}[me](e){je(e)||(e===a.GREATER_THAN_SIGN?(this.state=f,this._emitCurrentToken()):e===a.EOF?(this._err(o.eofInDoctype),this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this._emitEOFToken()):this._consumeSequenceIfMatch(u.PUBLIC_STRING,e,!1)?this.state=we:this._consumeSequenceIfMatch(u.SYSTEM_STRING,e,!1)?this.state=xe:this._ensureHibernation()||(this._err(o.invalidCharacterSequenceAfterDoctypeName),this.currentToken.forceQuirks=!0,this._reconsumeInState(Te)))}[we](e){je(e)?this.state=ge:e===a.QUOTATION_MARK?(this._err(o.missingWhitespaceAfterDoctypePublicKeyword),this.currentToken.publicId="",this.state=be):e===a.APOSTROPHE?(this._err(o.missingWhitespaceAfterDoctypePublicKeyword),this.currentToken.publicId="",this.state=_e):e===a.GREATER_THAN_SIGN?(this._err(o.missingDoctypePublicIdentifier),this.currentToken.forceQuirks=!0,this.state=f,this._emitCurrentToken()):e===a.EOF?(this._err(o.eofInDoctype),this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this._emitEOFToken()):(this._err(o.missingQuoteBeforeDoctypePublicIdentifier),this.currentToken.forceQuirks=!0,this._reconsumeInState(Te))}[ge](e){je(e)||(e===a.QUOTATION_MARK?(this.currentToken.publicId="",this.state=be):e===a.APOSTROPHE?(this.currentToken.publicId="",this.state=_e):e===a.GREATER_THAN_SIGN?(this._err(o.missingDoctypePublicIdentifier),this.currentToken.forceQuirks=!0,this.state=f,this._emitCurrentToken()):e===a.EOF?(this._err(o.eofInDoctype),this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this._emitEOFToken()):(this._err(o.missingQuoteBeforeDoctypePublicIdentifier),this.currentToken.forceQuirks=!0,this._reconsumeInState(Te)))}[be](e){e===a.QUOTATION_MARK?this.state=ye:e===a.NULL?(this._err(o.unexpectedNullCharacter),this.currentToken.publicId+=i.REPLACEMENT_CHARACTER):e===a.GREATER_THAN_SIGN?(this._err(o.abruptDoctypePublicIdentifier),this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this.state=f):e===a.EOF?(this._err(o.eofInDoctype),this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this._emitEOFToken()):this.currentToken.publicId+=Ye(e)}[_e](e){e===a.APOSTROPHE?this.state=ye:e===a.NULL?(this._err(o.unexpectedNullCharacter),this.currentToken.publicId+=i.REPLACEMENT_CHARACTER):e===a.GREATER_THAN_SIGN?(this._err(o.abruptDoctypePublicIdentifier),this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this.state=f):e===a.EOF?(this._err(o.eofInDoctype),this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this._emitEOFToken()):this.currentToken.publicId+=Ye(e)}[ye](e){je(e)?this.state=ve:e===a.GREATER_THAN_SIGN?(this.state=f,this._emitCurrentToken()):e===a.QUOTATION_MARK?(this._err(o.missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers),this.currentToken.systemId="",this.state=Ae):e===a.APOSTROPHE?(this._err(o.missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers),this.currentToken.systemId="",this.state=Se):e===a.EOF?(this._err(o.eofInDoctype),this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this._emitEOFToken()):(this._err(o.missingQuoteBeforeDoctypeSystemIdentifier),this.currentToken.forceQuirks=!0,this._reconsumeInState(Te))}[ve](e){je(e)||(e===a.GREATER_THAN_SIGN?(this._emitCurrentToken(),this.state=f):e===a.QUOTATION_MARK?(this.currentToken.systemId="",this.state=Ae):e===a.APOSTROPHE?(this.currentToken.systemId="",this.state=Se):e===a.EOF?(this._err(o.eofInDoctype),this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this._emitEOFToken()):(this._err(o.missingQuoteBeforeDoctypeSystemIdentifier),this.currentToken.forceQuirks=!0,this._reconsumeInState(Te)))}[xe](e){je(e)?this.state=Ee:e===a.QUOTATION_MARK?(this._err(o.missingWhitespaceAfterDoctypeSystemKeyword),this.currentToken.systemId="",this.state=Ae):e===a.APOSTROPHE?(this._err(o.missingWhitespaceAfterDoctypeSystemKeyword),this.currentToken.systemId="",this.state=Se):e===a.GREATER_THAN_SIGN?(this._err(o.missingDoctypeSystemIdentifier),this.currentToken.forceQuirks=!0,this.state=f,this._emitCurrentToken()):e===a.EOF?(this._err(o.eofInDoctype),this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this._emitEOFToken()):(this._err(o.missingQuoteBeforeDoctypeSystemIdentifier),this.currentToken.forceQuirks=!0,this._reconsumeInState(Te))}[Ee](e){je(e)||(e===a.QUOTATION_MARK?(this.currentToken.systemId="",this.state=Ae):e===a.APOSTROPHE?(this.currentToken.systemId="",this.state=Se):e===a.GREATER_THAN_SIGN?(this._err(o.missingDoctypeSystemIdentifier),this.currentToken.forceQuirks=!0,this.state=f,this._emitCurrentToken()):e===a.EOF?(this._err(o.eofInDoctype),this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this._emitEOFToken()):(this._err(o.missingQuoteBeforeDoctypeSystemIdentifier),this.currentToken.forceQuirks=!0,this._reconsumeInState(Te)))}[Ae](e){e===a.QUOTATION_MARK?this.state=ke:e===a.NULL?(this._err(o.unexpectedNullCharacter),this.currentToken.systemId+=i.REPLACEMENT_CHARACTER):e===a.GREATER_THAN_SIGN?(this._err(o.abruptDoctypeSystemIdentifier),this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this.state=f):e===a.EOF?(this._err(o.eofInDoctype),this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this._emitEOFToken()):this.currentToken.systemId+=Ye(e)}[Se](e){e===a.APOSTROPHE?this.state=ke:e===a.NULL?(this._err(o.unexpectedNullCharacter),this.currentToken.systemId+=i.REPLACEMENT_CHARACTER):e===a.GREATER_THAN_SIGN?(this._err(o.abruptDoctypeSystemIdentifier),this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this.state=f):e===a.EOF?(this._err(o.eofInDoctype),this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this._emitEOFToken()):this.currentToken.systemId+=Ye(e)}[ke](e){je(e)||(e===a.GREATER_THAN_SIGN?(this._emitCurrentToken(),this.state=f):e===a.EOF?(this._err(o.eofInDoctype),this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this._emitEOFToken()):(this._err(o.unexpectedCharacterAfterDoctypeSystemIdentifier),this._reconsumeInState(Te)))}[Te](e){e===a.GREATER_THAN_SIGN?(this._emitCurrentToken(),this.state=f):e===a.NULL?this._err(o.unexpectedNullCharacter):e===a.EOF&&(this._emitCurrentToken(),this._emitEOFToken())}[Ce](e){e===a.RIGHT_SQUARE_BRACKET?this.state=De:e===a.EOF?(this._err(o.eofInCdata),this._emitEOFToken()):this._emitCodePoint(e)}[De](e){e===a.RIGHT_SQUARE_BRACKET?this.state=Re:(this._emitChars("]"),this._reconsumeInState(Ce))}[Re](e){e===a.GREATER_THAN_SIGN?this.state=f:e===a.RIGHT_SQUARE_BRACKET?this._emitChars("]"):(this._emitChars("]]"),this._reconsumeInState(Ce))}[Oe](e){this.tempBuff=[a.AMPERSAND],e===a.NUMBER_SIGN?(this.tempBuff.push(e),this.state=Fe):qe(e)?this._reconsumeInState(Ie):(this._flushCodePointsConsumedAsCharacterReference(),this._reconsumeInState(this.returnState))}[Ie](e){const t=this._matchNamedCharacterReference(e);if(this._ensureHibernation())this.tempBuff=[a.AMPERSAND];else if(t){const e=this.tempBuff[this.tempBuff.length-1]===a.SEMICOLON;this._isCharacterReferenceAttributeQuirk(e)||(e||this._errOnNextCodePoint(o.missingSemicolonAfterCharacterReference),this.tempBuff=t),this._flushCodePointsConsumedAsCharacterReference(),this.state=this.returnState}else this._flushCodePointsConsumedAsCharacterReference(),this.state=Ne}[Ne](e){qe(e)?this._isCharacterReferenceInAttribute()?this.currentAttr.value+=Ye(e):this._emitCodePoint(e):(e===a.SEMICOLON&&this._err(o.unknownNamedCharacterReference),this._reconsumeInState(this.returnState))}[Fe](e){this.charRefCode=0,e===a.LATIN_SMALL_X||e===a.LATIN_CAPITAL_X?(this.tempBuff.push(e),this.state=Pe):this._reconsumeInState(Le)}[Pe](e){!function(e){return We(e)||Ve(e)||Ke(e)}(e)?(this._err(o.absenceOfDigitsInNumericCharacterReference),this._flushCodePointsConsumedAsCharacterReference(),this._reconsumeInState(this.returnState)):this._reconsumeInState(Be)}[Le](e){We(e)?this._reconsumeInState(Ue):(this._err(o.absenceOfDigitsInNumericCharacterReference),this._flushCodePointsConsumedAsCharacterReference(),this._reconsumeInState(this.returnState))}[Be](e){Ve(e)?this.charRefCode=16*this.charRefCode+e-55:Ke(e)?this.charRefCode=16*this.charRefCode+e-87:We(e)?this.charRefCode=16*this.charRefCode+e-48:e===a.SEMICOLON?this.state=Me:(this._err(o.missingSemicolonAfterCharacterReference),this._reconsumeInState(Me))}[Ue](e){We(e)?this.charRefCode=10*this.charRefCode+e-48:e===a.SEMICOLON?this.state=Me:(this._err(o.missingSemicolonAfterCharacterReference),this._reconsumeInState(Me))}[Me](){if(this.charRefCode===a.NULL)this._err(o.nullCharacterReference),this.charRefCode=a.REPLACEMENT_CHARACTER;else if(this.charRefCode>1114111)this._err(o.characterReferenceOutsideUnicodeRange),this.charRefCode=a.REPLACEMENT_CHARACTER;else if(i.isSurrogate(this.charRefCode))this._err(o.surrogateCharacterReference),this.charRefCode=a.REPLACEMENT_CHARACTER;else if(i.isUndefinedCodePoint(this.charRefCode))this._err(o.noncharacterCharacterReference);else if(i.isControlCodePoint(this.charRefCode)||this.charRefCode===a.CARRIAGE_RETURN){this._err(o.controlCharacterReference);const e=l[this.charRefCode];e&&(this.charRefCode=e)}this.tempBuff=[this.charRefCode],this._flushCodePointsConsumedAsCharacterReference(),this._reconsumeInState(this.returnState)}}Qe.CHARACTER_TOKEN="CHARACTER_TOKEN",Qe.NULL_CHARACTER_TOKEN="NULL_CHARACTER_TOKEN",Qe.WHITESPACE_CHARACTER_TOKEN="WHITESPACE_CHARACTER_TOKEN",Qe.START_TAG_TOKEN="START_TAG_TOKEN",Qe.END_TAG_TOKEN="END_TAG_TOKEN",Qe.COMMENT_TOKEN="COMMENT_TOKEN",Qe.DOCTYPE_TOKEN="DOCTYPE_TOKEN",Qe.EOF_TOKEN="EOF_TOKEN",Qe.HIBERNATION_TOKEN="HIBERNATION_TOKEN",Qe.MODE={DATA:f,RCDATA:m,RAWTEXT:w,SCRIPT_DATA:g,PLAINTEXT:b},Qe.getTokenAttr=function(e,t){for(let n=e.attrs.length-1;n>=0;n--)if(e.attrs[n].name===t)return e.attrs[n].value;return null},e.exports=Qe},function(e,t,n){"use strict";const r=n(7),i=n(7).buildOptions,s=n(138),o={OPENING:1,CLOSING:2,SELF:3,CDATA:4};let a="<((!\\[CDATA\\[([\\s\\S]*?)(]]>))|(([\\w:\\-._]*:)?([\\w:\\-._]+))([^>]*)>|((\\/)(([\\w:\\-._]*:)?([\\w:\\-._]+))\\s*>))([^<]*)";!Number.parseInt&&window.parseInt&&(Number.parseInt=window.parseInt),!Number.parseFloat&&window.parseFloat&&(Number.parseFloat=window.parseFloat);const u={attributeNamePrefix:"@_",attrNodeName:!1,textNodeName:"#text",ignoreAttributes:!0,ignoreNameSpace:!1,allowBooleanAttributes:!1,parseNodeValue:!0,parseAttributeValue:!1,arrayMode:!1,trimValues:!0,cdataTagName:!1,cdataPositionChar:"\\c",localeRange:"",tagValueProcessor:function(e,t){return e},attrValueProcessor:function(e,t){return e},stopNodes:[]};t.defaultOptions=u;const l=["attributeNamePrefix","attrNodeName","textNodeName","ignoreAttributes","ignoreNameSpace","allowBooleanAttributes","parseNodeValue","parseAttributeValue","arrayMode","trimValues","cdataTagName","cdataPositionChar","localeRange","tagValueProcessor","attrValueProcessor","parseTrueNumberOnly","stopNodes"];t.props=l;function c(e,t,n){const r=e[7]||n;let i=e[14];return i&&(t.trimValues&&(i=i.trim()),i=p(i=t.tagValueProcessor(i,r),t.parseNodeValue,t.parseTrueNumberOnly)),i}function h(e){return"]]>"===e[4]?o.CDATA:"/"===e[10]?o.CLOSING:void 0!==e[8]&&"/"===e[8].substr(e[8].length-1)?o.SELF:o.OPENING}function d(e,t){if(t.ignoreNameSpace){const t=e.split(":"),n="/"===e.charAt(0)?"/":"";if("xmlns"===t[0])return"";2===t.length&&(e=n+t[1])}return e}function p(e,t,n){if(t&&"string"==typeof e){let t;return""===e.trim()||isNaN(e)?t="true"===e||"false"!==e&&e:(-1!==e.indexOf("0x")?t=Number.parseInt(e,16):-1!==e.indexOf(".")?(t=Number.parseFloat(e),e=e.replace(/0+$/,"")):t=Number.parseInt(e,10),n&&(t=String(t)===e?t:e)),t}return r.isExist(e)?e:""}const f=new RegExp("([^\\s=]+)\\s*(=\\s*(['\"])(.*?)\\3)?","g");function m(e,t){if(!t.ignoreAttributes&&"string"==typeof e){e=e.replace(/\r?\n/g," ");const n=r.getAllMatches(e,f),i=n.length,s={};for(let e=0;e/g,"");const n=new s("!xml");let d=n;a=a.replace(/\[\\w/g,"["+t.localeRange+"\\w");const p=new RegExp(a,"g");let f=p.exec(e),w=p.exec(e);for(;f;){const n=h(f);if(n===o.CLOSING)d.parent&&f[14]&&(d.parent.val=r.getValue(d.parent.val)+""+c(f,t,d.parent.tagname)),t.stopNodes.length&&t.stopNodes.includes(d.tagname)&&(d.child=[],null==d.attrsMap&&(d.attrsMap={}),d.val=e.substr(d.startIndex+1,f.index-d.startIndex-1)),d=d.parent;else if(n===o.CDATA)if(t.cdataTagName){const e=new s(t.cdataTagName,d,f[3]);e.attrsMap=m(f[8],t),d.addChild(e),d.val=r.getValue(d.val)+t.cdataPositionChar,f[14]&&(d.val+=c(f,t))}else d.val=(d.val||"")+(f[3]||"")+c(f,t);else if(n===o.SELF){d&&f[14]&&(d.val=r.getValue(d.val)+""+c(f,t));const e=new s(t.ignoreNameSpace?f[7]:f[5],d,"");f[8]&&f[8].length>0&&(f[8]=f[8].substr(0,f[8].length-1)),e.attrsMap=m(f[8],t),d.addChild(e)}else{const e=new s(t.ignoreNameSpace?f[7]:f[5],d,c(f,t));t.stopNodes.length&&t.stopNodes.includes(e.tagname)&&(e.startIndex=f.index+f[1].length),e.attrsMap=m(f[8],t),d.addChild(e),d=e}f=w,w=p.exec(e)}return n}},function(e,t,n){"use strict";var r=n(15);e.exports=r.DEFAULT=new r({include:[n(22)],explicit:[n(160),n(161),n(162)]})},function(e,t,n){"use strict";(function(t){const r=n(172),i=n(49),s=n(24),o=n(16),a=n(17).BigNumber,u=n(25),l=n(12),c=l.MT,h=l.NUMBYTES,d=(l.SIMPLE,l.SYMS),p=new a(-1),f=p.minus(new a(Number.MAX_SAFE_INTEGER.toString(16),16)),m=Symbol("count"),w=(Symbol("pending_key"),Symbol("major type")),g=Symbol("error"),b=Symbol("not found");function _(e,t,n){const r=[];return r[m]=n,r[d.PARENT]=e,r[w]=t,r}function y(e,t){const n=new u;return n[m]=-1,n[d.PARENT]=e,n[w]=t,n}function v(e){return o.bufferToBigInt(e)}function x(e){return BigInt("-1")-o.bufferToBigInt(e)}class E extends r{constructor(e){const t=(e=e||{}).tags;delete e.tags;const n=null!=e.max_depth?e.max_depth:-1;delete e.max_depth;const r=!!o.hasBigInt&&!!e.bigint;delete e.bigint,super(e),this.running=!0,this.max_depth=n,this.tags=t,r&&(null==this.tags&&(this.tags={}),this.tags[2]=v,this.tags[3]=x)}static nullcheck(e){switch(e){case d.NULL:return null;case d.UNDEFINED:return;case b:throw new Error("Value not found");default:return e}}static decodeFirstSync(e,t){let n,r={};switch(typeof(t=t||{encoding:"hex"})){case"string":n=t;break;case"object":n=(r=o.extend({},t)).encoding,delete r.encoding}const i=new E(r),s=new u(e,null!=n?n:o.guessEncoding(e)),a=i._parse();let l=a.next();for(;!l.done;){const e=s.read(l.value);if(null==e||e.length!==l.value)throw new Error("Insufficient data");l=a.next(e)}return E.nullcheck(l.value)}static decodeAllSync(e,t){let n,r={};switch(typeof(t=t||{encoding:"hex"})){case"string":n=t;break;case"object":n=(r=o.extend({},t)).encoding,delete r.encoding}const i=new E(r),s=new u(e,null!=n?n:o.guessEncoding(e)),a=[];for(;s.length>0;){const e=i._parse();let t=e.next();for(;!t.done;){const n=s.read(t.value);if(null==n||n.length!==t.value)throw new Error("Insufficient data");t=e.next(n)}a.push(E.nullcheck(t.value))}return a}static decodeFirst(e,t,n){let r={},i=!1,s="hex";switch(typeof t){case"function":n=t,s=o.guessEncoding(e);break;case"string":s=t;break;case"object":s=null!=(r=o.extend({},t)).encoding?r.encoding:o.guessEncoding(e),delete r.encoding,i=null!=r.required&&r.required,delete r.required}const a=new E(r);let u,l=b;return a.on("data",e=>{l=E.nullcheck(e),a.close()}),"function"==typeof n?(a.once("error",e=>{const t=l;return l=g,a.close(),n(e,t)}),a.once("end",()=>{switch(l){case b:return i?n(new Error("No CBOR found")):n(null,l);case g:return;default:return n(null,l)}})):u=new Promise((e,t)=>(a.once("error",e=>(l=g,a.close(),t(e))),a.once("end",()=>{switch(l){case b:return i?t(new Error("No CBOR found")):e(l);case g:return;default:return e(l)}}))),a.end(e,s),u}static decodeAll(e,t,n){let r={},i="hex";switch(typeof t){case"function":n=t,i=o.guessEncoding(e);break;case"string":i=t;break;case"object":i=null!=(r=o.extend({},t)).encoding?r.encoding:o.guessEncoding(e),delete r.encoding}const s=new E(r);let a;const u=[];return s.on("data",e=>u.push(E.nullcheck(e))),"function"==typeof n?(s.on("error",n),s.on("end",()=>n(null,u))):a=new Promise((e,t)=>{s.on("error",t),s.on("end",()=>e(u))}),s.end(e,i),a}close(){this.running=!1,this.__fresh=!0}*_parse(){let e=null,n=0,r=null;for(;;){if(this.max_depth>=0&&n>this.max_depth)throw new Error("Maximum depth "+this.max_depth+" exceeded");const l=(yield 1)[0];if(!this.running)throw new Error("Unexpected data: 0x"+l.toString(16));const g=l>>5,b=31&l,v=null!=e?e[w]:void 0,x=null!=e?e.length:void 0;switch(b){case h.ONE:this.emit("more-bytes",g,1,v,x),r=(yield 1)[0];break;case h.TWO:case h.FOUR:case h.EIGHT:const e=1<=48&&e[s]<=57||e[s]>=65&&e[s]<=70||e[s]>=97&&e[s]<=102;)s++;if(0===s)return e;if(13!=e[s]||10!=e[s+1])return e;s+=2;var i=parseInt(r.decode(e.subarray(t,s)),16);if(0==i)break;e.set(e.subarray(s,s+i),n),n+=i,13==e[s+=i]&&10==e[s+1]&&(s+=2),t=s}return e.subarray(0,n)}(e))}catch(e){console.log("Chunk-Encoding Ignored: "+e)}try{if("br"===t)0===(e=i()(e)).length&&(e=r);else if("gzip"===t||"gzip"===n){const t=new s.Inflate;t.push(e,!0),t.result&&!t.err&&(e=t.result)}}catch(e){console.log("Content-Encoding Ignored: "+e)}return e}},function(e,t,n){"use strict";var r={};(0,n(8).assign)(r,n(120),n(123),n(72)),e.exports=r},function(e,t){var n={};n[t.ACCEPTED=202]="Accepted",n[t.BAD_GATEWAY=502]="Bad Gateway",n[t.BAD_REQUEST=400]="Bad Request",n[t.CONFLICT=409]="Conflict",n[t.CONTINUE=100]="Continue",n[t.CREATED=201]="Created",n[t.EXPECTATION_FAILED=417]="Expectation Failed",n[t.FAILED_DEPENDENCY=424]="Failed Dependency",n[t.FORBIDDEN=403]="Forbidden",n[t.GATEWAY_TIMEOUT=504]="Gateway Timeout",n[t.GONE=410]="Gone",n[t.HTTP_VERSION_NOT_SUPPORTED=505]="HTTP Version Not Supported",n[t.IM_A_TEAPOT=418]="I'm a teapot",n[t.INSUFFICIENT_SPACE_ON_RESOURCE=419]="Insufficient Space on Resource",n[t.INSUFFICIENT_STORAGE=507]="Insufficient Storage",n[t.INTERNAL_SERVER_ERROR=500]="Server Error",n[t.LENGTH_REQUIRED=411]="Length Required",n[t.LOCKED=423]="Locked",n[t.METHOD_FAILURE=420]="Method Failure",n[t.METHOD_NOT_ALLOWED=405]="Method Not Allowed",n[t.MOVED_PERMANENTLY=301]="Moved Permanently",n[t.MOVED_TEMPORARILY=302]="Moved Temporarily",n[t.MULTI_STATUS=207]="Multi-Status",n[t.MULTIPLE_CHOICES=300]="Multiple Choices",n[t.NETWORK_AUTHENTICATION_REQUIRED=511]="Network Authentication Required",n[t.NO_CONTENT=204]="No Content",n[t.NON_AUTHORITATIVE_INFORMATION=203]="Non Authoritative Information",n[t.NOT_ACCEPTABLE=406]="Not Acceptable",n[t.NOT_FOUND=404]="Not Found",n[t.NOT_IMPLEMENTED=501]="Not Implemented",n[t.NOT_MODIFIED=304]="Not Modified",n[t.OK=200]="OK",n[t.PARTIAL_CONTENT=206]="Partial Content",n[t.PAYMENT_REQUIRED=402]="Payment Required",n[t.PERMANENT_REDIRECT=308]="Permanent Redirect",n[t.PRECONDITION_FAILED=412]="Precondition Failed",n[t.PRECONDITION_REQUIRED=428]="Precondition Required",n[t.PROCESSING=102]="Processing",n[t.PROXY_AUTHENTICATION_REQUIRED=407]="Proxy Authentication Required",n[t.REQUEST_HEADER_FIELDS_TOO_LARGE=431]="Request Header Fields Too Large",n[t.REQUEST_TIMEOUT=408]="Request Timeout",n[t.REQUEST_TOO_LONG=413]="Request Entity Too Large",n[t.REQUEST_URI_TOO_LONG=414]="Request-URI Too Long",n[t.REQUESTED_RANGE_NOT_SATISFIABLE=416]="Requested Range Not Satisfiable",n[t.RESET_CONTENT=205]="Reset Content",n[t.SEE_OTHER=303]="See Other",n[t.SERVICE_UNAVAILABLE=503]="Service Unavailable",n[t.SWITCHING_PROTOCOLS=101]="Switching Protocols",n[t.TEMPORARY_REDIRECT=307]="Temporary Redirect",n[t.TOO_MANY_REQUESTS=429]="Too Many Requests",n[t.UNAUTHORIZED=401]="Unauthorized",n[t.UNPROCESSABLE_ENTITY=422]="Unprocessable Entity",n[t.UNSUPPORTED_MEDIA_TYPE=415]="Unsupported Media Type",n[t.USE_PROXY=305]="Use Proxy",t.getStatusText=function(e){if(n.hasOwnProperty(e))return n[e];throw new Error("Status code does not exist: "+e)},t.getStatusCode=function(e){for(key in n)if(n[key]===e)return parseInt(key,10);throw new Error("Reason phrase does not exist: "+e)}},function(e,t,n){"use strict";let{Json2Csv:r}=n(165),{Csv2Json:i}=n(168),s=n(48);function o(e,t,n,r){return s.convert({data:t,callback:n,options:r,converter:e})}function a(e,t,n){return new Promise((r,i)=>o(e,t,(e,t)=>e?i(e):r(t),n))}function u(e,t,n,r,i){return console.warn("WARNING: "+t+" is deprecated and will be removed soon. Please use "+n+" instead."),a(e,r,i)}e.exports={json2csv:(e,t,n)=>o(r,e,t,n),csv2json:(e,t,n)=>o(i,e,t,n),json2csvAsync:(e,t)=>a(r,e,t),csv2jsonAsync:(e,t)=>a(i,e,t),json2csvPromisified:(e,t)=>u(r,"json2csvPromisified()","json2csvAsync()",e,t),csv2jsonPromisified:(e,t)=>u(i,"csv2jsonPromisified()","csv2jsonAsync()",e,t)}},function(e,t,n){"use strict";var r,i="object"==typeof Reflect?Reflect:null,s=i&&"function"==typeof i.apply?i.apply:function(e,t,n){return Function.prototype.apply.call(e,t,n)};r=i&&"function"==typeof i.ownKeys?i.ownKeys:Object.getOwnPropertySymbols?function(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:function(e){return Object.getOwnPropertyNames(e)};var o=Number.isNaN||function(e){return e!=e};function a(){a.init.call(this)}e.exports=a,a.EventEmitter=a,a.prototype._events=void 0,a.prototype._eventsCount=0,a.prototype._maxListeners=void 0;var u=10;function l(e){return void 0===e._maxListeners?a.defaultMaxListeners:e._maxListeners}function c(e,t,n,r){var i,s,o,a;if("function"!=typeof n)throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof n);if(void 0===(s=e._events)?(s=e._events=Object.create(null),e._eventsCount=0):(void 0!==s.newListener&&(e.emit("newListener",t,n.listener?n.listener:n),s=e._events),o=s[t]),void 0===o)o=s[t]=n,++e._eventsCount;else if("function"==typeof o?o=s[t]=r?[n,o]:[o,n]:r?o.unshift(n):o.push(n),(i=l(e))>0&&o.length>i&&!o.warned){o.warned=!0;var u=new Error("Possible EventEmitter memory leak detected. "+o.length+" "+String(t)+" listeners added. Use emitter.setMaxListeners() to increase limit");u.name="MaxListenersExceededWarning",u.emitter=e,u.type=t,u.count=o.length,a=u,console&&console.warn&&console.warn(a)}return e}function h(){for(var e=[],t=0;t0&&(o=t[0]),o instanceof Error)throw o;var a=new Error("Unhandled error."+(o?" ("+o.message+")":""));throw a.context=o,a}var u=i[e];if(void 0===u)return!1;if("function"==typeof u)s(u,this,t);else{var l=u.length,c=m(u,l);for(n=0;n=0;s--)if(n[s]===t||n[s].listener===t){o=n[s].listener,i=s;break}if(i<0)return this;0===i?n.shift():function(e,t){for(;t+1=0;r--)this.removeListener(e,t[r]);return this},a.prototype.listeners=function(e){return p(this,e,!0)},a.prototype.rawListeners=function(e){return p(this,e,!1)},a.listenerCount=function(e,t){return"function"==typeof e.listenerCount?e.listenerCount(t):f.call(e,t)},a.prototype.listenerCount=f,a.prototype.eventNames=function(){return this._eventsCount>0?r(this._events):[]}},function(e,t,n){(t=e.exports=n(54)).Stream=t,t.Readable=t,t.Writable=n(40),t.Duplex=n(10),t.Transform=n(61),t.PassThrough=n(99)},function(e,t,n){"use strict";(function(t,r,i){var s=n(27);function o(e){var t=this;this.next=null,this.entry=null,this.finish=function(){!function(e,t,n){var r=e.entry;e.entry=null;for(;r;){var i=r.callback;t.pendingcb--,i(n),r=r.next}t.corkedRequestsFree?t.corkedRequestsFree.next=e:t.corkedRequestsFree=e}(t,e)}}e.exports=b;var a,u=!t.browser&&["v0.10","v0.9."].indexOf(t.version.slice(0,5))>-1?r:s.nextTick;b.WritableState=g;var l=n(19);l.inherits=n(9);var c={deprecate:n(98)},h=n(56),d=n(28).Buffer,p=i.Uint8Array||function(){};var f,m=n(58);function w(){}function g(e,t){a=a||n(10),e=e||{};var r=t instanceof a;this.objectMode=!!e.objectMode,r&&(this.objectMode=this.objectMode||!!e.writableObjectMode);var i=e.highWaterMark,l=e.writableHighWaterMark,c=this.objectMode?16:16384;this.highWaterMark=i||0===i?i:r&&(l||0===l)?l:c,this.highWaterMark=Math.floor(this.highWaterMark),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var h=!1===e.decodeStrings;this.decodeStrings=!h,this.defaultEncoding=e.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(e){!function(e,t){var n=e._writableState,r=n.sync,i=n.writecb;if(function(e){e.writing=!1,e.writecb=null,e.length-=e.writelen,e.writelen=0}(n),t)!function(e,t,n,r,i){--t.pendingcb,n?(s.nextTick(i,r),s.nextTick(A,e,t),e._writableState.errorEmitted=!0,e.emit("error",r)):(i(r),e._writableState.errorEmitted=!0,e.emit("error",r),A(e,t))}(e,n,r,t,i);else{var o=x(n);o||n.corked||n.bufferProcessing||!n.bufferedRequest||v(e,n),r?u(y,e,n,o,i):y(e,n,o,i)}}(t,e)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.bufferedRequestCount=0,this.corkedRequestsFree=new o(this)}function b(e){if(a=a||n(10),!(f.call(b,this)||this instanceof a))return new b(e);this._writableState=new g(e,this),this.writable=!0,e&&("function"==typeof e.write&&(this._write=e.write),"function"==typeof e.writev&&(this._writev=e.writev),"function"==typeof e.destroy&&(this._destroy=e.destroy),"function"==typeof e.final&&(this._final=e.final)),h.call(this)}function _(e,t,n,r,i,s,o){t.writelen=r,t.writecb=o,t.writing=!0,t.sync=!0,n?e._writev(i,t.onwrite):e._write(i,s,t.onwrite),t.sync=!1}function y(e,t,n,r){n||function(e,t){0===t.length&&t.needDrain&&(t.needDrain=!1,e.emit("drain"))}(e,t),t.pendingcb--,r(),A(e,t)}function v(e,t){t.bufferProcessing=!0;var n=t.bufferedRequest;if(e._writev&&n&&n.next){var r=t.bufferedRequestCount,i=new Array(r),s=t.corkedRequestsFree;s.entry=n;for(var a=0,u=!0;n;)i[a]=n,n.isBuf||(u=!1),n=n.next,a+=1;i.allBuffers=u,_(e,t,!0,t.length,i,"",s.finish),t.pendingcb++,t.lastBufferedRequest=null,s.next?(t.corkedRequestsFree=s.next,s.next=null):t.corkedRequestsFree=new o(t),t.bufferedRequestCount=0}else{for(;n;){var l=n.chunk,c=n.encoding,h=n.callback;if(_(e,t,!1,t.objectMode?1:l.length,l,c,h),n=n.next,t.bufferedRequestCount--,t.writing)break}null===n&&(t.lastBufferedRequest=null)}t.bufferedRequest=n,t.bufferProcessing=!1}function x(e){return e.ending&&0===e.length&&null===e.bufferedRequest&&!e.finished&&!e.writing}function E(e,t){e._final((function(n){t.pendingcb--,n&&e.emit("error",n),t.prefinished=!0,e.emit("prefinish"),A(e,t)}))}function A(e,t){var n=x(t);return n&&(!function(e,t){t.prefinished||t.finalCalled||("function"==typeof e._final?(t.pendingcb++,t.finalCalled=!0,s.nextTick(E,e,t)):(t.prefinished=!0,e.emit("prefinish")))}(e,t),0===t.pendingcb&&(t.finished=!0,e.emit("finish"))),n}l.inherits(b,h),g.prototype.getBuffer=function(){for(var e=this.bufferedRequest,t=[];e;)t.push(e),e=e.next;return t},function(){try{Object.defineProperty(g.prototype,"buffer",{get:c.deprecate((function(){return this.getBuffer()}),"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.","DEP0003")})}catch(e){}}(),"function"==typeof Symbol&&Symbol.hasInstance&&"function"==typeof Function.prototype[Symbol.hasInstance]?(f=Function.prototype[Symbol.hasInstance],Object.defineProperty(b,Symbol.hasInstance,{value:function(e){return!!f.call(this,e)||this===b&&(e&&e._writableState instanceof g)}})):f=function(e){return e instanceof this},b.prototype.pipe=function(){this.emit("error",new Error("Cannot pipe, not readable"))},b.prototype.write=function(e,t,n){var r,i=this._writableState,o=!1,a=!i.objectMode&&(r=e,d.isBuffer(r)||r instanceof p);return a&&!d.isBuffer(e)&&(e=function(e){return d.from(e)}(e)),"function"==typeof t&&(n=t,t=null),a?t="buffer":t||(t=i.defaultEncoding),"function"!=typeof n&&(n=w),i.ended?function(e,t){var n=new Error("write after end");e.emit("error",n),s.nextTick(t,n)}(this,n):(a||function(e,t,n,r){var i=!0,o=!1;return null===n?o=new TypeError("May not write null values to stream"):"string"==typeof n||void 0===n||t.objectMode||(o=new TypeError("Invalid non-string/buffer chunk")),o&&(e.emit("error",o),s.nextTick(r,o),i=!1),i}(this,i,e,n))&&(i.pendingcb++,o=function(e,t,n,r,i,s){if(!n){var o=function(e,t,n){e.objectMode||!1===e.decodeStrings||"string"!=typeof t||(t=d.from(t,n));return t}(t,r,i);r!==o&&(n=!0,i="buffer",r=o)}var a=t.objectMode?1:r.length;t.length+=a;var u=t.length-1))throw new TypeError("Unknown encoding: "+e);return this._writableState.defaultEncoding=e,this},Object.defineProperty(b.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}}),b.prototype._write=function(e,t,n){n(new Error("_write() is not implemented"))},b.prototype._writev=null,b.prototype.end=function(e,t,n){var r=this._writableState;"function"==typeof e?(n=e,e=null,t=null):"function"==typeof t&&(n=t,t=null),null!=e&&this.write(e,t),r.corked&&(r.corked=1,this.uncork()),r.ending||r.finished||function(e,t,n){t.ending=!0,A(e,t),n&&(t.finished?s.nextTick(n):e.once("finish",n));t.ended=!0,e.writable=!1}(this,r,n)},Object.defineProperty(b.prototype,"destroyed",{get:function(){return void 0!==this._writableState&&this._writableState.destroyed},set:function(e){this._writableState&&(this._writableState.destroyed=e)}}),b.prototype.destroy=m.destroy,b.prototype._undestroy=m.undestroy,b.prototype._destroy=function(e,t){this.end(),t(e)}}).call(this,n(13),n(59).setImmediate,n(6))},function(e,t,n){"use strict";const r=[65534,65535,131070,131071,196606,196607,262142,262143,327678,327679,393214,393215,458750,458751,524286,524287,589822,589823,655358,655359,720894,720895,786430,786431,851966,851967,917502,917503,983038,983039,1048574,1048575,1114110,1114111];t.REPLACEMENT_CHARACTER="�",t.CODE_POINTS={EOF:-1,NULL:0,TABULATION:9,CARRIAGE_RETURN:13,LINE_FEED:10,FORM_FEED:12,SPACE:32,EXCLAMATION_MARK:33,QUOTATION_MARK:34,NUMBER_SIGN:35,AMPERSAND:38,APOSTROPHE:39,HYPHEN_MINUS:45,SOLIDUS:47,DIGIT_0:48,DIGIT_9:57,SEMICOLON:59,LESS_THAN_SIGN:60,EQUALS_SIGN:61,GREATER_THAN_SIGN:62,QUESTION_MARK:63,LATIN_CAPITAL_A:65,LATIN_CAPITAL_F:70,LATIN_CAPITAL_X:88,LATIN_CAPITAL_Z:90,RIGHT_SQUARE_BRACKET:93,GRAVE_ACCENT:96,LATIN_SMALL_A:97,LATIN_SMALL_F:102,LATIN_SMALL_X:120,LATIN_SMALL_Z:122,REPLACEMENT_CHARACTER:65533},t.CODE_POINT_SEQUENCES={DASH_DASH_STRING:[45,45],DOCTYPE_STRING:[68,79,67,84,89,80,69],CDATA_START_STRING:[91,67,68,65,84,65,91],SCRIPT_STRING:[115,99,114,105,112,116],PUBLIC_STRING:[80,85,66,76,73,67],SYSTEM_STRING:[83,89,83,84,69,77]},t.isSurrogate=function(e){return e>=55296&&e<=57343},t.isSurrogatePair=function(e){return e>=56320&&e<=57343},t.getSurrogatePairCodePoint=function(e,t){return 1024*(e-55296)+9216+t},t.isControlCodePoint=function(e){return 32!==e&&10!==e&&13!==e&&9!==e&&12!==e&&e>=1&&e<=31||e>=127&&e<=159},t.isUndefinedCodePoint=function(e){return e>=64976&&e<=65007||r.indexOf(e)>-1}},function(e,t,n){"use strict";class r{constructor(e){const t={},n=this._getOverriddenMethods(this,t);for(const r of Object.keys(n))"function"==typeof n[r]&&(t[r]=e[r],e[r]=n[r])}_getOverriddenMethods(){throw new Error("Not implemented")}}r.install=function(e,t,n){e.__mixins||(e.__mixins=[]);for(let n=0;n=0?t:void 0),remainingKeyPath:e.slice(t+1)}}e.exports={evaluatePath:function e(t,n){if(!t)return null;let{indexOfDot:i,currentKey:s,remainingKeyPath:o}=r(n);if(i>=0&&!t[n])return Array.isArray(t[s])?t[s].map(t=>e(t,o)):e(t[s],o);if(Array.isArray(t))return t.map(t=>e(t,n));return t[n]},setPath:function e(t,n,i){if(!t)throw new Error("No document was provided.");let{indexOfDot:s,currentKey:o,remainingKeyPath:a}=r(n);if(s>=0){if(!t[o]&&Array.isArray(t))return t.forEach(t=>e(t,n,i));t[o]||(t[o]={}),e(t[o],a,i)}else{if(Array.isArray(t))return t.forEach(t=>e(t,a,i));t[n]=i}return t}}},function(e){e.exports=JSON.parse('{"errors":{"callbackRequired":"A callback is required!","optionsRequired":"Options were not passed and are required.","json2csv":{"cannotCallOn":"Cannot call json2csv on ","dataCheckFailure":"Data provided was not an array of documents.","notSameSchema":"Not all documents have the same schema."},"csv2json":{"cannotCallOn":"Cannot call csv2json on ","dataCheckFailure":"CSV is not a string."}},"defaultOptions":{"delimiter":{"field":",","wrap":"\\"","eol":"\\n"},"excelBOM":false,"prependHeader":true,"trimHeaderFields":false,"trimFieldValues":false,"sortHeader":false,"parseCsvNumbers":false,"keys":null,"checkSchemaDifferences":false,"expandArrayObjects":false,"unwindArrays":false,"useLocaleFormat":false},"values":{"excelBOM":"\ufeff"}}')},function(e,t,n){"use strict";let r=n(46),i=n(47);const s=/\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}.\d{3}Z/;function o(e){return JSON.parse(JSON.stringify(e))}function a(e){return c(e)||l(e)||""===e}function u(e){return"object"==typeof e}function l(e){return null===e}function c(e){return void 0===e}function h(e,t){return e.filter(e=>!t.includes(e))}e.exports={isStringRepresentation:function(e,t){const n=e[0],r=e.length-1,i=e[r];return n===t.delimiter.wrap&&i===t.delimiter.wrap},isDateRepresentation:function(e){return s.test(e)},computeSchemaDifferences:function(e,t){return h(e,t).concat(h(t,e))},deepCopy:o,convert:function(e){let{options:t,callback:n}=function(e,t){if(u(e)&&(n=e,"function"!=typeof n))return{options:e,callback:t};var n;return{options:t,callback:e}}(e.callback,e.options);r=t,(r={...i.defaultOptions,...r||{}}).delimiter={...i.defaultOptions.delimiter,...r.delimiter},t=r;var r;let s=new e.converter(t);(function(e){if(!e.callback)throw new Error(i.errors.callbackRequired);if(!e.data)return e.callback(new Error(e.errorMessages.cannotCallOn+e.data+".")),!1;if(!e.dataCheckFn(e.data))return e.callback(new Error(e.errorMessages.dataCheckFailure)),!1;return!0})({data:e.data,callback:n,errorMessages:s.validationMessages,dataCheckFn:s.validationFn})&&s.convert(e.data,n)},isEmptyField:a,removeEmptyFields:function(e){return e.filter(e=>!a(e))},getNCharacters:function(e,t,n){return e.substring(t,t+n)},unwind:function(e,t){const n=[];return e.forEach(e=>{!function(e,t,n){const i=r.evaluatePath(t,n);let s=o(t);Array.isArray(i)?i.forEach(i=>{s=o(t),e.push(r.setPath(s,n,i))}):e.push(s)}(n,e,t)}),n},isInvalid:function(e){return e===1/0||e===-1/0},isString:function(e){return"string"==typeof e},isNull:l,isError:function(e){return"[object Error]"===Object.prototype.toString.call(e)},isDate:function(e){return e instanceof Date},isUndefined:c,isObject:u,unique:function(e){return[...new Set(e)]},flatten:function(e){return[].concat(...e)}}},function(e,t,n){"use strict";const r=n(17).BigNumber,i=n(16),s=n(50),o=new r(-1),a=new r(10),u=new r(2);class l{constructor(e,t,n){if(this.tag=e,this.value=t,this.err=n,"number"!=typeof this.tag)throw new Error("Invalid tag type ("+typeof this.tag+")");if(this.tag<0||(0|this.tag)!==this.tag)throw new Error("Tag must be a positive integer: "+this.tag)}toString(){return`${this.tag}(${JSON.stringify(this.value)})`}encodeCBOR(e){return e._pushTag(this.tag),e.pushAny(this.value)}convert(e){let t=null!=e?e[this.tag]:void 0;if("function"!=typeof t&&"function"!=typeof(t=l["_tag_"+this.tag]))return this;try{return t.call(l,this.value)}catch(e){return this.err=e,this}}static _tag_0(e){return new Date(e)}static _tag_1(e){return new Date(1e3*e)}static _tag_2(e){return i.bufferToBignumber(e)}static _tag_3(e){return o.minus(i.bufferToBignumber(e))}static _tag_4(e){return a.pow(e[0]).times(e[1])}static _tag_5(e){return u.pow(e[0]).times(e[1])}static _tag_32(e){return s.parse(e)}static _tag_35(e){return new RegExp(e)}}e.exports=l},function(e,t,n){"use strict";var r=n(173),i=n(175);function s(){this.protocol=null,this.slashes=null,this.auth=null,this.host=null,this.port=null,this.hostname=null,this.hash=null,this.search=null,this.query=null,this.pathname=null,this.path=null,this.href=null}t.parse=_,t.resolve=function(e,t){return _(e,!1,!0).resolve(t)},t.resolveObject=function(e,t){return e?_(e,!1,!0).resolveObject(t):t},t.format=function(e){i.isString(e)&&(e=_(e));return e instanceof s?e.format():s.prototype.format.call(e)},t.Url=s;var o=/^([a-z0-9.+-]+:)/i,a=/:[0-9]*$/,u=/^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/,l=["{","}","|","\\","^","`"].concat(["<",">",'"',"`"," ","\r","\n","\t"]),c=["'"].concat(l),h=["%","/","?",";","#"].concat(c),d=["/","?","#"],p=/^[+a-z0-9A-Z_-]{0,63}$/,f=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,m={javascript:!0,"javascript:":!0},w={javascript:!0,"javascript:":!0},g={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0},b=n(176);function _(e,t,n){if(e&&i.isObject(e)&&e instanceof s)return e;var r=new s;return r.parse(e,t,n),r}s.prototype.parse=function(e,t,n){if(!i.isString(e))throw new TypeError("Parameter 'url' must be a string, not "+typeof e);var s=e.indexOf("?"),a=-1!==s&&s127?N+="x":N+=I[F];if(!N.match(p)){var L=R.slice(0,T),B=R.slice(T+1),U=I.match(f);U&&(L.push(U[1]),B.unshift(U[2])),B.length&&(_="/"+B.join(".")+_),this.hostname=L.join(".");break}}}this.hostname.length>255?this.hostname="":this.hostname=this.hostname.toLowerCase(),D||(this.hostname=r.toASCII(this.hostname));var M=this.port?":"+this.port:"",j=this.hostname||"";this.host=j+M,this.href+=this.host,D&&(this.hostname=this.hostname.substr(1,this.hostname.length-2),"/"!==_[0]&&(_="/"+_))}if(!m[x])for(T=0,O=c.length;T0)&&n.host.split("@"))&&(n.auth=D.shift(),n.host=n.hostname=D.shift());return n.search=e.search,n.query=e.query,i.isNull(n.pathname)&&i.isNull(n.search)||(n.path=(n.pathname?n.pathname:"")+(n.search?n.search:"")),n.href=n.format(),n}if(!E.length)return n.pathname=null,n.search?n.path="/"+n.search:n.path=null,n.href=n.format(),n;for(var S=E.slice(-1)[0],k=(n.host||e.host||E.length>1)&&("."===S||".."===S)||""===S,T=0,C=E.length;C>=0;C--)"."===(S=E[C])?E.splice(C,1):".."===S?(E.splice(C,1),T++):T&&(E.splice(C,1),T--);if(!v&&!x)for(;T--;T)E.unshift("..");!v||""===E[0]||E[0]&&"/"===E[0].charAt(0)||E.unshift(""),k&&"/"!==E.join("/").substr(-1)&&E.push("");var D,R=""===E[0]||E[0]&&"/"===E[0].charAt(0);A&&(n.hostname=n.host=R?"":E.length?E.shift():"",(D=!!(n.host&&n.host.indexOf("@")>0)&&n.host.split("@"))&&(n.auth=D.shift(),n.host=n.hostname=D.shift()));return(v=v||n.host&&E.length)&&!R&&E.unshift(""),E.length?n.pathname=E.join("/"):(n.pathname=null,n.path=null),i.isNull(n.pathname)&&i.isNull(n.search)||(n.path=(n.pathname?n.pathname:"")+(n.search?n.search:"")),n.auth=e.auth||n.auth,n.slashes=n.slashes||e.slashes,n.href=n.format(),n},s.prototype.parseHost=function(){var e=this.host,t=a.exec(e);t&&(":"!==(t=t[0])&&(this.port=t.substr(1)),e=e.substr(0,e.length-t.length)),e&&(this.hostname=e)}},function(e,t,n){"use strict";const{Transform:r}=n(4),i=n(29),s=n(106),o=n(42),a=n(63),u=n(108),l=n(109),c={sourceCodeLocationInfo:!1};const h={[i.START_TAG_TOKEN]:{eventName:"startTag",reshapeToken:e=>({tagName:e.tagName,attrs:e.attrs,selfClosing:e.selfClosing,sourceCodeLocation:e.location})},[i.END_TAG_TOKEN]:{eventName:"endTag",reshapeToken:e=>({tagName:e.tagName,sourceCodeLocation:e.location})},[i.COMMENT_TOKEN]:{eventName:"comment",reshapeToken:e=>({text:e.data,sourceCodeLocation:e.location})},[i.DOCTYPE_TOKEN]:{eventName:"doctype",reshapeToken:e=>({name:e.name,publicId:e.publicId,systemId:e.systemId,sourceCodeLocation:e.location})},[i.CHARACTER_TOKEN]:{eventName:"text",reshapeToken:e=>({text:e.chars,sourceCodeLocation:e.location})}};e.exports=class extends r{constructor(e){super({encoding:"utf8",decodeStrings:!1}),this.options=a(c,e),this.tokenizer=new i(e),this.locInfoMixin=null,this.options.sourceCodeLocationInfo&&(this.locInfoMixin=o.install(this.tokenizer,s)),this.parserFeedbackSimulator=new l(this.tokenizer),this.pendingText=null,this.lastChunkWritten=!1,this.stopped=!1,this.pipe(new u)}_transform(e,t,n){if("string"!=typeof e)throw new TypeError("Parser can work only with string streams.");n(null,this._transformChunk(e))}_final(e){this.lastChunkWritten=!0,e(null,this._transformChunk(""))}stop(){this.stopped=!0}_transformChunk(e){return this.stopped||(this.tokenizer.write(e,this.lastChunkWritten),this._runParsingLoop()),e}_runParsingLoop(){let e=null;do{if((e=this.parserFeedbackSimulator.getNextToken()).type===i.HIBERNATION_TOKEN)break;if(e.type===i.CHARACTER_TOKEN||e.type===i.WHITESPACE_CHARACTER_TOKEN||e.type===i.NULL_CHARACTER_TOKEN){if(null===this.pendingText)e.type=i.CHARACTER_TOKEN,this.pendingText=e;else if(this.pendingText.chars+=e.chars,this.options.sourceCodeLocationInfo){const{endLine:t,endCol:n,endOffset:r}=e.location;Object.assign(this.pendingText.location,{endLine:t,endCol:n,endOffset:r})}}else this._emitPendingText(),this._handleToken(e)}while(!this.stopped&&e.type!==i.EOF_TOKEN)}_handleToken(e){if(e.type===i.EOF_TOKEN)return!0;const{eventName:t,reshapeToken:n}=h[e.type];return 0!==this.listenerCount(t)&&(this._emitToken(t,n(e)),!0)}_emitToken(e,t){this.emit(e,t)}_emitPendingText(){null!==this.pendingText&&(this._handleToken(this.pendingText),this.pendingText=null)}}},function(e,t,n){"use strict";n.r(t),n.d(t,"CollectionLoader",(function(){return Ee})),n.d(t,"WorkerLoader",(function(){return Ae}));const r=(e,t)=>t.some(t=>e instanceof t);let i,s;const o=new WeakMap,a=new WeakMap,u=new WeakMap,l=new WeakMap,c=new WeakMap;let h={get(e,t,n){if(e instanceof IDBTransaction){if("done"===t)return a.get(e);if("objectStoreNames"===t)return e.objectStoreNames||u.get(e);if("store"===t)return n.objectStoreNames[1]?void 0:n.objectStore(n.objectStoreNames[0])}return m(e[t])},set:(e,t,n)=>(e[t]=n,!0),has:(e,t)=>e instanceof IDBTransaction&&("done"===t||"store"===t)||t in e};function d(e){h=e(h)}function p(e){return e!==IDBDatabase.prototype.transaction||"objectStoreNames"in IDBTransaction.prototype?(s||(s=[IDBCursor.prototype.advance,IDBCursor.prototype.continue,IDBCursor.prototype.continuePrimaryKey])).includes(e)?function(...t){return e.apply(w(this),t),m(o.get(this))}:function(...t){return m(e.apply(w(this),t))}:function(t,...n){const r=e.call(w(this),t,...n);return u.set(r,t.sort?t.sort():[t]),m(r)}}function f(e){return"function"==typeof e?p(e):(e instanceof IDBTransaction&&function(e){if(a.has(e))return;const t=new Promise((t,n)=>{const r=()=>{e.removeEventListener("complete",i),e.removeEventListener("error",s),e.removeEventListener("abort",s)},i=()=>{t(),r()},s=()=>{n(e.error||new DOMException("AbortError","AbortError")),r()};e.addEventListener("complete",i),e.addEventListener("error",s),e.addEventListener("abort",s)});a.set(e,t)}(e),r(e,i||(i=[IDBDatabase,IDBObjectStore,IDBIndex,IDBCursor,IDBTransaction]))?new Proxy(e,h):e)}function m(e){if(e instanceof IDBRequest)return function(e){const t=new Promise((t,n)=>{const r=()=>{e.removeEventListener("success",i),e.removeEventListener("error",s)},i=()=>{t(m(e.result)),r()},s=()=>{n(e.error),r()};e.addEventListener("success",i),e.addEventListener("error",s)});return t.then(t=>{t instanceof IDBCursor&&o.set(t,e)}).catch(()=>{}),c.set(t,e),t}(e);if(l.has(e))return l.get(e);const t=f(e);return t!==e&&(l.set(e,t),c.set(t,e)),t}const w=e=>c.get(e);function g(e,t,{blocked:n,upgrade:r,blocking:i,terminated:s}={}){const o=indexedDB.open(e,t),a=m(o);return r&&o.addEventListener("upgradeneeded",e=>{r(m(o.result),e.oldVersion,e.newVersion,m(o.transaction))}),n&&o.addEventListener("blocked",()=>n()),s&&o.addEventListener("close",()=>s()),i&&a.then(e=>e.addEventListener("versionchange",i)).catch(()=>{}),a}function b(e,{blocked:t}={}){const n=indexedDB.deleteDatabase(e);return t&&n.addEventListener("blocked",()=>t()),m(n).then(()=>void 0)}const _=["get","getKey","getAll","getAllKeys","count"],y=["put","add","delete","clear"],v=new Map;function x(e,t){if(!(e instanceof IDBDatabase)||t in e||"string"!=typeof t)return;if(v.get(t))return v.get(t);const n=t.replace(/FromIndex$/,""),r=t!==n,i=y.includes(n);if(!(n in(r?IDBIndex:IDBObjectStore).prototype)||!i&&!_.includes(n))return;const s=async function(e,...t){const s=this.transaction(e,i?"readwrite":"readonly");let o=s.store;r&&(o=o.index(t.shift()));const a=o[n](...t);return i&&await s.done,a};return v.set(t,s),s}d(e=>({...e,get:(t,n,r)=>x(t,n)||e.get(t,n,r),has:(t,n)=>!!x(t,n)||e.has(t,n)}));const E=["continue","continuePrimaryKey","advance"],A={},S=new WeakMap,k=new WeakMap,T={get(e,t){if(!E.includes(t))return e[t];let n=A[t];return n||(n=A[t]=function(...e){S.set(this,k.get(this)[t](...e))}),n}};async function*C(...e){let t=this;if(t instanceof IDBCursor||(t=await t.openCursor(...e)),!t)return;t=t;const n=new Proxy(t,T);for(k.set(n,t),c.set(n,w(t));t;)yield n,t=await(S.get(n)||t.continue()),S.delete(n)}function D(e,t){return t===Symbol.asyncIterator&&r(e,[IDBIndex,IDBObjectStore,IDBCursor])||"iterate"===t&&r(e,[IDBIndex,IDBObjectStore])}d(e=>({...e,get:(t,n,r)=>D(t,n)?C:e.get(t,n,r),has:(t,n)=>D(t,n)||e.has(t,n)}));var R=n(0),O=n(88),I=n.n(O);const N=[{match:/\/\/.*gcs-vimeo|vod|vod-progressive\.akamaized\.net.*\/([\d]+)\/[\d]+(.mp4)/,fuzzyCanonReplace:"//vimeo-cdn.fuzzy.replayweb.page/$1$2",split:".net"},{match:/\/\/.*player.vimeo.com\/(video\/[\d]+)\?.*/i,fuzzyCanonReplace:"//vimeo.fuzzy.replayweb.page/$1"},{match:/www.\washingtonpost\.com\/wp-apps\/imrs.php/,args:[["src"]]},{match:/(static.wixstatic.com\/.*\.[\w]+\/v1\/fill\/)(w_.*)/,replace:"$1?_args=$2",split:"/v1/fill"},{match:/(youtube\.com\/embed\/[^?]+)[?].*/i,replace:"$1"},{match:/\/\/(?:www\.)?youtube(?:-nocookie)?\.com\/(get_video_info)/i,fuzzyCanonReplace:"//youtube.fuzzy.replayweb.page/$1",args:[["video_id"]]},{match:/\/\/.*googlevideo.com\/(videoplayback)/i,fuzzyCanonReplace:"//youtube.fuzzy.replayweb.page/$1",args:[["id","itag"],["id"]],fuzzyArgs:!0},{match:/facebook\.com\/ajax\/pagelet\/generic.php\/photoviewerinitpagelet/i,args:[[{arg:"data",keys:["query_type","fbid","v","cursor","data"]}]]},{match:/facebook\.com\/api\/graphql/i,args:[["variables","doc_id"]],fuzzyArgs:!0},{match:/facebook\.com\/api\/graphqlbatch/i,args:[["batch_name","queries"],["batch_name"]]},{match:/facebook\.com\/ajax\/navigation/i,args:[["route_url","__user"],["route_url"]]},{match:/facebook\.com\/ajax\/route-definition/i,args:[["route_url","__user"],["route_url"]]},{match:/facebook\.com\/ajax\/bulk-route-definitions/i,args:[["route_urls[0]","__user"],["route_urls[0]"]]},{match:/facebook\.com\/ajax\/relay-ef/i,args:[["queries[0]","__user"],["queries[0]"]]},{match:/facebook\.com\/videos\/vodcomments/i,args:[["eft_id"]]},{match:/facebook\.com\/ajax\.*/i,replaceQuery:/([?&][^_]\w+=[^&]+)/g},{match:/plus\.googleapis\.com\/u\/\/0\/_\/widget\/render\/comments/i,args:[["href","stream_id","substream_id"]]},{match:(F=["(callback=jsonp)[^&]+(?=&|$)","((?:\\w+)=jquery)[\\d]+_[\\d]+","utm_[^=]+=[^&]+(?=&|$)","(_|cb|_ga|\\w*cache\\w*)=[\\d.-]+(?=$|&)"],new RegExp("[?&]"+F.map(e=>"("+e+")").join("|"),"gi")),replace:""},{match:/(\.(?:php|js|webm|mp4|gif|jpg|png|css|json|m3u8))\?.*/i,replace:"$1"}];var F;const P=new class{constructor(e){this.rules=e||N}getRuleFor(e){let t;const n=-1===e.indexOf("?")?e+"?":e;for(const e of this.rules)if(n.match(e.match)){t=e;break}let r=e;t&&t.fuzzyCanonReplace&&(r=e.replace(t.match,t.fuzzyCanonReplace));const i=t&&t.split||"?",s=e.indexOf(i);return{prefix:s>0?e.slice(0,s+i.length):e,rule:t,fuzzyCanonUrl:r}}getFuzzyCanonWithArgs(e){const{fuzzyCanonUrl:t,rule:n}=this.getRuleFor(e);if(n.args){const r=new URL(t),i=new URL(e),s=new URLSearchParams;for(const e of n.args[0])s.set(e,i.searchParams.get(e)||"");return r.search=s.toString(),r.href}return t}fuzzyCompareUrls(e,t,n){if(!t||!t.length)return null;if(n&&void 0!==n.replace&&void 0!==n.match){const r=n.match,i=n.replace,s=e.replace(r,i),o=[];for(const e of t){const t=("string"==typeof e?e:e.url).replace(r,i);if(s===t)return e;e.fuzzyMatchUrl=t,o.push(e)}t=o,e=s}return this.fuzzyBestMatchQuery(e,t,n)}fuzzyBestMatchQuery(e,t,n){try{e=new URL(e)}catch(e){return 0}const r=n&&n.args&&!n.fuzzyArgs?new Set(n.args[0]):null;let i=0,s=null;const o=new URLSearchParams(e.search);for(const e of t){if(204===e.mime)continue;let t="string"==typeof e?e:e.fuzzyMatchUrl||e.url;try{t=new URL(t)}catch(e){continue}const n=new URLSearchParams(t.search);let a=this.getMatch(o,n,r);a+=this.getMatch(n,o,r),(a/=2)>i&&(i=a,s=e)}return s}getMatch(e,t,n){let r=1,i=1;for(const[s,o]of e){const e=t.get(s);if(n&&n.has(s)&&e!==o)return-1;let a;a="_"===s[0]?1:10,null!==e&&(r+=.5*a);const u=Number(o),l=Number(e);if(i+=a,e===o)r+=a*o.length;else if(null===e)r+=0;else if(isNaN(u)||isNaN(l)){const t=Math.min(e.length,o.length),n=I()(e,o);nthis._initDB(e,t,n,r),blocking:e=>{e&&null!==e.newVersion||this.close()}})}_initDB(e,t,n,r){if(!t){const t=e.createObjectStore("pages",{keyPath:"id"});t.createIndex("url","url"),t.createIndex("ts","ts");e.createObjectStore("pageLists",{keyPath:"id",autoIncrement:!0});e.createObjectStore("curatedPages",{keyPath:"id",autoIncrement:!0}).createIndex("listPages",["list","pos"]);const n=e.createObjectStore("resources",{keyPath:["url","ts"]});n.createIndex("pageId","pageId"),n.createIndex("mimeStatusUrl",["mime","status","url"]);e.createObjectStore("payload",{keyPath:"digest",unique:!0}),e.createObjectStore("digestRef",{keyPath:"digest",unique:!0})}}async clearAll(){const e=["pages","resources","payload","digestRef"];for(const t of e)await this.db.clear(t)}close(){this.db&&(this.db.close(),this.db=null)}async delete(){this.close(),await b(this.name,{blocked(e){console.log("Unable to delete: "+e)}})}async addPage(e,t){const n=e.url,r=e.title||e.url,i=e.id||this.newPageId();let s=e.ts;s||!e.date&&!e.datetime||(s=new Date(e.date||e.datetime).getTime());const o={...e,url:n,ts:s,title:r,id:i};return t?(t.store.put(o),o.id):await this.db.put("pages",o)}async addPages(e){const t=this.db.transaction("pages","readwrite");for(const t of e)this.addPage(t);try{await t.done}catch(e){console.warn("addPages tx",e.toString())}}async addCPageList(e){const t={};return t.title=e.title,t.desc=e.desc,t.slug=e.slug,await this.db.put("pageLists",t)}async addCuratedPageLists(e,t="pages",n="public"){for(const r of e){if(n&&!r[n])continue;const e=await this.addCPageList(r),i=this.db.transaction("curatedPages","readwrite");let s=0;const o=r[t]||[];for(const t of o){const n={};n.pos=s++,n.list=e;const r=typeof t.page;n.page="string"===r?t.page:"object"===r?t.page.id:t.page_id||t.pageId,n.desc=t.desc,i.store.put(n)}try{await i.done}catch(e){console.warn("addCuratedPageLists tx",e.toString())}}}async getAllCuratedByList(){const e=await this.db.getAll("pageLists"),t=this.db.transaction("curatedPages","readonly");for await(const n of t.store.index("listPages").iterate()){const t=e[n.value.list-1];t&&(t.show=!0,t.pages||(t.pages=[]),t.pages.push(n.value))}return e}newPageId(){return Math.random().toString(36).substring(2,15)+Math.random().toString(36).substring(2,15)}async getAllPages(){return await this.db.getAll("pages")}async getPages(e){const t=[];e.sort();for await(const n of this.matchAny("pages",null,e))t.push(n);return t}async dedupResource(e,t,n,r=1){const i=n.objectStore("digestRef"),s=await i.get(e);if(s)return++s.count,s;if(t)try{return n.objectStore("payload").add({digest:e,payload:t}),{digest:e,count:r,size:t.length}}catch(e){console.log(e)}return null}async addResources(e){const t=[],n=[],r={},i=new Set,s=this.db.transaction(["digestRef","payload"],"readwrite");for(const o of e){let e=1;const a="warc/revisit"===o.mime?t:n;a.push(o);const u=this.getFuzzyUrl(o);u&&(a.push(u),e=2),this.useRefCounts&&o.digest&&(r[o.digest]?(r[o.digest].count+=e,i.add(o.digest)):r[o.digest]=await this.dedupResource(o.digest,o.payload,s,e),delete o.payload)}if(this.useRefCounts){const e=s.objectStore("digestRef");for(const t of i)e.put(r[t])}try{await s.done}catch(e){console.error("Payload and Ref Count Bulk Add Failed: ",e)}const o=this.db.transaction("resources","readwrite");for(const e of t)o.store.put(e);for(const e of n)o.store.put(e);try{await o.done}catch(e){console.error("Resources Bulk Add Failed",e)}}getFuzzyUrl(e){if(e.status>=200&&e.status<400&&304!==e.status&&204!==e.status){const{fuzzyCanonUrl:t}=P.getRuleFor(e.url);return t&&t!==e.url?{url:t,ts:e.ts,origURL:e.url,origTS:e.ts,pageId:e.pageId,digest:e.digest}:null}return null}async addResource(e){e.payload&&e.payload.length>this.minDedupSize&&(e.digest||(e.digest=await Object(R.d)(e.payload,"sha-256")));let t=null,n=!1;const r=this.db.transaction(["resources","digestRef","payload"],"readwrite");if(e.payload&&e.payload.length>this.minDedupSize?(n=(t=await this.dedupResource(e.digest,e.payload,r))&&1===t.count,delete e.payload):e.payload&&(n=!0),"warc/revisit"!==e.mime){r.objectStore("resources").put(e);const n=this.getFuzzyUrl(e);n&&(r.objectStore("resources").put(n),t&&t.count++)}else r.objectStore("resources").add(e);t&&r.objectStore("digestRef").put(t);try{await r.done}catch(t){"warc/revisit"===e.mime?console.log("Skip Duplicate revisit for: "+e.url):console.log("Add Error for "+e.url),console.log(t)}return n}async getResource(e,t,n){const r=Object(R.m)(e.timestamp).getTime();let i=e.url,s=null;const o={skip:this.repeatTracker?this.repeatTracker.getSkipCount(n,i,e.request.method):0};if(i.startsWith("//")){let t=!1;(s=await this.lookupUrl("https:"+i,r,o))||((s=await this.lookupUrl("http:"+i,r,o))||e.request.referrer.indexOf("/http://",2)>0)&&(t=!0),i=(t?"http:":"https:")+i}else if(!(s=await this.lookupUrl(i,r,o))&&i.startsWith("http://")){const e=i.replace("http://","https://");(s=await this.lookupUrl(e,r,o))&&(i=e)}if(!s&&this.fuzzyPrefixSearch&&(s=await this.lookupQueryPrefix(i)),s&&s.origURL){const e=await this.lookupUrl(s.origURL,s.origTS||s.ts);e&&(i=e.url,s=e)}if(!s)return null;const a=s.status,u=s.statusText||Object(L.getStatusText)(a);let l=null;if(!Object(R.i)()&&!(l=await this.loadPayload(s)))return null;const c=Object(R.j)(s.respHeaders),h=new Date(s.ts),d=s.extraOpts||null;return new B.a({url:i,payload:l,status:a,statusText:u,headers:c,date:h,extraOpts:d})}async loadPayload(e){if(e.digest&&!e.payload){const t=await this.db.get("payload",e.digest);if(!t)return null;const{payload:n}=t;return n}return e.payload}async lookupUrl(e,t,n={}){const r=this.db.transaction("resources","readonly");if(t){const n=await r.store.get([e,t]);if(n)return n}let i=null,s=n.skip||0;for await(const n of r.store.iterate(this.getLookupRange(e))){if(i&&n.value.ts>t){if(0==s){return n.value.ts-tt?++a:i?(yield o.value,o=await o.continue()):o=await o.continue(n[a])}}async resourcesByUrlAndMime(e,t,n=1e3,r=!0,i="",s=""){const o=t?null:n,a=await this.db.getAll("resources",this.getLookupRange(e,r?"prefix":"exact",i,s),o);t=t.split(",");const u=[];for(const e of a)for(const r of t)if(!r||e.mime&&e.mime.startsWith(r)){if(u.push(this.resJson(e)),u.length===n)return u;break}return u}async resourcesByMime(e,t=100,n="",r="",i=0){const s=[];(e=e.split(",")).sort();let o=[];n&&o.push([n,i,r]);for(const t of e)(!n||!t||t>n)&&o.push([t,0,""]);for await(const e of this.matchAny("resources","mimeStatusUrl",o,0))if(s.push(this.resJson(e)),s.length===t)break;return s}async deletePage(e){const t=this.db.transaction("pages","readwrite"),n=await t.store.get(e);await t.store.delete(e);const r=await this.deletePageResources(e);return{pageSize:n&&n.size||0,dedupSize:r}}async deletePageResources(e){const t={},n=this.db.transaction("resources","readwrite");let r=await n.store.index("pageId").openCursor(e),i=0;for(;r;){const e=r.value.digest;e?t[e]=(t[e]||0)+1:r.value.payload&&(i+=r.value.payload.length),n.store.delete(r.primaryKey),r=await r.continue()}await n.done;const s=this.db.transaction(["payload","digestRef"],"readwrite"),o=s.objectStore("digestRef");for(const e of Object.keys(t)){const n=await o.get(e);n&&(n.count-=t[e]),n&&n.count>=1?o.put(n):(i+=n?n.size:0,o.delete(e),s.objectStore("payload").delete(e))}return await s.done,i}getLookupRange(e,t,n,r){let i,s,o;switch(t){case"prefix":s=e.slice(0,-1)+String.fromCharCode(e.charCodeAt(e.length-1)+1),i=[e],s=[s];break;case"host":const t=new URL(e).origin;i=[t+"/"],s=[t+"0"];break;case"exact":default:i=[e],s=[e+"!"]}return n?(i=[n,r||""],o=!0):o=!1,IDBKeyRange.bound(i,s,o,!0)}}class M{constructor(){this.repeats={}}getSkipCount(e,t,n){if("POST"!==n&&!t.endsWith(".m3u8"))return 0;e.replacesClientId&&delete this.repeats[e.replacesClientId];const r=e.resultingClientId||e.clientId;return r?(void 0===this.repeats[r]&&(this.repeats[r]={}),void 0===this.repeats[r][t]?this.repeats[r][t]=0:this.repeats[r][t]++,this.repeats[r][t]):0}}var j=n(1),W=n(51),z=n.n(W),H=n(4),G=n(34);const q=["script","style","header","footer","banner-div","noscript"];var V=n(18);class K extends V.a{constructor(e,t=null,n=null){super(),this.reader=e,this.abort=t,this.loadId=n,this.anyPages=!1,this.detectPages=!1,this._lastRecord=null,this.metadata={},this.pageMap={},this.pages=[],this.lists=[]}parseWarcInfo(e){if(!e.payload)return;const t=new TextDecoder("utf-8").decode(e.payload);for(const e of t.split("\n"))if(e.startsWith("json-metadata:"))try{const t=JSON.parse(e.slice("json-metadata:".length));if("collection"===t.type&&(this.metadata.desc=t.desc,this.metadata.title=t.title),t.pages&&t.pages.length){this.pages=this.pages.concat(t.pages);for(const e of t.pages)e.ts=Object(R.m)(e.timestamp).getTime(),this.pageMap[e.ts+"/"+e.url]={page:e};this.anyPages=!0}t.lists&&t.lists.length&&(this.lists=this.lists.concat(t.lists))}catch(e){console.log("Page Add Error",e.toString())}}index(e){if("warcinfo"!==e.warcType){if(this._lastRecord)return this._lastRecord.warcTargetURI!=e.warcTargetURI?(this.indexReqResponse(this._lastRecord,null),void(this._lastRecord=e)):void("request"===e.warcType&&"response"===this._lastRecord.warcType?(this.indexReqResponse(this._lastRecord,e),this._lastRecord=null):"response"===e.warcType&&"request"===this._lastRecord.warcType?(this.indexReqResponse(e,this._lastRecord),this._lastRecord=null):(this.indexReqResponse(this._lastRecord,null),this._lastRecord=e));this._lastRecord=e}else this.parseWarcInfo(e)}indexDone(){this._lastRecord&&(this.indexReqResponse(this._lastRecord),this._lastRecord=null)}shouldIndexMetadataRecord(e){const t=e.warcTargetURI;return!(!t||!t.startsWith("metadata://"))}parseRevisitRecord(e){const t=e.warcTargetURI.split("#")[0],n=(e.warcDate,new Date(e.warcDate).getTime()),r=e.warcRefersToTargetURI,i=new Date(e.warcRefersToDate).getTime();return r===t&&i===n?null:{url:t,ts:n,origURL:r,origTS:i,digest:e.warcPayloadDigest,pageId:null}}indexReqResponse(e,t){const n=this.parseRecords(e,t);n&&this.addResource(n)}parseRecords(e,t){switch(e.warcType){case"revisit":return this.parseRevisitRecord(e);case"resource":t=null;break;case"response":break;case"metadata":if(!this.shouldIndexMetadataRecord(e))return null;break;default:return null}const n=e.warcTargetURI.split("#")[0],r=e.warcDate;let i,s=200,o="OK",a=0,u="";if(e.httpHeaders){if(s=Number(e.httpHeaders.statusCode)||200,t&&"OPTIONS"===t.httpHeaders.method)return null;if(o=e.httpHeaders.statusText,u=((i=Object(R.j)(e.httpHeaders.headers)).get("content-type")||"").split(";")[0],a=parseInt(i.get("content-length")||0),206===s){const e=i.get("content-range"),t=`bytes 0-${a-1}/${a}`;if(e&&e!==t)return null}if(s>300&&s<400){const e=i.get("location");if(e&&new URL(e,n).href===n)return null}}else(i=new Headers).set("content-type",e.warcContentType),i.set("content-length",e.warcContentLength),u=e.warcContentType,a=e.warcContentLength;let l=null;if(t&&t.httpHeaders.headers)try{const e=new Headers(t.httpHeaders.headers).get("cookie");e&&i.set("x-wabac-preset-cookie",e),l=t.httpHeaders.headers.get("Referer")}catch(e){console.warn(e)}if(void 0===this.detectPages&&(this.detectPages=!this.anyPages),this.detectPages&&function(e,t,n){if(200!=t)return!1;if(!e.startsWith("http:")&&!e.startsWith("https:")&&!e.startsWith("blob:"))return!1;if(e.endsWith("/robots.txt"))return!1;const r=e.split("?",2);if(2===r.length&&r[1].length>r[0].length)return!1;if(r[0].substring(r[0].lastIndexOf("/")+1).startsWith("."))return!1;if(n&&"text/html"!==n)return!1;return!0}(n,s,u)){const e=n;this.addPage({url:n,date:r,title:e})}const c=new Date(r).getTime(),h=Object.fromEntries(i.entries()),d=e.warcPayloadDigest,p=e.payload,f={url:n,ts:c,status:s,mime:u,respHeaders:h,digest:d,payload:p,reader:p?null:e.reader,referrer:l};this.pageMap[c+"/"+n]&&p&&u.startsWith("text/")&&(this.pageMap[c+"/"+n].textPromise=async function(e,t,n,r){const i=new z.a,s=[];let o=null;i.on("text",(e,t)=>{if(o)return;const n=e.text.trim();n&&s.push(n)}),i.on("startTag",e=>{!e.selfClosing&&q.includes(e.tagName)&&(o=e.tagName)}),i.on("endTag",e=>{e.tagName===o&&(o=null)});const a=new H.PassThrough({encoding:"utf8"});(n||r)&&(t=await Object(G.a)(t,n,r)),a.push(t),a.push(null),a.pipe(i);const u=new Promise(e=>{i.on("end",()=>{e(s.join(" "))})});return await u}(0,p,i.get("content-encoding"),i.get("transfer-encoding")));const m=e.warcHeader("WARC-JSON-Metadata");if(m)try{f.extraOpts=JSON.parse(m)}catch(e){}const w=e.warcHeader("WARC-Page-ID");return w&&(f.pageId=w),f}filterRecord(e){return null}async load(e,t,n){this.db=e;const r=new j.d(this.reader);let i=0,s=0;try{for await(const e of r){if(!e.warcType){console.log("skip empty record");continue}if(self.interruptLoads&&this.loadId&&self.interruptLoads[this.loadId])throw t(Math.round(r.offset/n*95),"Loading Canceled",r.offset,n),self.interruptLoads[this.loadId](),this.abort&&this.abort.abort(),new R.b;(s=(new Date).getTime())-i>500&&(t(Math.round(r.offset/n*95),null,r.offset,n),i=s);const o=this.filterRecord(e);if("done"===o){this.abort&&this.abort.abort();break}if("skip"!==o){"skipContent"===o?await e.skipFully():await e.readFully(),this.index(e,r);try{await Promise.all(this.promises)}catch(e){console.warn(e.toString())}this.promises=[]}}}catch(e){if(e instanceof R.b)throw e;t(Math.round(r.offset/n*95),`Sorry there was an error downloading. Please try again (${e})`,r.offset,n),console.warn(e)}return this.indexDone(),t(95),await this.finishIndexing(),t(100),this.metadata}async _finishLoad(){if(this.pages.length){for(const{page:e,textPromise:t}of Object.values(this.pageMap))if(t)try{e.text=await t}catch(e){console.warn("Error adding text: "+e.toString())}this.promises.push(this.db.addPages(this.pages))}this.lists.length&&this.promises.push(this.db.addCuratedPageLists(this.lists,"bookmarks","public"))}}class X extends K{constructor(e){super(e),this.detectPages=!1}addPage(){}async load(){const e=await new j.d(this.reader).parse();if(!e)return null;const t=this.parseRecords(e,null);return t&&"revisit"!==e.warcType||await e.readFully(),t}}class Y extends K{filterRecord(e){if("warcinfo"!=e.warcType)return"done"}}const J="https://helper-proxy.webrecorder.workers.dev";function Z(e,t,n,r,i){if(e.startsWith("blob:"))return new ee(e,i,n);if(e.startsWith("http:")||e.startsWith("https:")||e.startsWith("file:"))return new Q(e,t,n);if(e.startsWith("googledrive:"))return new $(e,t,n,r);throw new Error("Invalid URL: "+e)}class Q{constructor(e,t,n=null,r=!1){this.url=e,this.headers=t||{},this.length=n,this.canLoadOnDemand=r,this.isValid=!1}async doInitialFetch(e){const t=new Headers(this.headers);t.set("Range","bytes=0-"),this.isValid=!1;let n=null,r=null;if(e)try{200!==(r=await fetch(this.url,{headers:t,method:"HEAD"})).status&&206!=r.status||(this.canLoadOnDemand=206===r.status||"bytes"===r.headers.get("Accept-Ranges"),this.isValid=!0)}catch(e){}if(!this.isValid){const e=(n=new AbortController).signal;r=await fetch(this.url,{headers:t,signal:e}),this.canLoadOnDemand=206===r.status||"bytes"===r.headers.get("Accept-Ranges"),this.isValid=206===r.status||200===r.status}if(null===this.length&&(this.length=Number(r.headers.get("Content-Length")),!this.length&&206===r.status)){let e=r.headers.get("Content-Range");e&&2===(e=e.split("/")).length&&(this.length=e[1])}if(null===this.length)try{const e=await fetch(`${J}/c/${this.url}`),t=await e.json();t.size&&(this.length=t.size)}catch(e){console.log("Error fetching from helper: "+e.toString())}return this.length=Number(this.length||0),{response:r,abort:n}}async getLength(){if(null===this.length){const{response:e,abort:t}=await this.doInitialFetch(!0);t&&t.abort()}return this.length}async getRange(e,t,n=!1,r=null){const i=new Headers(this.headers);i.set("Range",`bytes=${e}-${e+t-1}`);const s={signal:r,headers:i};let o=null;try{o=await fetch(this.url,s)}catch(e){throw console.log(e),new RangeError(this.url)}if(206!=o.status)throw 401===o.status||403===o.status?new R.a(this.url,o.status):new RangeError(this.url,o.status);return n?o.body:new Uint8Array(await o.arrayBuffer())}}class ${constructor(e,t,n,r){this.fileId=e.slice("googledrive://".length),this.apiUrl=`https://www.googleapis.com/drive/v3/files/${this.fileId}?alt=media`,this.canLoadOnDemand=!0,this.headers=t,r&&r.publicUrl?this.publicUrl=r.publicUrl:this.publicUrl=null,this.length=n,this.isValid=!1}async getLength(){return this.length}async doInitialFetch(e){let t=null,n=null;if(this.publicUrl){t=new Q(this.publicUrl,null,this.length);try{n=await t.doInitialFetch(e)}catch(e){}if(!t.isValid&&(n&&n.abort&&n.abort.abort(),await this.refreshPublicUrl())){t=new Q(this.publicUrl,null,this.length);try{n=await t.doInitialFetch(e)}catch(e){}!t.isValid&&n&&n.abort&&n.abort.abort()}}return t&&t.isValid||(this.publicUrl=null,t=new Q(this.apiUrl,this.headers,this.length),n=await t.doInitialFetch(e)),this.isValid=t.isValid,this.length||(this.length=t.length),n}async getRange(e,t,n=!1,r){let i=null;if(this.publicUrl){i=new Q(this.publicUrl,null,this.length);try{return await i.getRange(e,t,n,r)}catch(s){if(await this.refreshPublicUrl()){i=new Q(this.publicUrl,null,this.length);try{return await i.getRange(e,t,n,r)}catch(e){}}}this.publicUrl=null}return i=new Q(this.apiUrl,this.headers,this.length),await i.getRange(e,t,n,r)}async refreshPublicUrl(){try{const e=await fetch(`${J}/g/${this.fileId}`),t=await e.json();if(t.url)return this.publicUrl=t.url,!0}catch(e){}return!1}}class ee{constructor(e,t=null,n=null){this.url=e,this.blob=t,this.size=this.blob?this.blob.size:n,this.canLoadOnDemand=!1}get length(){return this.size}get isValid(){return!!this.blob}async doInitialFetch(e){if(!this.blob){const e=await fetch(this.url);this.blob=await e.blob()}let t=null;return e||(t=this.blob.stream?this.blob.stream():await this.getReadableStream(this.blob)),{response:new Response(t),stream:t}}async getLength(){if(!this.blob&&!this.blob.size){let e=await fetch(this.url);this.blob=await e.blob(),this.size=this.blob.size}return this.size}async getRange(e,t,n=!1,r){if(!this.blob){const r=new Headers;r.set("Range",`bytes=${e}-${e+t-1}`);const i=await fetch(this.url,{headers:r});if(i.headers.get("content-range"))return n?i.body:new Uint8Array(await i.arrayBuffer());this.blob=await i.blob()}const i=this.blob.slice(e,e+t,"application/octet-stream");if(n)return i.stream?i.stream():await this.getReadableStream(i);try{const e=i.arrayBuffer?await i.arrayBuffer():await this.getArrayBuffer(i);return new Uint8Array(e)}catch(e){return console.log("error reading blob",e),null}}getArrayBuffer(e){return new Promise(t=>{let n=new FileReader;n.onloadend=()=>{t(n.result)},n.readAsArrayBuffer(e)})}async getReadableStream(e){const t=await this.getArrayBuffer(e);return new ReadableStream({start(e){e.enqueue(new Uint8Array(t)),e.close()}})}}class te extends U{constructor(e,t=!1){super(e),this.noCache=t,this.useRefCounts=!t}async loadRecordFromSource(e){const t=await this.loadSource(e.source),n=new X(t);return await n.load()}async loadPayload(e,t=0){let n=await super.loadPayload(e);if(n&&e.respHeaders&&"warc/revisit"!==e.mime)return n;const r=await this.loadRecordFromSource(e);if(!r)return console.log(`No WARC Record Loaded for: ${e.url}`),null;if(r.url!==e.url)return console.log(`Wrong url: expected ${e.url}, got ${r.url}`),null;if(r.ts!==e.ts){if(1e3*Math.floor(r.ts/1e3)!==e.ts)return console.log(`Wrong timestamp: expected ${e.ts}, got ${r.ts}`),null}if(r.digest!==e.digest&&console.log(`Wrong digest: expected ${e.digest}, got ${r.digest}`),r.origURL){const i=await this.lookupUrl(r.origURL,r.origTS,{noRevisits:!0});return i&&(n||(t<2?n=await this.loadPayload(i,t+1):console.warn("Avoiding revisit lookup loop for: "+JSON.stringify(r)),n))?(e.respHeaders=i.respHeaders,e.mime=i.mime,i.extraOpts&&(e.extraOpts=i.extraOpts),this.noCache||(delete e.payload,await this.db.put("resources",e)),n):null}const i=r.digest;if(!this.noCache&&r.reader&&i&&(r.reader=new ie(this,r.reader,i,e.url)),!(n=r.payload)&&!r.reader)return null;try{n&&!this.noCache&&await this.commitPayload(n,i)}catch(t){console.warn(`Payload Update Error: ${e.url}`),console.warn(t)}if(!(e.respHeaders&&e.digest||(e.respHeaders=r.respHeaders,e.digest=i,r.extraOpts&&(e.extraOpts=r.extraOpts),this.noCache)))try{await this.db.put("resources",e)}catch(t){console.warn(`Resource Update Error: ${e.url}`),console.warn(t)}return n||r.reader}async commitPayload(e,t){if(!e||0===e.length)return;const n=this.db.transaction(["payload","digestRef"],"readwrite");try{if(n.objectStore("payload").put({payload:e,digest:t}),this.useRefCounts){const r=await n.objectStore("digestRef").get(t);r&&(r.size=e.length,n.objectStore("digestRef").put(r))}await n.done}catch(e){console.warn("Payload Commit Error: "+e)}}}class ne extends te{constructor(e,t,n=!1){super(e,n),this.loader=t}updateHeaders(e){this.loader.headers=e}async loadSource(e){const{start:t,length:n}=e;return await this.loader.getRange(t,n,!0)}}class re extends te{constructor(e,t,n,r=!1){super(e,r),this.remoteUrlPrefix=t,this.headers=n}updateHeaders(e){this.headers=e}async loadSource(e){const{start:t,length:n}=e,r=new Headers(this.headers),i=Z(new URL(e.path,this.remoteUrlPrefix).href,r);return await i.getRange(t,n,!0)}}class ie extends j.b{constructor(e,t,n,r=""){super(),this.db=e,this.reader=t,this.digest=n,this.url=r,this.chunks=[],this.size=0,this.fullbuff=null,this.commit=!0,this.alreadyRead=!1}setLimitSkip(e=-1,t=0){(-1!=e||t>0)&&(this.commit=!1),this.reader.setLimitSkip(e,t)}async*[Symbol.asyncIterator](){if(!this.alreadyRead){for await(const e of this.reader)this.chunks.push(e),this.size+=e.byteLength,yield e;this.fullbuff=j.b.concatChunks(this.chunks,this.size),0!==this.reader.limit?console.warn(`Expected payload not consumed, ${this.reader.limit} bytes left`):this.commit&&await this.db.commitPayload(this.fullbuff,this.digest),this.chunks=[],this.alreadyRead=!0}}async readFully(){for await(const e of this);return this.fullbuff}}const se=3e3;class oe extends K{constructor(e,t,n){super(e,t,n),this.cdxindexer=null}filterRecord(e){switch(e.warcType){case"warcinfo":case"revisit":return null;case"request":return"skipContent";case"metadata":return this.shouldIndexMetadataRecord(e)?null:"skipContent"}const t=e.warcTargetURI,n=new Date(e.warcDate).getTime();if(this.pageMap[n+"/"+t])return e._isPage=!0,null}index(e,t){if(e._isPage)return super.index(e,t);if("warcinfo"===e.warcType)return void this.parseWarcInfo(e);this.cdxindexer||(this.cdxindexer=new j.c({},null));const n=this.cdxindexer.indexRecord(e,t,"");n&&this.addCdx(n)}addCdx(e){const{url:t,mime:n}=e,r=Number(e.status)||200,i=Object(R.m)(e.timestamp).getTime(),s={path:e.filename,start:Number(e.offset),length:Number(e.length)};let{digest:o}=e;o&&-1===o.indexOf(":")&&(o="sha1:"+o);const a={url:t,ts:i,status:r,digest:o,mime:n,loaded:!1,source:s};this.batch.length>=se&&(this.promises.push(this.db.addResources(this.batch)),this.batch=[],console.log(`Read ${this.count+=se} records`)),this.batch.push(a)}}class ae extends oe{async load(e){this.db=e;let t=this.reader;t.iterLines||(t=new j.a(this.reader));for await(const e of t.iterLines()){let t,n,r,i=e.trimEnd();if(!i.startsWith("{")){const e=i.indexOf(" {");if(e<0)continue;[n,r]=i.split(" ",2),i=i.slice(e)}try{t=JSON.parse(i)}catch(e){console.log("JSON Parser error on: "+i);continue}t.timestamp=r,t.url||(t.url=n),this.addCdx(t)}this.indexDone(),await this.finishIndexing()}}const ue=/(?:([\d]+)[^\/]*\/)?(http.*)/;class le{constructor(e){this.sourceUrl=e.sourceUrl,this.type=e.extraConfig&&e.extraConfig.sourceType||"kiwix",this.notFoundPageUrl=e.extraConfig&&e.extraConfig.notFoundPageUrl}async getAllPages(){return[]}async getResource(e,t,n){const{url:r,headers:i}=de(e,t);let s=i;if("kiwix"===this.type){let t=await this.resolveHeaders(r);if(!t){const e=P.getFuzzyCanonWithArgs(r);e!==r&&(t=await this.resolveHeaders(e))}if(!t){if(this.notFoundPageUrl&&"navigate"===e.request.mode){const e=await fetch(this.notFoundPageUrl);if(200===e.status){const t={"Content-Type":"text/html"},n=await e.text();return new Response(n.replace("$URL",r),{status:404,headers:t})}}return null}let{headers:n,encodedUrl:i,date:o,status:a,statusText:u,hasPayload:l}=t;if(s.has("Range")){const e=s.get("Range");s={Range:e}}let c=null,h=null;l&&((h=await fetch(this.sourceUrl+"A/"+i,{headers:s})).body&&(c=new j.a(h.body.getReader(),!1)),206===h.status&&(a=206,u="Partial Content",n.set("Content-Length",h.headers.get("Content-Length")),n.set("Content-Range",h.headers.get("Content-Range")),n.set("Accept-Ranges","bytes"))),c||(c=new Uint8Array([])),o||(o=new Date),n||(n=new Headers);const d=!1,p=!1;return new B.a({payload:c,status:a,statusText:u,headers:n,url:r,date:o,noRW:p,isLive:d})}}async resolveHeaders(e){const t=e.slice(e.indexOf("//")+2);let n=encodeURI(t);n=encodeURIComponent(t);let r=await fetch(this.sourceUrl+"H/"+n);if(200!==r.status)return null;let i=null,s=null,o=null,a=null,u=!1;try{const t=await j.d.parse(r.body);if("revisit"===t.warcType){const n=t.warcHeaders.headers.get("WARC-Refers-To-Target-URI");if(n&&n!==e)return await this.resolveHeaders(n)}s=new Date(t.warcDate),t.httpHeaders?(i=t.httpHeaders.headers,o=Number(t.httpHeaders.statusCode),a=t.httpHeaders.statusText,u="0"!==t.httpHeaders.headers.get("Content-Length")):"resource"===t.warcType&&((i=new Headers).set("Content-Type",t.warcContentType),i.set("Content-Length",t.warcContentLength),o=200,a="OK",u=t.warcContentLength>0),o||(o=200)}catch(t){console.warn(t),console.warn("Ignoring headers, error parsing headers response for: "+e)}return{encodedUrl:n,headers:i,date:s,status:o,statusText:a,hasPayload:u}}}class ce{constructor(e){this.replayPrefix=e.replayPrefix,this.idMod=void 0!==e.idMod?e.idMod:"id_",this.redirMod=void 0!==e.redirMod?e.redirMod:"mp_",this.redirectMode=this.idMod===this.redirMod?"follow":"manual"}async getAllPages(){return[]}getUrl(e,t){let n=this.replayPrefix;return(t||e.timestamp)&&(n+=e.timestamp+t+"/"),n+e.url}async getResource(e,t,n){let r=await fetch(this.getUrl(e,this.idMod),{credentials:"same-origin",redirect:this.redirectMode,mode:"cors"});if(r.status>=400&&!r.headers.get("memento-datetime"))return null;const i=await this.getRedirect(e,r,t);let s=null,o=!1;i?(r=Response.redirect(i.path,307),o=!0,s=i.timestamp):s=e.timestamp;const a=e.url,u=s?Object(R.m)(s):new Date;return B.a.fromResponse({url:a,response:r,date:u,noRW:o})}async getRedirect(e,t,n){if("opaqueredirect"===t.type)t=await fetch(this.getUrl(e,this.redirMod),{credentials:"same-origin",redirect:"follow",mode:"cors"});else if(!t.redirected)return null;const r=t.url.indexOf(this.replayPrefix)+this.replayPrefix.length,i=t.url.slice(r),s=i.match(ue);return s?{timestamp:s[1],path:n+s[1]+"mp_/"+s[2]}:{path:n+i}}}class he{constructor(e,t=!1,n=!0){this.prefix=e||"",this.proxyPathOnly=t,this.isLive=n}async getAllPages(){return[]}async getResource(e,t,n){const{headers:r,credentials:i,url:s}=de(e,t);let o;if(this.proxyPathOnly){const e=new URL(s);o=this.prefix+e.pathname+e.search}else o=this.prefix+s;const a=await fetch(o,{method:e.request.method,body:e.request.body,headers:r,credentials:i,mode:"cors",redirect:"follow"});return B.a.fromResponse({url:s,response:a,date:new Date,noRW:!1,isLive:this.isLive})}}function de(e,t,n=!0){let r,i,s;if(n){r=new Headers(e.request.headers);const n=(i=e.request.referrer).indexOf("/http",t.length-1);n>0&&(i=i.slice(n+1),r.set("X-Proxy-Referer",i)),s=e.request.credentials}else r=new Headers,s="omit";let o=e.url;if(o.startsWith("//"))try{o=new URL(i).protocol+o}catch(e){o="https:"+o}return{referrer:i,headers:r,credentials:s,url:o}}var pe=n(26),fe=n.n(pe),me=n(37);class we extends ne{constructor(e,t,n=null,r=!1,i){super(e,t,r),this.zipreader=new _e(t),this.externalSources=[],this.fuzzyUrlRules=[],this.useSurt=!0,this.fullConfig=i,this.textIndex=i&&i.metadata&&i.metadata.textIndex,t.canLoadOnDemand=!0,n&&this.initConfig(n)}_initDB(e,t,n,r){if(super._initDB(e,t,n,r),!t){e.createObjectStore("ziplines",{keyPath:"prefix"}),e.createObjectStore("zipEntries",{keyPath:"filename"})}}async init(){await super.init(),await this.loadZipEntries()}async close(){super.close(),caches.delete("cache:"+this.name.slice("db:".length))}async clearZipData(){const e=["zipEntries","ziplines"];for(const t of e)await this.db.clear(t)}async clearAll(){await super.clearAll(),await this.clearZipData()}updateHeaders(e){this.zipreader.loader.headers=e}async loadZipEntries(){const e=await this.db.getAll("zipEntries");if(!e.length)return;const t={};for(const n of e)t[n.filename]=n;this.zipreader.entries=t}async saveZipEntries(e){const t=this.db.transaction("zipEntries","readwrite");t.store.clear();for(const n of Object.values(e))t.store.put(n);await t.done,this.db.clear("ziplines")}async loadZiplinesIndex(e,t,n){let r=0,i=0,s=0,o=[],a="";for await(const u of e.iterLines()){if((r+=u.length)===u.length&&u.startsWith("!meta")){const e=u.indexOf(" {");if(e<0){console.warn("Invalid Meta Line: "+u);continue}const t=JSON.parse(u.slice(e));t.filename&&(a=t.filename),"cdxj-gzip-1.0"!==t.format&&console.log(`Unknown CDXJ format "${t.format}", archive may not parse correctly`);continue}let e;if(u.indexOf("\t")>0){let[t,n,r,i]=u.split("\t");e={prefix:t,filename:n,offset:r=Number(r),length:i=Number(i),loaded:!1},this.useSurt=!0}else{const t=u.indexOf(" {");if(t<0){console.log("Invalid Index Line: "+u);continue}const n=u.slice(0,t);let{offset:r,length:i,filename:s}=JSON.parse(u.slice(t));e={prefix:n,filename:s=s||a,offset:r,length:i,loaded:!1}}(s=(new Date).getTime())-i>500&&(t(Math.round(r/n*100),null,r,n),i=s),o.push(e)}const u=this.db.transaction("ziplines","readwrite");for(const e of o)u.store.put(e);try{await u.done}catch(e){console.log("Error loading ziplines index: ",e)}}async load(e,t,n){if(e!==this)return void console.error("wrong db");const r=await e.zipreader.load(!0);await e.saveZipEntries(r);const i=[];let s;r["webarchive.yaml"]&&(s=await this.loadMetadata(r,await e.zipreader.loadFile("webarchive.yaml")));for(const n of Object.keys(r))if(n.endsWith(".cdx")||n.endsWith(".cdxj")){console.log("Loading CDX "+n);const t=await e.zipreader.loadFile(n);i.push(new ae(t).load(e))}else if(n.endsWith(".idx")){if(this.loader.canLoadOnDemand){console.log("Loading IDX "+n);const r=e.zipreader.getCompressedSize(n);i.push(e.loadZiplinesIndex(await e.zipreader.loadFile(n),t,r))}}else if(n.endsWith(".warc.gz")||n.endsWith(".warc"))if(!s&&this.loader.canLoadOnDemand){const r=new AbortController,i=await e.zipreader.loadFile(n,{signal:r.signal,unzip:!0}),o=new Y(i,r),a=e.zipreader.getCompressedSize(n);s=await o.load(e,t,a)}else if(!this.loader.canLoadOnDemand){const r=await e.zipreader.loadFile(n,{unzip:!0}),i=new K(r);i.detectPages=!1;const o=e.zipreader.getCompressedSize(n);s=await i.load(e,t,o)}return await Promise.all(i),s||{}}async loadPagesCSV(e){const t=(new TextDecoder).decode(await e.readFully()),n=await Object(me.csv2jsonAsync)(t);n&&n.length&&await this.addPages(n)}initConfig(e){if(void 0!==e.decodeResponses&&(this.fullConfig.decode=e.decodeResponses),void 0!==e.useSurt&&(this.useSurt=e.useSurt),e.es)for(const[t,n]of e.es){const e=new he(n,!0,!1);this.externalSources.push({prefix:t,external:e})}if(e.fuzzy)for(const[t,n]of e.fuzzy){const e=new RegExp(t);this.fuzzyUrlRules.push({match:e,replace:n})}e.textIndex&&(this.textIndex=e.textIndex)}async getTextIndex(){const e={"Content-Type":"application/ndjson"};if(!this.textIndex)return new Response("",{headers:e});const t=this.zipreader.getCompressedSize(this.textIndex);t>0&&(e["Content-Length"]=""+t);const n=await this.zipreader.loadFile(this.textIndex,{unzip:!0});return new Response(n.getReadableStream(),{headers:e})}async loadMetadata(e,t){const n=(new TextDecoder).decode(await t.readFully()),r=fe.a.safeLoad(n);void 0!==r.config&&this.initConfig(r.config);const i={desc:r.desc,title:r.title};r.textIndex&&(i.textIndex=r.textIndex);const s=r.pages||[];s&&s.length?await this.addPages(s):e["pages.csv"]&&await this.loadPagesCSV(await this.zipreader.loadFile("pages.csv"));const o=r.pageLists||[];return o&&o.length&&await this.addCuratedPageLists(o,"pages","show"),i}async loadRecordFromSource(e){let t,n=0,r=-1;const i=e.source;if("string"==typeof i)t=i;else{if("object"!=typeof i)return null;n=i.start,r=i.length,t=i.path}let s=null;const o=await this.zipreader.loadFileCheckDirs(t,n,r);return s=new X(o),await s.load()}getSurt(e){try{e=e.replace(/www\d*\./,"");const t=new URL(e);let n=t.hostname.split(".").reverse().join(",");return t.port&&(n+=":"+t.port),n+=")",n+=t.pathname,t.search&&(t.searchParams.sort(),n+=t.search),n.toLowerCase()}catch(t){return e}}async loadFromZiplines(e,t){t&&Object(R.f)(new Date(t).toISOString());let n,r;const i=this.useSurt?this.getSurt(e):e;n=i+" 9",r=i;const s=this.db.transaction("ziplines","readonly"),o=[],a=IDBKeyRange.upperBound(n,!1);for await(const e of s.store.iterate(a,"prev"))if(o.unshift(e.value),!e.value.prefix.split(" ")[0].startsWith(r))break;await s.done;const u=[];for(const e of o){if(e.loaded)continue;const t="indexes/"+e.filename,n={offset:e.offset,length:e.length,unzip:!0},r=await this.zipreader.loadFile(t,n);u.push(new ae(r).load(this)),e.loaded=!0,await this.db.put("ziplines",e)}return await Promise.all(u),u.length>0}async getResource(e,t,n){if(this.externalSources.length)for(const{prefix:r,external:i}of this.externalSources)if(e.url.startsWith(r))try{return await i.getResource(e,t,n)}catch(e){console.warn("Upstream Error",e)}let r=await super.getResource(e,t,n);if(r)return r;if(this.fuzzyUrlRules.length)for(const{match:i,replace:s}of this.fuzzyUrlRules){const o=e.url.replace(i,s);if(o&&o!==e.url&&(e.url=o,r=await super.getResource(e,t,n)))return r}return null}async lookupUrl(e,t,n={}){try{let r=await super.lookupUrl(e,t,n);return!r||n.noRevisits&&"warc/revisit"===r.mime?(await this.loadFromZiplines(e,t)&&(r=await super.lookupUrl(e,t,n)),r):r}catch(e){return console.warn(e),null}}async resourcesByUrlAndMime(e,...t){let n=await super.resourcesByUrlAndMime(e,...t);return n.length>0?n:(await this.loadFromZiplines(e,"")&&(n=await super.resourcesByUrlAndMime(e,...t)),n)}}const ge=4294967295,be=65535;class _e{constructor(e,t=null){this.loader=e,this.entries=t}async load(e=!1){if(!this.entries||e){const e=await this.loader.getLength(),t=Math.min(be+23,e),n=e-t,r=await this.loader.getRange(n,t);this.entries=this._loadEntries(r,n)}return this.entries}_loadEntries(e,t){const n=e.byteLength,r=new DataView(e.buffer),i=new TextDecoder("utf8"),s=new TextDecoder("ascii"),o={};let a=0,u=0,l=n;for(let t=n-22,i=Math.max(0,t-be);t>=i;--t)if(80===e[t]&&75===e[t+1]&&5===e[t+2]&&6===e[t+3]){l=t,u=r.getUint32(t+16,!0),a=r.getUint16(t+8,!0);break}if(u===ge||a===be){if(117853008!==r.getUint32(l-20,!0))return void console.warn("invalid zip64 EOCD locator");const e=this.getUint64(r,l-12,!0)-t;if(101075792!==r.getUint32(e,!0))return void console.warn("invalid zip64 EOCD record");a=this.getUint64(r,e+32,!0),u=this.getUint64(r,e+48,!0)}if(t&&(u-=t),u>=n||u<=0)for(u=-1,a=be;++u=0&&u=8&&(a=this.getUint64(r,e,!0),e+=8,i-=8),n===ge&&i>=8&&(n=this.getUint64(r,e,!0),e+=8,i-=8),p===ge&&i>=8&&(p=this.getUint64(r,e,!0),e+=8,i-=8)),e+=i}}f.endsWith("/")||(o[f]={filename:f,deflate:d,uncompressedSize:a,compressedSize:n,localEntryOffset:p}),u+=46+l+c+h}return o}async loadFileCheckDirs(e,t,n){if(null===this.entries&&await this.load(),this.entries["archive/"+e])e="archive/"+e;else if(this.entries["warcs/"+e])e="warcs/"+e;else for(const t of Object.keys(this.entries))if(t.endsWith("/"+e)){e=t;break}return await this.loadFile(e,{offset:t,length:n,unzip:!0})}getCompressedSize(e){if(null===this.entries)return-1;const t=this.entries[e];return t?t.compressedSize:-1}async loadFile(e,{offset:t=0,length:n=-1,signal:r=null,unzip:i=!1}={}){null===this.entries&&await this.load();const s=this.entries[e];if(!s)return null;if(void 0===s.offset){const e=await this.loader.getRange(s.localEntryOffset,30),t=new DataView(e.buffer),n=t.getUint16(26,!0),r=t.getUint16(28,!0);s.offset=30+n+r+s.localEntryOffset}n=n<0?s.compressedSize:Math.min(n,s.compressedSize-t),t+=s.offset;const o=await this.loader.getRange(t,n,!0,r);return i?s.deflate?new j.a(new j.a(o.getReader(),"deflate")):new j.a(o.getReader()):new j.a(o.getReader(),s.deflate?"deflate":null)}getUint64(e,t,n){const r=e.getUint32(t,n),i=e.getUint32(t+4,n),s=n?r+2**32*i:2**32*r+i;return Number.isSafeInteger(s)||console.warn(s,"exceeds MAX_SAFE_INTEGER. Precision may be lost"),s}}class ye extends V.a{constructor(e){super(),this.har=e,this.pageRefs={}}async load(e){return this.db=e,"string"==typeof this.har&&(this.har=JSON.parse(this.har)),this.parseEntries(this.har),this.parsePages(this.har),await this.finishIndexing(),{}}parsePages(e){for(const t of e.log.pages){if(!t.pageTimings||!t.pageTimings.onLoad)continue;let e;e=t.title&&(t.title.startsWith("http:")||t.title.startsWith("https:"))?t.title:this.pageRefs[t.id];const n=t.title||e,r=t.startedDateTime;this.addPage({url:e,date:r,title:n})}}parseEntries(e){for(const t of e.log.entries){if(!t.response.content||!t.response.content.text){console.log("Skipping: "+t.request.url);continue}let e=null;try{e=Uint8Array.from(atob(t.response.content.text),e=>e.charCodeAt(0))}catch(n){e=t.response.content.text}console.log("Added: "+t.request.url);const n=new Date(t.startedDateTime).getTime(),r={};for(const{name:e,value:n}of t.response.headers)r[e]=n;this.addResource({url:t.request.url,ts:n,status:t.response.status,respHeaders:r,payload:e}),t.pageref&&!this.pageRefs[t.pageref]&&(this.pageRefs[t.pageref]=t.request.url)}}}var ve=n(89);const xe=25e6;self.interruptLoads={};class Ee{constructor(){this.colldb=null,this.root=null,this._init_db=this._initDB()}async _initDB(){this.colldb=await g("collDB",1,{upgrade:(e,t,n,r)=>{e.createObjectStore("colls",{keyPath:"name"})}})}async loadAll(e){if(await this._init_db,e)for(const t of e.split(",")){const e=t.split(":");if(2===e.length){const t={dbname:e[1],sourceName:e[1],decode:!1},n={name:e[0],type:"archive",config:t};console.log("Adding Coll: "+JSON.stringify(n)),await this.colldb.put("colls",n)}}try{const e=(await this.listAll()).map(e=>this._initColl(e));await Promise.all(e)}catch(e){console.warn(e.toString())}return!0}async listAll(){return await this._init_db,await this.colldb.getAll("colls")}async loadColl(e){await this._init_db;const t=await this.colldb.get("colls",e);return t?await this._initColl(t):null}async deleteColl(e){await this._init_db;const t=await this.colldb.get("colls",e);if(!t)return!1;t.config.dbname&&await b(t.config.dbname,{blocked(e){console.log(`Unable to delete ${t.config.dbname}: ${e}`)}}),await this.colldb.delete("colls",e)}async updateAuth(e,t){await this._init_db;const n=await this.colldb.get("colls",e);return!!n&&(n.config.headers=t,await this.colldb.put("colls",n),!0)}async updateMetadata(e,t){await this._init_db;const n=await this.colldb.get("colls",e);if(!n)return!1;const r=n.config.metadata||{};return Object.assign(r,t),await this.colldb.put("colls",n),r}async updateSize(e,t,n){await this._init_db;const r=await this.colldb.get("colls",e);if(!r)return!1;r.config.loadSize=(r.config.loadSize||0)+t,r.config.dedupSize=(r.config.dedupSize||0)+n,await this.colldb.put("colls",r)}async _initColl(e){let t=null,n=null;switch(e.type){case"archive":t=new U(e.config.dbname);break;case"remotesource":n=Z(e.config.loadUrl,e.config.headers,e.config.size,e.config.extra),t=new ne(e.config.dbname,n,e.config.noCache);break;case"remoteprefix":t=new re(e.config.dbname,e.config.remotePrefix,e.config.headers,e.config.noCache);break;case"remotezip":n=Z(e.config.loadUrl||e.config.sourceUrl,e.config.headers,e.config.extra),t=new we(e.config.dbname,n,e.config.extraConfig,e.config.noCache,e.config);break;case"remoteproxy":t=new ce(e.config);break;case"remotewarcproxy":t=new le(e.config);break;case"live":t=new he(e.config.prefix,e.config.proxyPathOnly,e.config.isLive)}if(!t)return console.log("no store found: "+e.type),null;t.initing&&await t.initing;const r=e.name,i=e.config;return e.config.root&&(this.root=r),this._createCollection({name:r,store:t,config:i})}_createCollection(e){return e}}class Ae extends Ee{constructor(e){super(),this.registerListener(e)}async hasCollection(e){return await this._init_db,null!=await this.colldb.getKey("colls",e)}registerListener(e){e.addEventListener("message",e=>this._handleMessage(e))}async _handleMessage(e){await this._init_db;const t=e.source||self;switch(e.data.msg_type){case"addColl":{const n=e.data.name,r=(e,r,i,s)=>{t.postMessage({msg_type:"collProgress",name:n,percent:e,error:r,currentSize:i,totalSize:s})};let i;try{if(await this.hasCollection(n)?e.data.skipExisting?i=!0:(await this.deleteCollection(n),i=await this.addCollection(e.data,r)):i=await this.addCollection(e.data,r),!i)return}catch(e){return console.warn(e),void r(0,"An unexpected error occured: "+e.toString())}t.postMessage({msg_type:"collAdded",name:n});break}case"cancelLoad":{const t=e.data.name,n=new Promise(e=>self.interruptLoads[t]=e);await n,await this.deleteCollection(t),delete self.interruptLoads[t];break}case"removeColl":{const n=e.data.name;await this.hasCollection(n)&&(await this.deleteCollection(n),this.doListAll(t));break}case"listAll":this.doListAll(t)}}async doListAll(e){const t=[],n=await this.listAll();for(const e of n)t.push({name:e.name,prefix:e.name,pageList:[],sourceName:e.config.sourceName});e.postMessage({msg_type:"listAll",colls:t})}async addCollection(e,t){const n=e.name;let r=null,i={root:e.root||!1},s=null;const o=e.file;if(!o||!o.sourceUrl)return t(0,"Invalid Load Request"),!1;if(o.sourceUrl.startsWith("proxy:"))i.sourceUrl=o.sourceUrl.slice("proxy:".length),i.extraConfig=e.extraConfig,i.topTemplateUrl=e.topTemplateUrl,r="remotewarcproxy";else{let a=null;r="archive",i.dbname="db:"+n;let u=o.loadUrl||o.sourceUrl;u.match(/[\w]+:\/\//)||(u=new URL(u,self.location.href).href),i.decode=!0,i.onDemand=!1,i.loadUrl=u,i.sourceUrl=o.sourceUrl,i.sourceName=o.name||o.sourceUrl;try{i.sourceName.match(/https?:\/\//)&&(i.sourceName=new URL(i.sourceName).pathname)}catch(e){}i.sourceName=i.sourceName.slice(i.sourceName.lastIndexOf("/")+1),i.headers=o.headers,i.size="number"==typeof o.size?o.size:null,i.extra=o.extra,i.extraConfig=e.extraConfig,i.noCache=u.startsWith("file:")||o.noCache;const l=Z(u,o.headers,o.size,i.extra,o.blob);let c=!1;(i.sourceName.endsWith(".wacz")||i.sourceName.endsWith(".zip"))&&(r="remotezip",a=s=new we(i.dbname,l,i.extraConfig,i.noCache,i),c=!0);let{abort:h,response:d,stream:p}=await l.doInitialFetch(c);if(p=p||d.body,!l.isValid){const e=l.length<=1e3?await d.text():"";return t(0,`Sorry, this URL could not be loaded.\nMake sure this is a valid URL and you have access to this file.\nStatus: ${d.status} ${d.statusText}\nError Details:\n${e}`),h&&h.abort(),!1}if(!l.length)return t(0,"Sorry, this URL could not be loaded because the size of the file is not accessible.\nMake sure this is a valid URL and you have access to this file."),h&&h.abort(),!1;const f=l.length;if(i.sourceName.endsWith(".warc")||i.sourceName.endsWith(".warc.gz")?f0?("string"==typeof t||o.objectMode||Object.getPrototypeOf(t)===l.prototype||(t=function(e){return l.from(e)}(t)),r?o.endEmitted?e.emit("error",new Error("stream.unshift() after end event")):v(e,o,t,!0):o.ended?e.emit("error",new Error("stream.push() after EOF")):(o.reading=!1,o.decoder&&!n?(t=o.decoder.write(t),o.objectMode||0!==t.length?v(e,o,t,!1):k(e,o)):v(e,o,t,!1))):r||(o.reading=!1));return function(e){return!e.ended&&(e.needReadable||e.lengtht.highWaterMark&&(t.highWaterMark=function(e){return e>=x?e=x:(e--,e|=e>>>1,e|=e>>>2,e|=e>>>4,e|=e>>>8,e|=e>>>16,e++),e}(e)),e<=t.length?e:t.ended?t.length:(t.needReadable=!0,0))}function A(e){var t=e._readableState;t.needReadable=!1,t.emittedReadable||(p("emitReadable",t.flowing),t.emittedReadable=!0,t.sync?i.nextTick(S,e):S(e))}function S(e){p("emit readable"),e.emit("readable"),R(e)}function k(e,t){t.readingMore||(t.readingMore=!0,i.nextTick(T,e,t))}function T(e,t){for(var n=t.length;!t.reading&&!t.flowing&&!t.ended&&t.length=t.length?(n=t.decoder?t.buffer.join(""):1===t.buffer.length?t.buffer.head.data:t.buffer.concat(t.length),t.buffer.clear()):n=function(e,t,n){var r;es.length?s.length:e;if(o===s.length?i+=s:i+=s.slice(0,e),0===(e-=o)){o===s.length?(++r,n.next?t.head=n.next:t.head=t.tail=null):(t.head=n,n.data=s.slice(o));break}++r}return t.length-=r,i}(e,t):function(e,t){var n=l.allocUnsafe(e),r=t.head,i=1;r.data.copy(n),e-=r.data.length;for(;r=r.next;){var s=r.data,o=e>s.length?s.length:e;if(s.copy(n,n.length-e,0,o),0===(e-=o)){o===s.length?(++i,r.next?t.head=r.next:t.head=t.tail=null):(t.head=r,r.data=s.slice(o));break}++i}return t.length-=i,n}(e,t);return r}(e,t.buffer,t.decoder),n);var n}function I(e){var t=e._readableState;if(t.length>0)throw new Error('"endReadable()" called on non-empty stream');t.endEmitted||(t.ended=!0,i.nextTick(N,t,e))}function N(e,t){e.endEmitted||0!==e.length||(e.endEmitted=!0,t.readable=!1,t.emit("end"))}function F(e,t){for(var n=0,r=e.length;n=t.highWaterMark||t.ended))return p("read: emitReadable",t.length,t.ended),0===t.length&&t.ended?I(this):A(this),null;if(0===(e=E(e,t))&&t.ended)return 0===t.length&&I(this),null;var r,i=t.needReadable;return p("need readable",i),(0===t.length||t.length-e0?O(e,t):null)?(t.needReadable=!0,e=0):t.length-=e,0===t.length&&(t.ended||(t.needReadable=!0),n!==e&&t.ended&&I(this)),null!==r&&this.emit("data",r),r},_.prototype._read=function(e){this.emit("error",new Error("_read() is not implemented"))},_.prototype.pipe=function(e,t){var n=this,s=this._readableState;switch(s.pipesCount){case 0:s.pipes=e;break;case 1:s.pipes=[s.pipes,e];break;default:s.pipes.push(e)}s.pipesCount+=1,p("pipe count=%d opts=%j",s.pipesCount,t);var u=(!t||!1!==t.end)&&e!==r.stdout&&e!==r.stderr?c:_;function l(t,r){p("onunpipe"),t===n&&r&&!1===r.hasUnpiped&&(r.hasUnpiped=!0,p("cleanup"),e.removeListener("close",g),e.removeListener("finish",b),e.removeListener("drain",h),e.removeListener("error",w),e.removeListener("unpipe",l),n.removeListener("end",c),n.removeListener("end",_),n.removeListener("data",m),d=!0,!s.awaitDrain||e._writableState&&!e._writableState.needDrain||h())}function c(){p("onend"),e.end()}s.endEmitted?i.nextTick(u):n.once("end",u),e.on("unpipe",l);var h=function(e){return function(){var t=e._readableState;p("pipeOnDrain",t.awaitDrain),t.awaitDrain&&t.awaitDrain--,0===t.awaitDrain&&a(e,"data")&&(t.flowing=!0,R(e))}}(n);e.on("drain",h);var d=!1;var f=!1;function m(t){p("ondata"),f=!1,!1!==e.write(t)||f||((1===s.pipesCount&&s.pipes===e||s.pipesCount>1&&-1!==F(s.pipes,e))&&!d&&(p("false write response, pause",n._readableState.awaitDrain),n._readableState.awaitDrain++,f=!0),n.pause())}function w(t){p("onerror",t),_(),e.removeListener("error",w),0===a(e,"error")&&e.emit("error",t)}function g(){e.removeListener("finish",b),_()}function b(){p("onfinish"),e.removeListener("close",g),_()}function _(){p("unpipe"),n.unpipe(e)}return n.on("data",m),function(e,t,n){if("function"==typeof e.prependListener)return e.prependListener(t,n);e._events&&e._events[t]?o(e._events[t])?e._events[t].unshift(n):e._events[t]=[n,e._events[t]]:e.on(t,n)}(e,"error",w),e.once("close",g),e.once("finish",b),e.emit("pipe",n),s.flowing||(p("pipe resume"),n.resume()),e},_.prototype.unpipe=function(e){var t=this._readableState,n={hasUnpiped:!1};if(0===t.pipesCount)return this;if(1===t.pipesCount)return e&&e!==t.pipes?this:(e||(e=t.pipes),t.pipes=null,t.pipesCount=0,t.flowing=!1,e&&e.emit("unpipe",this,n),this);if(!e){var r=t.pipes,i=t.pipesCount;t.pipes=null,t.pipesCount=0,t.flowing=!1;for(var s=0;s0?r-4:r,h=0;h>16&255,a[u++]=t>>8&255,a[u++]=255&t;2===o&&(t=i[e.charCodeAt(h)]<<2|i[e.charCodeAt(h+1)]>>4,a[u++]=255&t);1===o&&(t=i[e.charCodeAt(h)]<<10|i[e.charCodeAt(h+1)]<<4|i[e.charCodeAt(h+2)]>>2,a[u++]=t>>8&255,a[u++]=255&t);return a},t.fromByteArray=function(e){for(var t,n=e.length,i=n%3,s=[],o=0,a=n-i;oa?a:o+16383));1===i?(t=e[n-1],s.push(r[t>>2]+r[t<<4&63]+"==")):2===i&&(t=(e[n-2]<<8)+e[n-1],s.push(r[t>>10]+r[t>>4&63]+r[t<<2&63]+"="));return s.join("")};for(var r=[],i=[],s="undefined"!=typeof Uint8Array?Uint8Array:Array,o="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",a=0,u=o.length;a0)throw new Error("Invalid string. Length must be a multiple of 4");var n=e.indexOf("=");return-1===n&&(n=t),[n,n===t?0:4-n%4]}function c(e,t,n){for(var i,s,o=[],a=t;a>18&63]+r[s>>12&63]+r[s>>6&63]+r[63&s]);return o.join("")}i["-".charCodeAt(0)]=62,i["_".charCodeAt(0)]=63},function(e,t,n){"use strict";var r=n(27);function i(e,t){e.emit("error",t)}e.exports={destroy:function(e,t){var n=this,s=this._readableState&&this._readableState.destroyed,o=this._writableState&&this._writableState.destroyed;return s||o?(t?t(e):!e||this._writableState&&this._writableState.errorEmitted||r.nextTick(i,this,e),this):(this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(e||null,(function(e){!t&&e?(r.nextTick(i,n,e),n._writableState&&(n._writableState.errorEmitted=!0)):t&&t(e)})),this)},undestroy:function(){this._readableState&&(this._readableState.destroyed=!1,this._readableState.reading=!1,this._readableState.ended=!1,this._readableState.endEmitted=!1),this._writableState&&(this._writableState.destroyed=!1,this._writableState.ended=!1,this._writableState.ending=!1,this._writableState.finished=!1,this._writableState.errorEmitted=!1)}}},function(e,t,n){(function(e){var r=void 0!==e&&e||"undefined"!=typeof self&&self||window,i=Function.prototype.apply;function s(e,t){this._id=e,this._clearFn=t}t.setTimeout=function(){return new s(i.call(setTimeout,r,arguments),clearTimeout)},t.setInterval=function(){return new s(i.call(setInterval,r,arguments),clearInterval)},t.clearTimeout=t.clearInterval=function(e){e&&e.close()},s.prototype.unref=s.prototype.ref=function(){},s.prototype.close=function(){this._clearFn.call(r,this._id)},t.enroll=function(e,t){clearTimeout(e._idleTimeoutId),e._idleTimeout=t},t.unenroll=function(e){clearTimeout(e._idleTimeoutId),e._idleTimeout=-1},t._unrefActive=t.active=function(e){clearTimeout(e._idleTimeoutId);var t=e._idleTimeout;t>=0&&(e._idleTimeoutId=setTimeout((function(){e._onTimeout&&e._onTimeout()}),t))},n(97),t.setImmediate="undefined"!=typeof self&&self.setImmediate||void 0!==e&&e.setImmediate||this&&this.setImmediate,t.clearImmediate="undefined"!=typeof self&&self.clearImmediate||void 0!==e&&e.clearImmediate||this&&this.clearImmediate}).call(this,n(6))},function(e,t,n){"use strict";var r=n(28).Buffer,i=r.isEncoding||function(e){switch((e=""+e)&&e.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1}};function s(e){var t;switch(this.encoding=function(e){var t=function(e){if(!e)return"utf8";for(var t;;)switch(e){case"utf8":case"utf-8":return"utf8";case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return"utf16le";case"latin1":case"binary":return"latin1";case"base64":case"ascii":case"hex":return e;default:if(t)return;e=(""+e).toLowerCase(),t=!0}}(e);if("string"!=typeof t&&(r.isEncoding===i||!i(e)))throw new Error("Unknown encoding: "+e);return t||e}(e),this.encoding){case"utf16le":this.text=u,this.end=l,t=4;break;case"utf8":this.fillLast=a,t=4;break;case"base64":this.text=c,this.end=h,t=3;break;default:return this.write=d,void(this.end=p)}this.lastNeed=0,this.lastTotal=0,this.lastChar=r.allocUnsafe(t)}function o(e){return e<=127?0:e>>5==6?2:e>>4==14?3:e>>3==30?4:e>>6==2?-1:-2}function a(e){var t=this.lastTotal-this.lastNeed,n=function(e,t,n){if(128!=(192&t[0]))return e.lastNeed=0,"�";if(e.lastNeed>1&&t.length>1){if(128!=(192&t[1]))return e.lastNeed=1,"�";if(e.lastNeed>2&&t.length>2&&128!=(192&t[2]))return e.lastNeed=2,"�"}}(this,e);return void 0!==n?n:this.lastNeed<=e.length?(e.copy(this.lastChar,t,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal)):(e.copy(this.lastChar,t,0,e.length),void(this.lastNeed-=e.length))}function u(e,t){if((e.length-t)%2==0){var n=e.toString("utf16le",t);if(n){var r=n.charCodeAt(n.length-1);if(r>=55296&&r<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1],n.slice(0,-1)}return n}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=e[e.length-1],e.toString("utf16le",t,e.length-1)}function l(e){var t=e&&e.length?this.write(e):"";if(this.lastNeed){var n=this.lastTotal-this.lastNeed;return t+this.lastChar.toString("utf16le",0,n)}return t}function c(e,t){var n=(e.length-t)%3;return 0===n?e.toString("base64",t):(this.lastNeed=3-n,this.lastTotal=3,1===n?this.lastChar[0]=e[e.length-1]:(this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1]),e.toString("base64",t,e.length-n))}function h(e){var t=e&&e.length?this.write(e):"";return this.lastNeed?t+this.lastChar.toString("base64",0,3-this.lastNeed):t}function d(e){return e.toString(this.encoding)}function p(e){return e&&e.length?this.write(e):""}t.StringDecoder=s,s.prototype.write=function(e){if(0===e.length)return"";var t,n;if(this.lastNeed){if(void 0===(t=this.fillLast(e)))return"";n=this.lastNeed,this.lastNeed=0}else n=0;return n=0)return i>0&&(e.lastNeed=i-1),i;if(--r=0)return i>0&&(e.lastNeed=i-2),i;if(--r=0)return i>0&&(2===i?i=0:e.lastNeed=i-3),i;return 0}(this,e,t);if(!this.lastNeed)return e.toString("utf8",t);this.lastTotal=n;var r=e.length-(n-this.lastNeed);return e.copy(this.lastChar,0,r),e.toString("utf8",t,r)},s.prototype.fillLast=function(e){if(this.lastNeed<=e.length)return e.copy(this.lastChar,this.lastTotal-this.lastNeed,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);e.copy(this.lastChar,this.lastTotal-this.lastNeed,0,e.length),this.lastNeed-=e.length}},function(e,t,n){"use strict";e.exports=o;var r=n(10),i=n(19);function s(e,t){var n=this._transformState;n.transforming=!1;var r=n.writecb;if(!r)return this.emit("error",new Error("write callback called multiple times"));n.writechunk=null,n.writecb=null,null!=t&&this.push(t),r(e);var i=this._readableState;i.reading=!1,(i.needReadable||i.length(Object.keys(t).forEach(n=>{e[n]=t[n]}),e),Object.create(null))}},function(e,t,n){var r=n(65).BrotliInput,i=n(65).BrotliOutput,s=n(114),o=n(66),a=n(67).HuffmanCode,u=n(67).BrotliBuildHuffmanTable,l=n(117),c=n(118),h=n(119),d=8,p=16,f=256,m=704,w=26,g=6,b=2,_=8,y=255,v=1080,x=18,E=new Uint8Array([1,2,3,4,0,5,17,6,16,7,8,9,10,11,12,13,14,15]),A=16,S=new Uint8Array([3,2,1,0,3,3,3,3,3,3,2,2,2,2,2,2]),k=new Int8Array([0,0,0,0,-1,1,-2,2,-3,3,-1,1,-2,2,-3,3]),T=new Uint16Array([256,402,436,468,500,534,566,598,630,662,694,726,758,790,822,854,886,920,952,984,1016,1048,1080]);function C(e){var t;return 0===e.readBits(1)?16:(t=e.readBits(3))>0?17+t:(t=e.readBits(3))>0?8+t:17}function D(e){if(e.readBits(1)){var t=e.readBits(3);return 0===t?1:e.readBits(t)+(1<1&&0===s)throw new Error("Invalid size byte");i.meta_block_length|=s<<8*r}}else for(r=0;r4&&0===o)throw new Error("Invalid size nibble");i.meta_block_length|=o<<4*r}return++i.meta_block_length,i.input_end||i.is_metadata||(i.is_uncompressed=e.readBits(1)),i}function I(e,t,n){var r;return n.fillBitWindow(),(r=e[t+=n.val_>>>n.bit_pos_&y].bits-_)>0&&(n.bit_pos_+=_,t+=e[t].value,t+=n.val_>>>n.bit_pos_&(1<>=1,++c;for(m=0;m0;++m){var v,A=E[m],S=0;r.fillBitWindow(),S+=r.val_>>>r.bit_pos_&15,r.bit_pos_+=y[S].bits,v=y[S].value,w[A]=v,0!==v&&(g-=32>>v,++b)}if(1!==b&&0!==g)throw new Error("[ReadHuffmanCode] invalid num_codes or space");!function(e,t,n,r){for(var i=0,s=d,o=0,l=0,c=32768,h=[],f=0;f<32;f++)h.push(new a(0,0));for(u(h,0,5,e,x);i0;){var m,w=0;if(r.readMoreInput(),r.fillBitWindow(),w+=r.val_>>>r.bit_pos_&31,r.bit_pos_+=h[w].bits,(m=255&h[w].value)>m);else{var g,b,_=m-14,y=0;if(m===p&&(y=s),l!==y&&(o=0,l=y),g=o,o>0&&(o-=2,o<<=_),i+(b=(o+=r.readBits(_)+3)-g)>t)throw new Error("[ReadHuffmanCodeLengths] symbol + repeat_delta > num_symbols");for(var v=0;v>>5]),this.htrees=new Uint32Array(t)}function U(e,t){var n,r,i={num_htrees:null,context_map:null},s=0;t.readMoreInput();var o=i.num_htrees=D(t)+1,u=i.context_map=new Uint8Array(e);if(o<=1)return i;for(t.readBits(1)&&(s=t.readBits(4)+1),n=[],r=0;r=e)throw new Error("[DecodeContextMap] i >= context_map_size");u[r]=0,++r}else u[r]=l-s,++r}return t.readBits(1)&&function(e,t){var n,r=new Uint8Array(256);for(n=0;n<256;++n)r[n]=n;for(n=0;n=e&&(a-=e),r[n]=a,i[u+(1&s[l])]=a,++s[l]}function j(e,t,n,r,i,o){var a,u=i+1,l=n&i,c=o.pos_&s.IBUF_MASK;if(t<8||o.bit_pos_+(t<<3)0;)o.readMoreInput(),r[l++]=o.readBits(8),l===u&&(e.write(r,u),l=0);else{if(o.bit_end_pos_<32)throw new Error("[CopyUncompressedBlockToOutput] br.bit_end_pos_ < 32");for(;o.bit_pos_<32;)r[l]=o.val_>>>o.bit_pos_,o.bit_pos_+=8,++l,--t;if(c+(a=o.bit_end_pos_-o.bit_pos_>>3)>s.IBUF_MASK){for(var h=s.IBUF_MASK+1-c,d=0;d=u){e.write(r,u),l-=u;for(d=0;d=u;){if(a=u-l,o.input_.read(r,l,a)t.buffer.length){var be=new Uint8Array(S+ie);be.set(t.buffer),t.buffer=be}if(k=ge.input_end,K=ge.is_uncompressed,ge.is_metadata)for(W(E);ie>0;--ie)E.readMoreInput(),E.readBits(8);else if(0!==ie)if(K)E.bit_pos_=E.bit_pos_+7&-8,j(t,ie,S,p,d,E),S+=ie;else{for(n=0;n<3;++n)ae[n]=D(E)+1,ae[n]>=2&&(N(ae[n]+2,y,n*v,E),N(w,x,n*v,E),se[n]=F(x,n*v,E),le[n]=1);for(E.readMoreInput(),J=(1<<(X=E.readBits(2)))-1,Z=(Y=A+(E.readBits(4)<0;){var ve,xe,Ee,Ae,Se,ke,Te,Ce,De,Re,Oe,Ie;for(E.readMoreInput(),0===se[1]&&(M(ae[1],y,1,oe,ue,le,E),se[1]=F(x,v,E),re=G[1].htrees[oe[1]]),--se[1],(xe=(ve=I(G[1].codes,re,E))>>6)>=2?(xe-=2,Te=-1):Te=0,Ee=c.kInsertRangeLut[xe]+(ve>>3&7),Ae=c.kCopyRangeLut[xe]+(7&ve),Se=c.kInsertLengthPrefixCode[Ee].offset+E.readBits(c.kInsertLengthPrefixCode[Ee].nbits),ke=c.kCopyLengthPrefixCode[Ae].offset+E.readBits(c.kCopyLengthPrefixCode[Ae].nbits),z=p[S-1&d],H=p[S-2&d],De=0;De4?3:ke-2))],(Te=I(G[2].codes,G[2].htrees[fe],E))>=Y)Ie=(Te-=Y)&J,Te=Y+((Ne=(2+(1&(Te>>=X))<<(Oe=1+(Te>>1)))-4)+E.readBits(Oe)<(T=S=o.minDictionaryWordLength&&ke<=o.maxDictionaryWordLength))throw new Error("Invalid backward reference. pos: "+S+" distance: "+Ce+" len: "+ke+" bytes left: "+ie);var Ne=o.offsetsByLength[ke],Fe=Ce-T-1,Pe=o.sizeBitsByLength[ke],Le=Fe>>Pe;if(Ne+=(Fe&(1<=_){t.write(p,u);for(var Ue=0;Ue0&&(R[3&L]=Ce,++L),ke>ie)throw new Error("Invalid backward reference. pos: "+S+" distance: "+Ce+" len: "+ke+" bytes left: "+ie);for(De=0;Dethis.buffer.length&&(n=this.buffer.length-this.pos);for(var r=0;rthis.buffer.length)throw new Error("Output buffer is not large enough");return this.buffer.set(e.subarray(0,t),this.pos),this.pos+=t,t},t.BrotliOutput=r},function(e,t,n){var r=n(115);t.init=function(){t.dictionary=r.init()},t.offsetsByLength=new Uint32Array([0,0,0,0,0,4096,9216,21504,35840,44032,53248,63488,74752,87040,93696,100864,104704,106752,108928,113536,115968,118528,119872,121280,122016]),t.sizeBitsByLength=new Uint8Array([0,0,0,0,10,10,11,11,10,10,10,10,10,9,9,8,7,7,8,7,7,6,6,5,5]),t.minDictionaryWordLength=4,t.maxDictionaryWordLength=24},function(e,t){function n(e,t){this.bits=e,this.value=t}t.HuffmanCode=n;var r=15;function i(e,t){for(var n=1<>=1;return(e&n-1)+n}function s(e,t,r,i,s){do{e[t+(i-=r)]=new n(s.bits,s.value)}while(i>0)}function o(e,t,n){for(var i=1<0;--v[c])s(e,t+d,p,g,new n(255&c,65535&_[h++])),d=i(d,c);for(m=b-1,f=-1,c=a+1,p=2;c<=r;++c,p<<=1)for(;v[c]>0;--v[c])(d&m)!==f&&(t+=g,b+=g=1<<(w=o(v,c,a)),e[y+(f=d&m)]=new n(w+a&255,t-y-f&65535)),s(e,t+(d>>a),p,g,new n(c-a&255,65535&_[h++])),d=i(d,c);return b}},function(e,t,n){"use strict";e.exports=function(e,t,n,r){for(var i=65535&e|0,s=e>>>16&65535|0,o=0;0!==n;){n-=o=n>2e3?2e3:n;do{s=s+(i=i+t[r++]|0)|0}while(--o);i%=65521,s%=65521}return i|s<<16|0}},function(e,t,n){"use strict";var r=function(){for(var e,t=[],n=0;n<256;n++){e=n;for(var r=0;r<8;r++)e=1&e?3988292384^e>>>1:e>>>1;t[n]=e}return t}();e.exports=function(e,t,n,i){var s=r,o=i+n;e^=-1;for(var a=i;a>>8^s[255&(e^t[a])];return-1^e}},function(e,t,n){"use strict";var r=n(8),i=!0,s=!0;try{String.fromCharCode.apply(null,[0])}catch(e){i=!1}try{String.fromCharCode.apply(null,new Uint8Array(1))}catch(e){s=!1}for(var o=new r.Buf8(256),a=0;a<256;a++)o[a]=a>=252?6:a>=248?5:a>=240?4:a>=224?3:a>=192?2:1;function u(e,t){if(t<65534&&(e.subarray&&s||!e.subarray&&i))return String.fromCharCode.apply(null,r.shrinkBuf(e,t));for(var n="",o=0;o>>6,t[o++]=128|63&n):n<65536?(t[o++]=224|n>>>12,t[o++]=128|n>>>6&63,t[o++]=128|63&n):(t[o++]=240|n>>>18,t[o++]=128|n>>>12&63,t[o++]=128|n>>>6&63,t[o++]=128|63&n);return t},t.buf2binstring=function(e){return u(e,e.length)},t.binstring2buf=function(e){for(var t=new r.Buf8(e.length),n=0,i=t.length;n4)l[r++]=65533,n+=s-1;else{for(i&=2===s?31:3===s?15:7;s>1&&n1?l[r++]=65533:i<65536?l[r++]=i:(i-=65536,l[r++]=55296|i>>10&1023,l[r++]=56320|1023&i)}return u(l,r)},t.utf8border=function(e,t){var n;for((t=t||e.length)>e.length&&(t=e.length),n=t-1;n>=0&&128==(192&e[n]);)n--;return n<0?t:0===n?t:n+o[e[n]]>t?n:t}},function(e,t,n){"use strict";e.exports=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}},function(e,t,n){"use strict";e.exports={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8}},function(e,t,n){"use strict";e.exports=function(e,t,n,r){for(var i=65535&e|0,s=e>>>16&65535|0,o=0;0!==n;){n-=o=n>2e3?2e3:n;do{s=s+(i=i+t[r++]|0)|0}while(--o);i%=65521,s%=65521}return i|s<<16|0}},function(e,t,n){"use strict";var r=function(){for(var e,t=[],n=0;n<256;n++){e=n;for(var r=0;r<8;r++)e=1&e?3988292384^e>>>1:e>>>1;t[n]=e}return t}();e.exports=function(e,t,n,i){var s=r,o=i+n;e^=-1;for(var a=i;a>>8^s[255&(e^t[a])];return-1^e}},function(e,t,n){"use strict";var r=n(11),i=!0,s=!0;try{String.fromCharCode.apply(null,[0])}catch(e){i=!1}try{String.fromCharCode.apply(null,new Uint8Array(1))}catch(e){s=!1}for(var o=new r.Buf8(256),a=0;a<256;a++)o[a]=a>=252?6:a>=248?5:a>=240?4:a>=224?3:a>=192?2:1;function u(e,t){if(t<65534&&(e.subarray&&s||!e.subarray&&i))return String.fromCharCode.apply(null,r.shrinkBuf(e,t));for(var n="",o=0;o>>6,t[o++]=128|63&n):n<65536?(t[o++]=224|n>>>12,t[o++]=128|n>>>6&63,t[o++]=128|63&n):(t[o++]=240|n>>>18,t[o++]=128|n>>>12&63,t[o++]=128|n>>>6&63,t[o++]=128|63&n);return t},t.buf2binstring=function(e){return u(e,e.length)},t.binstring2buf=function(e){for(var t=new r.Buf8(e.length),n=0,i=t.length;n4)l[r++]=65533,n+=s-1;else{for(i&=2===s?31:3===s?15:7;s>1&&n1?l[r++]=65533:i<65536?l[r++]=i:(i-=65536,l[r++]=55296|i>>10&1023,l[r++]=56320|1023&i)}return u(l,r)},t.utf8border=function(e,t){var n;for((t=t||e.length)>e.length&&(t=e.length),n=t-1;n>=0&&128==(192&e[n]);)n--;return n<0?t:0===n?t:n+o[e[n]]>t?n:t}},function(e,t,n){"use strict";e.exports=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}},function(e,t,n){"use strict";var r=n(15);e.exports=new r({include:[n(78)]})},function(e,t,n){"use strict";var r=n(15);e.exports=new r({include:[n(45)],implicit:[n(150),n(151),n(152),n(153)]})},function(e,t,n){"use strict";t.Commented=n(170),t.Diagnose=n(179),t.Decoder=n(32),t.Encoder=n(80),t.Simple=n(24),t.Tagged=n(49),t.Map=n(180),t.comment=t.Commented.comment,t.decodeAll=t.Decoder.decodeAll,t.decodeFirst=t.Decoder.decodeFirst,t.decodeAllSync=t.Decoder.decodeAllSync,t.decodeFirstSync=t.Decoder.decodeFirstSync,t.diagnose=t.Diagnose.diagnose,t.encode=t.Encoder.encode,t.encodeCanonical=t.Encoder.encodeCanonical,t.encodeOne=t.Encoder.encodeOne,t.encodeAsync=t.Encoder.encodeAsync,t.decode=t.Decoder.decodeFirstSync,t.leveldb={decode:t.Decoder.decodeAllSync,encode:t.Encoder.encode,buffer:!0,name:"cbor"},t.hasBigInt=n(16).hasBigInt},function(e,t,n){"use strict";(function(t){const r=n(4),i=n(50),s=n(17).BigNumber,o=n(25),a=(n(49),n(24),n(16)),u=n(12),l=u.MT,c=u.NUMBYTES,h=u.SHIFT32,d=u.SYMS,p=u.TAG,f=u.MT.SIMPLE_FLOAT<<5|u.NUMBYTES.TWO,m=u.MT.SIMPLE_FLOAT<<5|u.NUMBYTES.FOUR,w=u.MT.SIMPLE_FLOAT<<5|u.NUMBYTES.EIGHT,g=u.MT.SIMPLE_FLOAT<<5|u.SIMPLE.TRUE,b=u.MT.SIMPLE_FLOAT<<5|u.SIMPLE.FALSE,_=u.MT.SIMPLE_FLOAT<<5|u.SIMPLE.UNDEFINED,y=u.MT.SIMPLE_FLOAT<<5|u.SIMPLE.NULL,v=new s("0x20000000000000"),x=t.from("f97e00","hex"),E=t.from("f9fc00","hex"),A=t.from("f97c00","hex"),S=t.from("f98000","hex"),k=Symbol("CBOR_LOOP_DETECT");class T extends r.Transform{constructor(e){const n=Object.assign({},e,{readableObjectMode:!1,writableObjectMode:!0});super(n),this.canonical=n.canonical,this.encodeUndefined=n.encodeUndefined,this.disallowUndefinedKeys=!!n.disallowUndefinedKeys,this.dateType=null!=n.dateType?n.dateType.toLowerCase():"number","symbol"==typeof n.detectLoops?this.detectLoops=n.detectLoops:this.detectLoops=n.detectLoops?Symbol("CBOR_DETECT"):null,this.semanticTypes=[Array,this._pushArray,Date,this._pushDate,t,this._pushBuffer,Map,this._pushMap,o,this._pushNoFilter,RegExp,this._pushRegexp,Set,this._pushSet,s,this._pushBigNumber,ArrayBuffer,this._pushUint8Array,Uint8ClampedArray,this._pushUint8Array,Uint8Array,this._pushUint8Array,Uint16Array,this._pushArray,Uint32Array,this._pushArray,Int8Array,this._pushArray,Int16Array,this._pushArray,Int32Array,this._pushArray,Float32Array,this._pushFloat32Array,Float64Array,this._pushFloat64Array],i.Url&&this.semanticTypes.push(i.Url,this._pushUrl),i.URL&&this.semanticTypes.push(i.URL,this._pushURL);const r=n.genTypes||[];for(let e=0,t=r.length;e{r.pushAny(e);const n=i.read();r.pushAny(t);const s=i.read();return n.compare(s)});for(const[t,r]of n){if(e.disallowUndefinedKeys&&void 0===t)throw new Error("Invalid Map key: undefined");if(!e.pushAny(t)||!e.pushAny(r))return!1}}else for(const[n,r]of t){if(e.disallowUndefinedKeys&&void 0===n)throw new Error("Invalid Map key: undefined");if(!e.pushAny(n)||!e.pushAny(r))return!1}return!0}_pushUint8Array(e,n){return e._pushBuffer(e,t.from(n))}_pushFloat32Array(e,t){const n=t.length;if(!e._pushInt(n,l.ARRAY))return!1;for(let r=0;r{const n=r[e]||(r[e]=T.encode(e)),i=r[t]||(r[t]=T.encode(t));return n.compare(i)}),!this._pushInt(n.length,l.MAP))return!1;let i;for(let t=0,s=n.length;t{const s=[],o=new T(n);o.on("data",e=>s.push(e)),o.on("error",i),o.on("finish",()=>r(t.concat(s))),o.pushAny(e),o.end()})}}e.exports=T}).call(this,n(3).Buffer)},function(e,t,n){"use strict";const r=n(51),{escapeString:i}=n(111);e.exports=class extends r{constructor(){super({sourceCodeLocationInfo:!0}),this.posTracker=this.locInfoMixin.posTracker}_transformChunk(e){super._transformChunk(e)}_getRawHtml(e){const t=this.posTracker.droppedBufferSize,n=e.startOffset-t,r=e.endOffset-t;return this.tokenizer.preprocessor.html.slice(n,r)}_handleToken(e){super._handleToken(e)||this.emitRaw(this._getRawHtml(e.location)),this.parserFeedbackSimulator.skipNextNewLine=!1}_emitToken(e,t){this.emit(e,t,this._getRawHtml(t.sourceCodeLocation))}emitDoctype(e){let t=`",this.push(t)}emitStartTag(e){let t=`<${e.tagName}`;const n=e.attrs;for(let e=0;e":">",this.push(t)}emitEndTag(e){this.push(``)}emitText({text:e}){this.push(i(e,!1))}emitComment(e){this.push(`\x3c!--${e.text}--\x3e`)}emitRaw(e){this.push(e)}}},function(e,t,n){e.exports=n(64).BrotliDecompressBuffer},function(e,t,n){"use strict";var r=n(128),i=n(11),s=n(75),o=n(131),a=n(44),u=n(76),l=n(132),c=Object.prototype.toString;function h(e){if(!(this instanceof h))return new h(e);this.options=i.assign({chunkSize:16384,windowBits:0,to:""},e||{});var t=this.options;t.raw&&t.windowBits>=0&&t.windowBits<16&&(t.windowBits=-t.windowBits,0===t.windowBits&&(t.windowBits=-15)),!(t.windowBits>=0&&t.windowBits<16)||e&&e.windowBits||(t.windowBits+=32),t.windowBits>15&&t.windowBits<48&&0==(15&t.windowBits)&&(t.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new u,this.strm.avail_out=0;var n=r.inflateInit2(this.strm,t.windowBits);if(n!==o.Z_OK)throw new Error(a[n]);if(this.header=new l,r.inflateGetHeader(this.strm,this.header),t.dictionary&&("string"==typeof t.dictionary?t.dictionary=s.string2buf(t.dictionary):"[object ArrayBuffer]"===c.call(t.dictionary)&&(t.dictionary=new Uint8Array(t.dictionary)),t.raw&&(n=r.inflateSetDictionary(this.strm,t.dictionary))!==o.Z_OK))throw new Error(a[n])}function d(e,t){var n=new h(t);if(n.push(e,!0),n.err)throw n.msg||a[n.err];return n.result}h.prototype.push=function(e,t){var n,a,u,l,h,d=this.strm,p=this.options.chunkSize,f=this.options.dictionary,m=!1;if(this.ended)return!1;a=t===~~t?t:!0===t?o.Z_FINISH:o.Z_NO_FLUSH,"string"==typeof e?d.input=s.binstring2buf(e):"[object ArrayBuffer]"===c.call(e)?d.input=new Uint8Array(e):d.input=e,d.next_in=0,d.avail_in=d.input.length;do{if(0===d.avail_out&&(d.output=new i.Buf8(p),d.next_out=0,d.avail_out=p),(n=r.inflate(d,o.Z_NO_FLUSH))===o.Z_NEED_DICT&&f&&(n=r.inflateSetDictionary(this.strm,f)),n===o.Z_BUF_ERROR&&!0===m&&(n=o.Z_OK,m=!1),n!==o.Z_STREAM_END&&n!==o.Z_OK)return this.onEnd(n),this.ended=!0,!1;d.next_out&&(0!==d.avail_out&&n!==o.Z_STREAM_END&&(0!==d.avail_in||a!==o.Z_FINISH&&a!==o.Z_SYNC_FLUSH)||("string"===this.options.to?(u=s.utf8border(d.output,d.next_out),l=d.next_out-u,h=s.buf2string(d.output,u),d.next_out=l,d.avail_out=p-l,l&&i.arraySet(d.output,d.output,u,l,0),this.onData(h)):this.onData(i.shrinkBuf(d.output,d.next_out)))),0===d.avail_in&&0===d.avail_out&&(m=!0)}while((d.avail_in>0||0===d.avail_out)&&n!==o.Z_STREAM_END);return n===o.Z_STREAM_END&&(a=o.Z_FINISH),a===o.Z_FINISH?(n=r.inflateEnd(this.strm),this.onEnd(n),this.ended=!0,n===o.Z_OK):a!==o.Z_SYNC_FLUSH||(this.onEnd(o.Z_OK),d.avail_out=0,!0)},h.prototype.onData=function(e){this.chunks.push(e)},h.prototype.onEnd=function(e){e===o.Z_OK&&("string"===this.options.to?this.result=this.chunks.join(""):this.result=i.flattenChunks(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg},t.Inflate=h,t.inflate=d,t.inflateRaw=function(e,t){return(t=t||{}).raw=!0,d(e,t)},t.ungzip=d},function(e,t,n){"use strict";!function(){var t,r,i,s=0,o=[];for(r=0;r<256;r++)o[r]=(r+256).toString(16).substr(1);function a(){var e,n=(e=16,(!t||s+e>u.BUFFER_SIZE)&&(s=0,t=u.randomBytes(u.BUFFER_SIZE)),t.slice(s,s+=e));return n[6]=15&n[6]|64,n[8]=63&n[8]|128,n}function u(){var e=a();return o[e[0]]+o[e[1]]+o[e[2]]+o[e[3]]+"-"+o[e[4]]+o[e[5]]+"-"+o[e[6]]+o[e[7]]+"-"+o[e[8]]+o[e[9]]+"-"+o[e[10]]+o[e[11]]+o[e[12]]+o[e[13]]+o[e[14]]+o[e[15]]}u.BUFFER_SIZE=4096,u.bin=a,u.clearBuffer=function(){t=null,s=0},u.test=function(e){return"string"==typeof e&&/^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/.test(e)},"undefined"!=typeof crypto?i=crypto:"undefined"!=typeof window&&void 0!==window.msCrypto&&(i=window.msCrypto),i=i||n(133),e.exports=u,u.randomBytes=function(){if(i){if(i.randomBytes)return i.randomBytes;if(i.getRandomValues)return function(e){var t=new Uint8Array(e);return i.getRandomValues(t),t}}return function(e){var t,n=[];for(t=0;t10&&(t="..."+t.substr(-10));var n=new Error("Decoded data is not valid UTF-8. Maybe try base32.decode.asBytes()? Partial data after reading "+e+" bytes: "+t+" <-");throw n.position=e,n},d=function(e){if(!/^[A-Z2-7=]+$/.test(e))throw new Error("Invalid base32 characters");for(var t,n,r,i,s,o,a,u,c=[],h=0,d=(e=e.replace(/=/g,"")).length,p=0,f=d>>3<<3;p>>2),c[h++]=255&(n<<6|r<<1|i>>>4),c[h++]=255&(i<<4|s>>>1),c[h++]=255&(s<<7|o<<2|a>>>3),c[h++]=255&(a<<5|u);var m=d-f;return 2===m?(t=l[e.charAt(p++)],n=l[e.charAt(p++)],c[h++]=255&(t<<3|n>>>2)):4===m?(t=l[e.charAt(p++)],n=l[e.charAt(p++)],r=l[e.charAt(p++)],i=l[e.charAt(p++)],c[h++]=255&(t<<3|n>>>2),c[h++]=255&(n<<6|r<<1|i>>>4)):5===m?(t=l[e.charAt(p++)],n=l[e.charAt(p++)],r=l[e.charAt(p++)],i=l[e.charAt(p++)],s=l[e.charAt(p++)],c[h++]=255&(t<<3|n>>>2),c[h++]=255&(n<<6|r<<1|i>>>4),c[h++]=255&(i<<4|s>>>1)):7===m&&(t=l[e.charAt(p++)],n=l[e.charAt(p++)],r=l[e.charAt(p++)],i=l[e.charAt(p++)],s=l[e.charAt(p++)],o=l[e.charAt(p++)],a=l[e.charAt(p++)],c[h++]=255&(t<<3|n>>>2),c[h++]=255&(n<<6|r<<1|i>>>4),c[h++]=255&(i<<4|s>>>1),c[h++]=255&(s<<7|o<<2|a>>>3)),c},p=function(e,t){if(!t)return function(e){for(var t,n,r="",i=e.length,s=0,o=0;s191&&t<=223?(n=31&t,o=1):t<=239?(n=15&t,o=2):t<=247?(n=7&t,o=3):h(s,r);for(var a=0;a191)&&h(s,r),n<<=6,n+=63&t;n>=55296&&n<=57343&&h(s,r),n>1114111&&h(s,r),n<=65535?r+=String.fromCharCode(n):(n-=65536,r+=String.fromCharCode(55296+(n>>10)),r+=String.fromCharCode(56320+(1023&n)))}return r}(d(e));if(!/^[A-Z2-7=]+$/.test(e))throw new Error("Invalid base32 characters");var n,r,i,s,o,a,u,c,p="",f=e.indexOf("=");-1===f&&(f=e.length);for(var m=0,w=f>>3<<3;m>>2))+String.fromCharCode(255&(r<<6|i<<1|s>>>4))+String.fromCharCode(255&(s<<4|o>>>1))+String.fromCharCode(255&(o<<7|a<<2|u>>>3))+String.fromCharCode(255&(u<<5|c));var g=f-w;return 2===g?(n=l[e.charAt(m++)],r=l[e.charAt(m++)],p+=String.fromCharCode(255&(n<<3|r>>>2))):4===g?(n=l[e.charAt(m++)],r=l[e.charAt(m++)],i=l[e.charAt(m++)],s=l[e.charAt(m++)],p+=String.fromCharCode(255&(n<<3|r>>>2))+String.fromCharCode(255&(r<<6|i<<1|s>>>4))):5===g?(n=l[e.charAt(m++)],r=l[e.charAt(m++)],i=l[e.charAt(m++)],s=l[e.charAt(m++)],o=l[e.charAt(m++)],p+=String.fromCharCode(255&(n<<3|r>>>2))+String.fromCharCode(255&(r<<6|i<<1|s>>>4))+String.fromCharCode(255&(s<<4|o>>>1))):7===g&&(n=l[e.charAt(m++)],r=l[e.charAt(m++)],i=l[e.charAt(m++)],s=l[e.charAt(m++)],o=l[e.charAt(m++)],a=l[e.charAt(m++)],u=l[e.charAt(m++)],p+=String.fromCharCode(255&(n<<3|r>>>2))+String.fromCharCode(255&(r<<6|i<<1|s>>>4))+String.fromCharCode(255&(s<<4|o>>>1))+String.fromCharCode(255&(o<<7|a<<2|u>>>3))),p},f={encode:function(e,t){var n="string"!=typeof e;return n&&e.constructor===ArrayBuffer&&(e=new Uint8Array(e)),n?function(e){for(var t,n,r,i,s,o="",a=e.length,l=0,c=5*parseInt(a/5);l>>3]+u[31&(t<<2|n>>>6)]+u[n>>>1&31]+u[31&(n<<4|r>>>4)]+u[31&(r<<1|i>>>7)]+u[i>>>2&31]+u[31&(i<<3|s>>>5)]+u[31&s];var h=a-c;return 1===h?(t=e[l],o+=u[t>>>3]+u[t<<2&31]+"======"):2===h?(t=e[l++],n=e[l],o+=u[t>>>3]+u[31&(t<<2|n>>>6)]+u[n>>>1&31]+u[n<<4&31]+"===="):3===h?(t=e[l++],n=e[l++],r=e[l],o+=u[t>>>3]+u[31&(t<<2|n>>>6)]+u[n>>>1&31]+u[31&(n<<4|r>>>4)]+u[r<<1&31]+"==="):4===h&&(t=e[l++],n=e[l++],r=e[l++],i=e[l],o+=u[t>>>3]+u[31&(t<<2|n>>>6)]+u[n>>>1&31]+u[31&(n<<4|r>>>4)]+u[31&(r<<1|i>>>7)]+u[i>>>2&31]+u[i<<3&31]+"="),o}(e):t?function(e){for(var t,n,r,i,s,o="",a=e.length,l=0,c=5*parseInt(a/5);l>>3]+u[31&(t<<2|n>>>6)]+u[n>>>1&31]+u[31&(n<<4|r>>>4)]+u[31&(r<<1|i>>>7)]+u[i>>>2&31]+u[31&(i<<3|s>>>5)]+u[31&s];var h=a-c;return 1===h?(t=e.charCodeAt(l),o+=u[t>>>3]+u[t<<2&31]+"======"):2===h?(t=e.charCodeAt(l++),n=e.charCodeAt(l),o+=u[t>>>3]+u[31&(t<<2|n>>>6)]+u[n>>>1&31]+u[n<<4&31]+"===="):3===h?(t=e.charCodeAt(l++),n=e.charCodeAt(l++),r=e.charCodeAt(l),o+=u[t>>>3]+u[31&(t<<2|n>>>6)]+u[n>>>1&31]+u[31&(n<<4|r>>>4)]+u[r<<1&31]+"==="):4===h&&(t=e.charCodeAt(l++),n=e.charCodeAt(l++),r=e.charCodeAt(l++),i=e.charCodeAt(l),o+=u[t>>>3]+u[31&(t<<2|n>>>6)]+u[n>>>1&31]+u[31&(n<<4|r>>>4)]+u[31&(r<<1|i>>>7)]+u[i>>>2&31]+u[i<<3&31]+"="),o}(e):function(e){var t,n,r,i,s,o,a,l=!1,h="",d=0,p=0,f=e.length;do{for(c[0]=c[5],c[1]=c[6],c[2]=c[7],a=p;d>6,c[a++]=128|63&o):o<55296||o>=57344?(c[a++]=224|o>>12,c[a++]=128|o>>6&63,c[a++]=128|63&o):(o=65536+((1023&o)<<10|1023&e.charCodeAt(++d)),c[a++]=240|o>>18,c[a++]=128|o>>12&63,c[a++]=128|o>>6&63,c[a++]=128|63&o);a-p,p=a-5,d===f&&++d,d>f&&a<6&&(l=!0),t=c[0],a>4?(n=c[1],r=c[2],i=c[3],s=c[4],h+=u[t>>>3]+u[31&(t<<2|n>>>6)]+u[n>>>1&31]+u[31&(n<<4|r>>>4)]+u[31&(r<<1|i>>>7)]+u[i>>>2&31]+u[31&(i<<3|s>>>5)]+u[31&s]):1===a?h+=u[t>>>3]+u[t<<2&31]+"======":2===a?(n=c[1],h+=u[t>>>3]+u[31&(t<<2|n>>>6)]+u[n>>>1&31]+u[n<<4&31]+"===="):3===a?(n=c[1],r=c[2],h+=u[t>>>3]+u[31&(t<<2|n>>>6)]+u[n>>>1&31]+u[31&(n<<4|r>>>4)]+u[r<<1&31]+"==="):(n=c[1],r=c[2],i=c[3],h+=u[t>>>3]+u[31&(t<<2|n>>>6)]+u[n>>>1&31]+u[31&(n<<4|r>>>4)]+u[31&(r<<1|i>>>7)]+u[i>>>2&31]+u[i<<3&31]+"=")}while(!l);return h}(e)},decode:p};p.asBytes=d,o?e.exports=f:(s.base32=f,a&&(void 0===(i=function(){return f}.call(f,n,f,e))||(e.exports=i)))}()}).call(this,n(13),n(6))},function(e,t,n){"use strict";var r=n(135),i=n(11),s=n(75),o=n(44),a=n(76),u=Object.prototype.toString,l=0,c=-1,h=0,d=8;function p(e){if(!(this instanceof p))return new p(e);this.options=i.assign({level:c,method:d,chunkSize:16384,windowBits:15,memLevel:8,strategy:h,to:""},e||{});var t=this.options;t.raw&&t.windowBits>0?t.windowBits=-t.windowBits:t.gzip&&t.windowBits>0&&t.windowBits<16&&(t.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new a,this.strm.avail_out=0;var n=r.deflateInit2(this.strm,t.level,t.method,t.windowBits,t.memLevel,t.strategy);if(n!==l)throw new Error(o[n]);if(t.header&&r.deflateSetHeader(this.strm,t.header),t.dictionary){var f;if(f="string"==typeof t.dictionary?s.string2buf(t.dictionary):"[object ArrayBuffer]"===u.call(t.dictionary)?new Uint8Array(t.dictionary):t.dictionary,(n=r.deflateSetDictionary(this.strm,f))!==l)throw new Error(o[n]);this._dict_set=!0}}function f(e,t){var n=new p(t);if(n.push(e,!0),n.err)throw n.msg||o[n.err];return n.result}p.prototype.push=function(e,t){var n,o,a=this.strm,c=this.options.chunkSize;if(this.ended)return!1;o=t===~~t?t:!0===t?4:0,"string"==typeof e?a.input=s.string2buf(e):"[object ArrayBuffer]"===u.call(e)?a.input=new Uint8Array(e):a.input=e,a.next_in=0,a.avail_in=a.input.length;do{if(0===a.avail_out&&(a.output=new i.Buf8(c),a.next_out=0,a.avail_out=c),1!==(n=r.deflate(a,o))&&n!==l)return this.onEnd(n),this.ended=!0,!1;0!==a.avail_out&&(0!==a.avail_in||4!==o&&2!==o)||("string"===this.options.to?this.onData(s.buf2binstring(i.shrinkBuf(a.output,a.next_out))):this.onData(i.shrinkBuf(a.output,a.next_out)))}while((a.avail_in>0||0===a.avail_out)&&1!==n);return 4===o?(n=r.deflateEnd(this.strm),this.onEnd(n),this.ended=!0,n===l):2!==o||(this.onEnd(l),a.avail_out=0,!0)},p.prototype.onData=function(e){this.chunks.push(e)},p.prototype.onEnd=function(e){e===l&&("string"===this.options.to?this.result=this.chunks.join(""):this.result=i.flattenChunks(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg},t.Deflate=p,t.deflate=f,t.deflateRaw=function(e,t){return(t=t||{}).raw=!0,f(e,t)},t.gzip=function(e,t){return(t=t||{}).gzip=!0,f(e,t)}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0,n(143);var r=/\\(u\{([0-9A-Fa-f]+)\}|u([0-9A-Fa-f]{4})|x([0-9A-Fa-f]{2})|([1-7][0-7]{0,2}|[0-7]{2,3})|(['"tbrnfv0\\]))|\\U([0-9A-Fa-f]{8})/g,i={0:"\0",b:"\b",f:"\f",n:"\n",r:"\r",t:"\t",v:"\v","'":"'",'"':'"',"\\":"\\"},s=function(e){return String.fromCodePoint(parseInt(e,16))};t.default=function(e){return e.replace(r,(function(e,t,n,r,o,a,u,l){return void 0!==n?s(n):void 0!==r?s(r):void 0!==o?s(o):void 0!==a?(c=a,String.fromCodePoint(parseInt(c,8))):void 0!==l?s(l):i[u];var c}))},e.exports=t.default},function(e,t,n){"use strict";e.exports=function(){function e(e,t,n,r,i){return en?n+1:e+1:r===i?t:t+1}return function(t,n){if(t===n)return 0;if(t.length>n.length){var r=t;t=n,n=r}for(var i=t.length,s=n.length;i>0&&t.charCodeAt(i-1)===n.charCodeAt(s-1);)i--,s--;for(var o=0;o>2,a=(3&t)<<4|n>>4,u=1>6:64,l=2>4,n=(15&o)<<4|(a=s.indexOf(e.charAt(l++)))>>2,r=(3&a)<<6|(u=s.indexOf(e.charAt(l++))),d[c++]=t,64!==a&&(d[c++]=n),64!==u&&(d[c++]=r);return d}},{"./support":30,"./utils":32}],2:[function(e,t,n){"use strict";var r=e("./external"),i=e("./stream/DataWorker"),s=e("./stream/DataLengthProbe"),o=e("./stream/Crc32Probe");function a(e,t,n,r,i){this.compressedSize=e,this.uncompressedSize=t,this.crc32=n,this.compression=r,this.compressedContent=i}s=e("./stream/DataLengthProbe"),a.prototype={getContentWorker:function(){var e=new i(r.Promise.resolve(this.compressedContent)).pipe(this.compression.uncompressWorker()).pipe(new s("data_length")),t=this;return e.on("end",(function(){if(this.streamInfo.data_length!==t.uncompressedSize)throw new Error("Bug : uncompressed data size mismatch")})),e},getCompressedWorker:function(){return new i(r.Promise.resolve(this.compressedContent)).withStreamInfo("compressedSize",this.compressedSize).withStreamInfo("uncompressedSize",this.uncompressedSize).withStreamInfo("crc32",this.crc32).withStreamInfo("compression",this.compression)}},a.createWorkerFrom=function(e,t,n){return e.pipe(new o).pipe(new s("uncompressedSize")).pipe(t.compressWorker(n)).pipe(new s("compressedSize")).withStreamInfo("compression",t)},t.exports=a},{"./external":6,"./stream/Crc32Probe":25,"./stream/DataLengthProbe":26,"./stream/DataWorker":27}],3:[function(e,t,n){"use strict";var r=e("./stream/GenericWorker");n.STORE={magic:"\0\0",compressWorker:function(e){return new r("STORE compression")},uncompressWorker:function(){return new r("STORE decompression")}},n.DEFLATE=e("./flate")},{"./flate":7,"./stream/GenericWorker":28}],4:[function(e,t,n){"use strict";var r=e("./utils"),i=function(){for(var e,t=[],n=0;n<256;n++){e=n;for(var r=0;r<8;r++)e=1&e?3988292384^e>>>1:e>>>1;t[n]=e}return t}();t.exports=function(e,t){return void 0!==e&&e.length?"string"!==r.getTypeOf(e)?function(e,t,n,r){var s=i,o=0+n;e^=-1;for(var a=0;a>>8^s[255&(e^t[a])];return-1^e}(0|t,e,e.length):function(e,t,n,r){var s=i,o=0+n;e^=-1;for(var a=0;a>>8^s[255&(e^t.charCodeAt(a))];return-1^e}(0|t,e,e.length):0}},{"./utils":32}],5:[function(e,t,n){"use strict";n.base64=!1,n.binary=!1,n.dir=!1,n.createFolders=!0,n.date=null,n.compression=null,n.compressionOptions=null,n.comment=null,n.unixPermissions=null,n.dosPermissions=null},{}],6:[function(e,t,n){"use strict";var r;r="undefined"!=typeof Promise?Promise:e("lie"),t.exports={Promise:r}},{lie:37}],7:[function(e,t,n){"use strict";var r="undefined"!=typeof Uint8Array&&"undefined"!=typeof Uint16Array&&"undefined"!=typeof Uint32Array,i=e("pako"),s=e("./utils"),o=e("./stream/GenericWorker"),a=r?"uint8array":"array";function u(e,t){o.call(this,"FlateWorker/"+e),this._pako=null,this._pakoAction=e,this._pakoOptions=t,this.meta={}}n.magic="\b\0",s.inherits(u,o),u.prototype.processChunk=function(e){this.meta=e.meta,null===this._pako&&this._createPako(),this._pako.push(s.transformTo(a,e.data),!1)},u.prototype.flush=function(){o.prototype.flush.call(this),null===this._pako&&this._createPako(),this._pako.push([],!0)},u.prototype.cleanUp=function(){o.prototype.cleanUp.call(this),this._pako=null},u.prototype._createPako=function(){this._pako=new i[this._pakoAction]({raw:!0,level:this._pakoOptions.level||-1});var e=this;this._pako.onData=function(t){e.push({data:t,meta:e.meta})}},n.compressWorker=function(e){return new u("Deflate",e)},n.uncompressWorker=function(){return new u("Inflate",{})}},{"./stream/GenericWorker":28,"./utils":32,pako:38}],8:[function(e,t,n){"use strict";function r(e,t){var n,r="";for(n=0;n>>=8;return r}function i(e,t,n,i,o,c){var h,d,p=e.file,f=e.compression,m=c!==a.utf8encode,w=s.transformTo("string",c(p.name)),g=s.transformTo("string",a.utf8encode(p.name)),b=p.comment,_=s.transformTo("string",c(b)),y=s.transformTo("string",a.utf8encode(b)),v=g.length!==p.name.length,x=y.length!==b.length,E="",A="",S="",k=p.dir,T=p.date,C={crc32:0,compressedSize:0,uncompressedSize:0};t&&!n||(C.crc32=e.crc32,C.compressedSize=e.compressedSize,C.uncompressedSize=e.uncompressedSize);var D=0;t&&(D|=8),m||!v&&!x||(D|=2048);var R=0,O=0;k&&(R|=16),"UNIX"===o?(O=798,R|=function(e,t){var n=e;return e||(n=t?16893:33204),(65535&n)<<16}(p.unixPermissions,k)):(O=20,R|=function(e){return 63&(e||0)}(p.dosPermissions)),h=T.getUTCHours(),h<<=6,h|=T.getUTCMinutes(),h<<=5,h|=T.getUTCSeconds()/2,d=T.getUTCFullYear()-1980,d<<=4,d|=T.getUTCMonth()+1,d<<=5,d|=T.getUTCDate(),v&&(A=r(1,1)+r(u(w),4)+g,E+="up"+r(A.length,2)+A),x&&(S=r(1,1)+r(u(_),4)+y,E+="uc"+r(S.length,2)+S);var I="";return I+="\n\0",I+=r(D,2),I+=f.magic,I+=r(h,2),I+=r(d,2),I+=r(C.crc32,4),I+=r(C.compressedSize,4),I+=r(C.uncompressedSize,4),I+=r(w.length,2),I+=r(E.length,2),{fileRecord:l.LOCAL_FILE_HEADER+I+w+E,dirRecord:l.CENTRAL_FILE_HEADER+r(O,2)+I+r(_.length,2)+"\0\0\0\0"+r(R,4)+r(i,4)+w+E+_}}var s=e("../utils"),o=e("../stream/GenericWorker"),a=e("../utf8"),u=e("../crc32"),l=e("../signature");function c(e,t,n,r){o.call(this,"ZipFileWorker"),this.bytesWritten=0,this.zipComment=t,this.zipPlatform=n,this.encodeFileName=r,this.streamFiles=e,this.accumulate=!1,this.contentBuffer=[],this.dirRecords=[],this.currentSourceOffset=0,this.entriesCount=0,this.currentFile=null,this._sources=[]}s.inherits(c,o),c.prototype.push=function(e){var t=e.meta.percent||0,n=this.entriesCount,r=this._sources.length;this.accumulate?this.contentBuffer.push(e):(this.bytesWritten+=e.data.length,o.prototype.push.call(this,{data:e.data,meta:{currentFile:this.currentFile,percent:n?(t+100*(n-r-1))/n:100}}))},c.prototype.openedSource=function(e){this.currentSourceOffset=this.bytesWritten,this.currentFile=e.file.name;var t=this.streamFiles&&!e.file.dir;if(t){var n=i(e,t,!1,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);this.push({data:n.fileRecord,meta:{percent:0}})}else this.accumulate=!0},c.prototype.closedSource=function(e){this.accumulate=!1;var t=this.streamFiles&&!e.file.dir,n=i(e,t,!0,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);if(this.dirRecords.push(n.dirRecord),t)this.push({data:function(e){return l.DATA_DESCRIPTOR+r(e.crc32,4)+r(e.compressedSize,4)+r(e.uncompressedSize,4)}(e),meta:{percent:100}});else for(this.push({data:n.fileRecord,meta:{percent:0}});this.contentBuffer.length;)this.push(this.contentBuffer.shift());this.currentFile=null},c.prototype.flush=function(){for(var e=this.bytesWritten,t=0;t=this.index;t--)n=(n<<8)+this.byteAt(t);return this.index+=e,n},readString:function(e){return r.transformTo("string",this.readData(e))},readData:function(e){},lastIndexOfSignature:function(e){},readAndCheckSignature:function(e){},readDate:function(){var e=this.readInt(4);return new Date(Date.UTC(1980+(e>>25&127),(e>>21&15)-1,e>>16&31,e>>11&31,e>>5&63,(31&e)<<1))}},t.exports=i},{"../utils":32}],19:[function(e,t,n){"use strict";var r=e("./Uint8ArrayReader");function i(e){r.call(this,e)}e("../utils").inherits(i,r),i.prototype.readData=function(e){this.checkOffset(e);var t=this.data.slice(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=i},{"../utils":32,"./Uint8ArrayReader":21}],20:[function(e,t,n){"use strict";var r=e("./DataReader");function i(e){r.call(this,e)}e("../utils").inherits(i,r),i.prototype.byteAt=function(e){return this.data.charCodeAt(this.zero+e)},i.prototype.lastIndexOfSignature=function(e){return this.data.lastIndexOf(e)-this.zero},i.prototype.readAndCheckSignature=function(e){return e===this.readData(4)},i.prototype.readData=function(e){this.checkOffset(e);var t=this.data.slice(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=i},{"../utils":32,"./DataReader":18}],21:[function(e,t,n){"use strict";var r=e("./ArrayReader");function i(e){r.call(this,e)}e("../utils").inherits(i,r),i.prototype.readData=function(e){if(this.checkOffset(e),0===e)return new Uint8Array(0);var t=this.data.subarray(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=i},{"../utils":32,"./ArrayReader":17}],22:[function(e,t,n){"use strict";var r=e("../utils"),i=e("../support"),s=e("./ArrayReader"),o=e("./StringReader"),a=e("./NodeBufferReader"),u=e("./Uint8ArrayReader");t.exports=function(e){var t=r.getTypeOf(e);return r.checkSupport(t),"string"!==t||i.uint8array?"nodebuffer"===t?new a(e):i.uint8array?new u(r.transformTo("uint8array",e)):new s(r.transformTo("array",e)):new o(e)}},{"../support":30,"../utils":32,"./ArrayReader":17,"./NodeBufferReader":19,"./StringReader":20,"./Uint8ArrayReader":21}],23:[function(e,t,n){"use strict";n.LOCAL_FILE_HEADER="PK",n.CENTRAL_FILE_HEADER="PK",n.CENTRAL_DIRECTORY_END="PK",n.ZIP64_CENTRAL_DIRECTORY_LOCATOR="PK",n.ZIP64_CENTRAL_DIRECTORY_END="PK",n.DATA_DESCRIPTOR="PK\b"},{}],24:[function(e,t,n){"use strict";var r=e("./GenericWorker"),i=e("../utils");function s(e){r.call(this,"ConvertWorker to "+e),this.destType=e}i.inherits(s,r),s.prototype.processChunk=function(e){this.push({data:i.transformTo(this.destType,e.data),meta:e.meta})},t.exports=s},{"../utils":32,"./GenericWorker":28}],25:[function(e,t,n){"use strict";var r=e("./GenericWorker"),i=e("../crc32");function s(){r.call(this,"Crc32Probe"),this.withStreamInfo("crc32",0)}e("../utils").inherits(s,r),s.prototype.processChunk=function(e){this.streamInfo.crc32=i(e.data,this.streamInfo.crc32||0),this.push(e)},t.exports=s},{"../crc32":4,"../utils":32,"./GenericWorker":28}],26:[function(e,t,n){"use strict";var r=e("../utils"),i=e("./GenericWorker");function s(e){i.call(this,"DataLengthProbe for "+e),this.propName=e,this.withStreamInfo(e,0)}r.inherits(s,i),s.prototype.processChunk=function(e){if(e){var t=this.streamInfo[this.propName]||0;this.streamInfo[this.propName]=t+e.data.length}i.prototype.processChunk.call(this,e)},t.exports=s},{"../utils":32,"./GenericWorker":28}],27:[function(e,t,n){"use strict";var r=e("../utils"),i=e("./GenericWorker");function s(e){i.call(this,"DataWorker");var t=this;this.dataIsReady=!1,this.index=0,this.max=0,this.data=null,this.type="",this._tickScheduled=!1,e.then((function(e){t.dataIsReady=!0,t.data=e,t.max=e&&e.length||0,t.type=r.getTypeOf(e),t.isPaused||t._tickAndRepeat()}),(function(e){t.error(e)}))}r.inherits(s,i),s.prototype.cleanUp=function(){i.prototype.cleanUp.call(this),this.data=null},s.prototype.resume=function(){return!!i.prototype.resume.call(this)&&(!this._tickScheduled&&this.dataIsReady&&(this._tickScheduled=!0,r.delay(this._tickAndRepeat,[],this)),!0)},s.prototype._tickAndRepeat=function(){this._tickScheduled=!1,this.isPaused||this.isFinished||(this._tick(),this.isFinished||(r.delay(this._tickAndRepeat,[],this),this._tickScheduled=!0))},s.prototype._tick=function(){if(this.isPaused||this.isFinished)return!1;var e=null,t=Math.min(this.max,this.index+16384);if(this.index>=this.max)return this.end();switch(this.type){case"string":e=this.data.substring(this.index,t);break;case"uint8array":e=this.data.subarray(this.index,t);break;case"array":case"nodebuffer":e=this.data.slice(this.index,t)}return this.index=t,this.push({data:e,meta:{percent:this.max?this.index/this.max*100:0}})},t.exports=s},{"../utils":32,"./GenericWorker":28}],28:[function(e,t,n){"use strict";function r(e){this.name=e||"default",this.streamInfo={},this.generatedError=null,this.extraStreamInfo={},this.isPaused=!0,this.isFinished=!1,this.isLocked=!1,this._listeners={data:[],end:[],error:[]},this.previous=null}r.prototype={push:function(e){this.emit("data",e)},end:function(){if(this.isFinished)return!1;this.flush();try{this.emit("end"),this.cleanUp(),this.isFinished=!0}catch(e){this.emit("error",e)}return!0},error:function(e){return!this.isFinished&&(this.isPaused?this.generatedError=e:(this.isFinished=!0,this.emit("error",e),this.previous&&this.previous.error(e),this.cleanUp()),!0)},on:function(e,t){return this._listeners[e].push(t),this},cleanUp:function(){this.streamInfo=this.generatedError=this.extraStreamInfo=null,this._listeners=[]},emit:function(e,t){if(this._listeners[e])for(var n=0;n "+e:e}},t.exports=r},{}],29:[function(e,n,r){"use strict";var i=e("../utils"),s=e("./ConvertWorker"),o=e("./GenericWorker"),a=e("../base64"),u=e("../support"),l=e("../external"),c=null;if(u.nodestream)try{c=e("../nodejs/NodejsStreamOutputAdapter")}catch(e){}function h(e,t,n){var r=t;switch(t){case"blob":case"arraybuffer":r="uint8array";break;case"base64":r="string"}try{this._internalType=r,this._outputType=t,this._mimeType=n,i.checkSupport(r),this._worker=e.pipe(new s(r)),e.lock()}catch(e){this._worker=new o("error"),this._worker.error(e)}}h.prototype={accumulate:function(e){return function(e,n){return new l.Promise((function(r,s){var o=[],u=e._internalType,l=e._outputType,c=e._mimeType;e.on("data",(function(e,t){o.push(e),n&&n(t)})).on("error",(function(e){o=[],s(e)})).on("end",(function(){try{var e=function(e,t,n){switch(e){case"blob":return i.newBlob(i.transformTo("arraybuffer",t),n);case"base64":return a.encode(t);default:return i.transformTo(e,t)}}(l,function(e,n){var r,i=0,s=null,o=0;for(r=0;r>>6:(n<65536?t[o++]=224|n>>>12:(t[o++]=240|n>>>18,t[o++]=128|n>>>12&63),t[o++]=128|n>>>6&63),t[o++]=128|63&n);return t}(e)},n.utf8decode=function(e){return i.nodebuffer?r.transformTo("nodebuffer",e).toString("utf-8"):function(e){var t,n,i,s,o=e.length,u=new Array(2*o);for(t=n=0;t>10&1023,u[n++]=56320|1023&i)}return u.length!==n&&(u.subarray?u=u.subarray(0,n):u.length=n),r.applyFromCharCode(u)}(e=r.transformTo(i.uint8array?"uint8array":"array",e))},r.inherits(l,o),l.prototype.processChunk=function(e){var t=r.transformTo(i.uint8array?"uint8array":"array",e.data);if(this.leftOver&&this.leftOver.length){if(i.uint8array){var s=t;(t=new Uint8Array(s.length+this.leftOver.length)).set(this.leftOver,0),t.set(s,this.leftOver.length)}else t=this.leftOver.concat(t);this.leftOver=null}var o=function(e,t){var n;for((t=t||e.length)>e.length&&(t=e.length),n=t-1;0<=n&&128==(192&e[n]);)n--;return n<0?t:0===n?t:n+a[e[n]]>t?n:t}(t),u=t;o!==t.length&&(i.uint8array?(u=t.subarray(0,o),this.leftOver=t.subarray(o,t.length)):(u=t.slice(0,o),this.leftOver=t.slice(o,t.length))),this.push({data:n.utf8decode(u),meta:e.meta})},l.prototype.flush=function(){this.leftOver&&this.leftOver.length&&(this.push({data:n.utf8decode(this.leftOver),meta:{}}),this.leftOver=null)},n.Utf8DecodeWorker=l,r.inherits(c,o),c.prototype.processChunk=function(e){this.push({data:n.utf8encode(e.data),meta:e.meta})},n.Utf8EncodeWorker=c},{"./nodejsUtils":14,"./stream/GenericWorker":28,"./support":30,"./utils":32}],32:[function(e,t,n){"use strict";var r=e("./support"),i=e("./base64"),s=e("./nodejsUtils"),o=e("set-immediate-shim"),a=e("./external");function u(e){return e}function l(e,t){for(var n=0;n>8;this.dir=!!(16&this.externalFileAttributes),0==e&&(this.dosPermissions=63&this.externalFileAttributes),3==e&&(this.unixPermissions=this.externalFileAttributes>>16&65535),this.dir||"/"!==this.fileNameStr.slice(-1)||(this.dir=!0)},parseZIP64ExtraField:function(e){if(this.extraFields[1]){var t=r(this.extraFields[1].value);this.uncompressedSize===i.MAX_VALUE_32BITS&&(this.uncompressedSize=t.readInt(8)),this.compressedSize===i.MAX_VALUE_32BITS&&(this.compressedSize=t.readInt(8)),this.localHeaderOffset===i.MAX_VALUE_32BITS&&(this.localHeaderOffset=t.readInt(8)),this.diskNumberStart===i.MAX_VALUE_32BITS&&(this.diskNumberStart=t.readInt(4))}},readExtraFields:function(e){var t,n,r,i=e.index+this.extraFieldsLength;for(this.extraFields||(this.extraFields={});e.index>>6:(n<65536?t[o++]=224|n>>>12:(t[o++]=240|n>>>18,t[o++]=128|n>>>12&63),t[o++]=128|n>>>6&63),t[o++]=128|63&n);return t},n.buf2binstring=function(e){return u(e,e.length)},n.binstring2buf=function(e){for(var t=new r.Buf8(e.length),n=0,i=t.length;n>10&1023,l[r++]=56320|1023&i)}return u(l,r)},n.utf8border=function(e,t){var n;for((t=t||e.length)>e.length&&(t=e.length),n=t-1;0<=n&&128==(192&e[n]);)n--;return n<0?t:0===n?t:n+o[e[n]]>t?n:t}},{"./common":41}],43:[function(e,t,n){"use strict";t.exports=function(e,t,n,r){for(var i=65535&e|0,s=e>>>16&65535|0,o=0;0!==n;){for(n-=o=2e3>>1:e>>>1;t[n]=e}return t}();t.exports=function(e,t,n,i){var s=r,o=i+n;e^=-1;for(var a=i;a>>8^s[255&(e^t[a])];return-1^e}},{}],46:[function(e,t,n){"use strict";var r,i=e("../utils/common"),s=e("./trees"),o=e("./adler32"),a=e("./crc32"),u=e("./messages"),l=0,c=4,h=0,d=-2,p=-1,f=4,m=2,w=8,g=9,b=286,_=30,y=19,v=2*b+1,x=15,E=3,A=258,S=A+E+1,k=42,T=113,C=1,D=2,R=3,O=4;function I(e,t){return e.msg=u[t],t}function N(e){return(e<<1)-(4e.avail_out&&(n=e.avail_out),0!==n&&(i.arraySet(e.output,t.pending_buf,t.pending_out,n,e.next_out),e.next_out+=n,t.pending_out+=n,e.total_out+=n,e.avail_out-=n,t.pending-=n,0===t.pending&&(t.pending_out=0))}function L(e,t){s._tr_flush_block(e,0<=e.block_start?e.block_start:-1,e.strstart-e.block_start,t),e.block_start=e.strstart,P(e.strm)}function B(e,t){e.pending_buf[e.pending++]=t}function U(e,t){e.pending_buf[e.pending++]=t>>>8&255,e.pending_buf[e.pending++]=255&t}function M(e,t){var n,r,i=e.max_chain_length,s=e.strstart,o=e.prev_length,a=e.nice_match,u=e.strstart>e.w_size-S?e.strstart-(e.w_size-S):0,l=e.window,c=e.w_mask,h=e.prev,d=e.strstart+A,p=l[s+o-1],f=l[s+o];e.prev_length>=e.good_match&&(i>>=2),a>e.lookahead&&(a=e.lookahead);do{if(l[(n=t)+o]===f&&l[n+o-1]===p&&l[n]===l[s]&&l[++n]===l[s+1]){s+=2,n++;do{}while(l[++s]===l[++n]&&l[++s]===l[++n]&&l[++s]===l[++n]&&l[++s]===l[++n]&&l[++s]===l[++n]&&l[++s]===l[++n]&&l[++s]===l[++n]&&l[++s]===l[++n]&&su&&0!=--i);return o<=e.lookahead?o:e.lookahead}function j(e){var t,n,r,s,u,l,c,h,d,p,f=e.w_size;do{if(s=e.window_size-e.lookahead-e.strstart,e.strstart>=f+(f-S)){for(i.arraySet(e.window,e.window,f,f,0),e.match_start-=f,e.strstart-=f,e.block_start-=f,t=n=e.hash_size;r=e.head[--t],e.head[t]=f<=r?r-f:0,--n;);for(t=n=f;r=e.prev[--t],e.prev[t]=f<=r?r-f:0,--n;);s+=f}if(0===e.strm.avail_in)break;if(l=e.strm,c=e.window,h=e.strstart+e.lookahead,p=void 0,(d=s)<(p=l.avail_in)&&(p=d),n=0===p?0:(l.avail_in-=p,i.arraySet(c,l.input,l.next_in,p,h),1===l.state.wrap?l.adler=o(l.adler,c,p,h):2===l.state.wrap&&(l.adler=a(l.adler,c,p,h)),l.next_in+=p,l.total_in+=p,p),e.lookahead+=n,e.lookahead+e.insert>=E)for(u=e.strstart-e.insert,e.ins_h=e.window[u],e.ins_h=(e.ins_h<=E&&(e.ins_h=(e.ins_h<=E)if(r=s._tr_tally(e,e.strstart-e.match_start,e.match_length-E),e.lookahead-=e.match_length,e.match_length<=e.max_lazy_match&&e.lookahead>=E){for(e.match_length--;e.strstart++,e.ins_h=(e.ins_h<=E&&(e.ins_h=(e.ins_h<=E&&e.match_length<=e.prev_length){for(i=e.strstart+e.lookahead-E,r=s._tr_tally(e,e.strstart-1-e.prev_match,e.prev_length-E),e.lookahead-=e.prev_length-1,e.prev_length-=2;++e.strstart<=i&&(e.ins_h=(e.ins_h<e.pending_buf_size-5&&(n=e.pending_buf_size-5);;){if(e.lookahead<=1){if(j(e),0===e.lookahead&&t===l)return C;if(0===e.lookahead)break}e.strstart+=e.lookahead,e.lookahead=0;var r=e.block_start+n;if((0===e.strstart||e.strstart>=r)&&(e.lookahead=e.strstart-r,e.strstart=r,L(e,!1),0===e.strm.avail_out))return C;if(e.strstart-e.block_start>=e.w_size-S&&(L(e,!1),0===e.strm.avail_out))return C}return e.insert=0,t===c?(L(e,!0),0===e.strm.avail_out?R:O):(e.strstart>e.block_start&&(L(e,!1),e.strm.avail_out),C)})),new H(4,4,8,4,W),new H(4,5,16,8,W),new H(4,6,32,32,W),new H(4,4,16,16,z),new H(8,16,32,32,z),new H(8,16,128,128,z),new H(8,32,128,256,z),new H(32,128,258,1024,z),new H(32,258,258,4096,z)],n.deflateInit=function(e,t){return K(e,t,w,15,8,0)},n.deflateInit2=K,n.deflateReset=V,n.deflateResetKeep=q,n.deflateSetHeader=function(e,t){return e&&e.state?2!==e.state.wrap?d:(e.state.gzhead=t,h):d},n.deflate=function(e,t){var n,i,o,u;if(!e||!e.state||5>8&255),B(i,i.gzhead.time>>16&255),B(i,i.gzhead.time>>24&255),B(i,9===i.level?2:2<=i.strategy||i.level<2?4:0),B(i,255&i.gzhead.os),i.gzhead.extra&&i.gzhead.extra.length&&(B(i,255&i.gzhead.extra.length),B(i,i.gzhead.extra.length>>8&255)),i.gzhead.hcrc&&(e.adler=a(e.adler,i.pending_buf,i.pending,0)),i.gzindex=0,i.status=69):(B(i,0),B(i,0),B(i,0),B(i,0),B(i,0),B(i,9===i.level?2:2<=i.strategy||i.level<2?4:0),B(i,3),i.status=T);else{var p=w+(i.w_bits-8<<4)<<8;p|=(2<=i.strategy||i.level<2?0:i.level<6?1:6===i.level?2:3)<<6,0!==i.strstart&&(p|=32),p+=31-p%31,i.status=T,U(i,p),0!==i.strstart&&(U(i,e.adler>>>16),U(i,65535&e.adler)),e.adler=1}if(69===i.status)if(i.gzhead.extra){for(o=i.pending;i.gzindex<(65535&i.gzhead.extra.length)&&(i.pending!==i.pending_buf_size||(i.gzhead.hcrc&&i.pending>o&&(e.adler=a(e.adler,i.pending_buf,i.pending-o,o)),P(e),o=i.pending,i.pending!==i.pending_buf_size));)B(i,255&i.gzhead.extra[i.gzindex]),i.gzindex++;i.gzhead.hcrc&&i.pending>o&&(e.adler=a(e.adler,i.pending_buf,i.pending-o,o)),i.gzindex===i.gzhead.extra.length&&(i.gzindex=0,i.status=73)}else i.status=73;if(73===i.status)if(i.gzhead.name){o=i.pending;do{if(i.pending===i.pending_buf_size&&(i.gzhead.hcrc&&i.pending>o&&(e.adler=a(e.adler,i.pending_buf,i.pending-o,o)),P(e),o=i.pending,i.pending===i.pending_buf_size)){u=1;break}u=i.gzindexo&&(e.adler=a(e.adler,i.pending_buf,i.pending-o,o)),0===u&&(i.gzindex=0,i.status=91)}else i.status=91;if(91===i.status)if(i.gzhead.comment){o=i.pending;do{if(i.pending===i.pending_buf_size&&(i.gzhead.hcrc&&i.pending>o&&(e.adler=a(e.adler,i.pending_buf,i.pending-o,o)),P(e),o=i.pending,i.pending===i.pending_buf_size)){u=1;break}u=i.gzindexo&&(e.adler=a(e.adler,i.pending_buf,i.pending-o,o)),0===u&&(i.status=103)}else i.status=103;if(103===i.status&&(i.gzhead.hcrc?(i.pending+2>i.pending_buf_size&&P(e),i.pending+2<=i.pending_buf_size&&(B(i,255&e.adler),B(i,e.adler>>8&255),e.adler=0,i.status=T)):i.status=T),0!==i.pending){if(P(e),0===e.avail_out)return i.last_flush=-1,h}else if(0===e.avail_in&&N(t)<=N(n)&&t!==c)return I(e,-5);if(666===i.status&&0!==e.avail_in)return I(e,-5);if(0!==e.avail_in||0!==i.lookahead||t!==l&&666!==i.status){var f=2===i.strategy?function(e,t){for(var n;;){if(0===e.lookahead&&(j(e),0===e.lookahead)){if(t===l)return C;break}if(e.match_length=0,n=s._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,n&&(L(e,!1),0===e.strm.avail_out))return C}return e.insert=0,t===c?(L(e,!0),0===e.strm.avail_out?R:O):e.last_lit&&(L(e,!1),0===e.strm.avail_out)?C:D}(i,t):3===i.strategy?function(e,t){for(var n,r,i,o,a=e.window;;){if(e.lookahead<=A){if(j(e),e.lookahead<=A&&t===l)return C;if(0===e.lookahead)break}if(e.match_length=0,e.lookahead>=E&&0e.lookahead&&(e.match_length=e.lookahead)}if(e.match_length>=E?(n=s._tr_tally(e,1,e.match_length-E),e.lookahead-=e.match_length,e.strstart+=e.match_length,e.match_length=0):(n=s._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++),n&&(L(e,!1),0===e.strm.avail_out))return C}return e.insert=0,t===c?(L(e,!0),0===e.strm.avail_out?R:O):e.last_lit&&(L(e,!1),0===e.strm.avail_out)?C:D}(i,t):r[i.level].func(i,t);if(f!==R&&f!==O||(i.status=666),f===C||f===R)return 0===e.avail_out&&(i.last_flush=-1),h;if(f===D&&(1===t?s._tr_align(i):5!==t&&(s._tr_stored_block(i,0,0,!1),3===t&&(F(i.head),0===i.lookahead&&(i.strstart=0,i.block_start=0,i.insert=0))),P(e),0===e.avail_out))return i.last_flush=-1,h}return t!==c?h:i.wrap<=0?1:(2===i.wrap?(B(i,255&e.adler),B(i,e.adler>>8&255),B(i,e.adler>>16&255),B(i,e.adler>>24&255),B(i,255&e.total_in),B(i,e.total_in>>8&255),B(i,e.total_in>>16&255),B(i,e.total_in>>24&255)):(U(i,e.adler>>>16),U(i,65535&e.adler)),P(e),0=n.w_size&&(0===a&&(F(n.head),n.strstart=0,n.block_start=0,n.insert=0),p=new i.Buf8(n.w_size),i.arraySet(p,t,f-n.w_size,n.w_size,0),t=p,f=n.w_size),u=e.avail_in,l=e.next_in,c=e.input,e.avail_in=f,e.next_in=0,e.input=t,j(n);n.lookahead>=E;){for(r=n.strstart,s=n.lookahead-(E-1);n.ins_h=(n.ins_h<>>=y=_>>>24,f-=y,0==(y=_>>>16&255))k[s++]=65535&_;else{if(!(16&y)){if(0==(64&y)){_=m[(65535&_)+(p&(1<>>=y,f-=y),f<15&&(p+=S[r++]<>>=y=_>>>24,f-=y,!(16&(y=_>>>16&255))){if(0==(64&y)){_=w[(65535&_)+(p&(1<>>=y,f-=y,(y=s-o)>3,p&=(1<<(f-=v<<3))-1,e.next_in=r,e.next_out=s,e.avail_in=r>>24&255)+(e>>>8&65280)+((65280&e)<<8)+((255&e)<<24)}function w(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new r.Buf16(320),this.work=new r.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function g(e){var t;return e&&e.state?(t=e.state,e.total_in=e.total_out=t.total=0,e.msg="",t.wrap&&(e.adler=1&t.wrap),t.mode=d,t.last=0,t.havedict=0,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new r.Buf32(p),t.distcode=t.distdyn=new r.Buf32(f),t.sane=1,t.back=-1,c):h}function b(e){var t;return e&&e.state?((t=e.state).wsize=0,t.whave=0,t.wnext=0,g(e)):h}function _(e,t){var n,r;return e&&e.state?(r=e.state,t<0?(n=0,t=-t):(n=1+(t>>4),t<48&&(t&=15)),t&&(t<8||15=o.wsize?(r.arraySet(o.window,t,n-o.wsize,o.wsize,0),o.wnext=0,o.whave=o.wsize):(i<(s=o.wsize-o.wnext)&&(s=i),r.arraySet(o.window,t,n-i,s,o.wnext),(i-=s)?(r.arraySet(o.window,t,n-i,i,0),o.wnext=i,o.whave=o.wsize):(o.wnext+=s,o.wnext===o.wsize&&(o.wnext=0),o.whave>>8&255,n.check=s(n.check,j,2,0),v=y=0,n.mode=2;break}if(n.flags=0,n.head&&(n.head.done=!1),!(1&n.wrap)||(((255&y)<<8)+(y>>8))%31){e.msg="incorrect header check",n.mode=30;break}if(8!=(15&y)){e.msg="unknown compression method",n.mode=30;break}if(v-=4,P=8+(15&(y>>>=4)),0===n.wbits)n.wbits=P;else if(P>n.wbits){e.msg="invalid window size",n.mode=30;break}n.dmax=1<>8&1),512&n.flags&&(j[0]=255&y,j[1]=y>>>8&255,n.check=s(n.check,j,2,0)),v=y=0,n.mode=3;case 3:for(;v<32;){if(0===b)break e;b--,y+=p[w++]<>>8&255,j[2]=y>>>16&255,j[3]=y>>>24&255,n.check=s(n.check,j,4,0)),v=y=0,n.mode=4;case 4:for(;v<16;){if(0===b)break e;b--,y+=p[w++]<>8),512&n.flags&&(j[0]=255&y,j[1]=y>>>8&255,n.check=s(n.check,j,2,0)),v=y=0,n.mode=5;case 5:if(1024&n.flags){for(;v<16;){if(0===b)break e;b--,y+=p[w++]<>>8&255,n.check=s(n.check,j,2,0)),v=y=0}else n.head&&(n.head.extra=null);n.mode=6;case 6:if(1024&n.flags&&(b<(k=n.length)&&(k=b),k&&(n.head&&(P=n.head.extra_len-n.length,n.head.extra||(n.head.extra=new Array(n.head.extra_len)),r.arraySet(n.head.extra,p,w,k,P)),512&n.flags&&(n.check=s(n.check,p,k,w)),b-=k,w+=k,n.length-=k),n.length))break e;n.length=0,n.mode=7;case 7:if(2048&n.flags){if(0===b)break e;for(k=0;P=p[w+k++],n.head&&P&&n.length<65536&&(n.head.name+=String.fromCharCode(P)),P&&k>9&1,n.head.done=!0),e.adler=n.check=0,n.mode=12;break;case 10:for(;v<32;){if(0===b)break e;b--,y+=p[w++]<>>=7&v,v-=7&v,n.mode=27;break}for(;v<3;){if(0===b)break e;b--,y+=p[w++]<>>=1)){case 0:n.mode=14;break;case 1:if(A(n),n.mode=20,6!==t)break;y>>>=2,v-=2;break e;case 2:n.mode=17;break;case 3:e.msg="invalid block type",n.mode=30}y>>>=2,v-=2;break;case 14:for(y>>>=7&v,v-=7&v;v<32;){if(0===b)break e;b--,y+=p[w++]<>>16^65535)){e.msg="invalid stored block lengths",n.mode=30;break}if(n.length=65535&y,v=y=0,n.mode=15,6===t)break e;case 15:n.mode=16;case 16:if(k=n.length){if(b>>=5,v-=5,n.ndist=1+(31&y),y>>>=5,v-=5,n.ncode=4+(15&y),y>>>=4,v-=4,286>>=3,v-=3}for(;n.have<19;)n.lens[W[n.have++]]=0;if(n.lencode=n.lendyn,n.lenbits=7,B={bits:n.lenbits},L=a(0,n.lens,0,19,n.lencode,0,n.work,B),n.lenbits=B.bits,L){e.msg="invalid code lengths set",n.mode=30;break}n.have=0,n.mode=19;case 19:for(;n.have>>16&255,O=65535&M,!((D=M>>>24)<=v);){if(0===b)break e;b--,y+=p[w++]<>>=D,v-=D,n.lens[n.have++]=O;else{if(16===O){for(U=D+2;v>>=D,v-=D,0===n.have){e.msg="invalid bit length repeat",n.mode=30;break}P=n.lens[n.have-1],k=3+(3&y),y>>>=2,v-=2}else if(17===O){for(U=D+3;v>>=D)),y>>>=3,v-=3}else{for(U=D+7;v>>=D)),y>>>=7,v-=7}if(n.have+k>n.nlen+n.ndist){e.msg="invalid bit length repeat",n.mode=30;break}for(;k--;)n.lens[n.have++]=P}}if(30===n.mode)break;if(0===n.lens[256]){e.msg="invalid code -- missing end-of-block",n.mode=30;break}if(n.lenbits=9,B={bits:n.lenbits},L=a(u,n.lens,0,n.nlen,n.lencode,0,n.work,B),n.lenbits=B.bits,L){e.msg="invalid literal/lengths set",n.mode=30;break}if(n.distbits=6,n.distcode=n.distdyn,B={bits:n.distbits},L=a(l,n.lens,n.nlen,n.ndist,n.distcode,0,n.work,B),n.distbits=B.bits,L){e.msg="invalid distances set",n.mode=30;break}if(n.mode=20,6===t)break e;case 20:n.mode=21;case 21:if(6<=b&&258<=_){e.next_out=g,e.avail_out=_,e.next_in=w,e.avail_in=b,n.hold=y,n.bits=v,o(e,E),g=e.next_out,f=e.output,_=e.avail_out,w=e.next_in,p=e.input,b=e.avail_in,y=n.hold,v=n.bits,12===n.mode&&(n.back=-1);break}for(n.back=0;R=(M=n.lencode[y&(1<>>16&255,O=65535&M,!((D=M>>>24)<=v);){if(0===b)break e;b--,y+=p[w++]<>I)])>>>16&255,O=65535&M,!(I+(D=M>>>24)<=v);){if(0===b)break e;b--,y+=p[w++]<>>=I,v-=I,n.back+=I}if(y>>>=D,v-=D,n.back+=D,n.length=O,0===R){n.mode=26;break}if(32&R){n.back=-1,n.mode=12;break}if(64&R){e.msg="invalid literal/length code",n.mode=30;break}n.extra=15&R,n.mode=22;case 22:if(n.extra){for(U=n.extra;v>>=n.extra,v-=n.extra,n.back+=n.extra}n.was=n.length,n.mode=23;case 23:for(;R=(M=n.distcode[y&(1<>>16&255,O=65535&M,!((D=M>>>24)<=v);){if(0===b)break e;b--,y+=p[w++]<>I)])>>>16&255,O=65535&M,!(I+(D=M>>>24)<=v);){if(0===b)break e;b--,y+=p[w++]<>>=I,v-=I,n.back+=I}if(y>>>=D,v-=D,n.back+=D,64&R){e.msg="invalid distance code",n.mode=30;break}n.offset=O,n.extra=15&R,n.mode=24;case 24:if(n.extra){for(U=n.extra;v>>=n.extra,v-=n.extra,n.back+=n.extra}if(n.offset>n.dmax){e.msg="invalid distance too far back",n.mode=30;break}n.mode=25;case 25:if(0===_)break e;if(k=E-_,n.offset>k){if((k=n.offset-k)>n.whave&&n.sane){e.msg="invalid distance too far back",n.mode=30;break}T=k>n.wnext?(k-=n.wnext,n.wsize-k):n.wnext-k,k>n.length&&(k=n.length),C=n.window}else C=f,T=g-n.offset,k=n.length;for(_b?(y=B[U+h[A]],N[F+h[A]]):(y=96,0),p=1<>D)+(f-=p)]=_<<24|y<<16|v|0,0!==f;);for(p=1<>=1;if(0!==p?(I&=p-1,I+=p):I=0,A++,0==--P[E]){if(E===k)break;E=t[n+h[A]]}if(T>>7)]}function N(e,t){e.pending_buf[e.pending++]=255&t,e.pending_buf[e.pending++]=t>>>8&255}function F(e,t,n){e.bi_valid>d-n?(e.bi_buf|=t<>d-e.bi_valid,e.bi_valid+=n-d):(e.bi_buf|=t<>>=1,n<<=1,0<--t;);return n>>>1}function B(e,t,n){var r,i,s=new Array(h+1),o=0;for(r=1;r<=h;r++)s[r]=o=o+n[r-1]<<1;for(i=0;i<=t;i++){var a=e[2*i+1];0!==a&&(e[2*i]=L(s[a]++,a))}}function U(e){var t;for(t=0;t>1;1<=n;n--)W(e,s,n);for(i=u;n=e.heap[1],e.heap[1]=e.heap[e.heap_len--],W(e,s,1),r=e.heap[1],e.heap[--e.heap_max]=n,e.heap[--e.heap_max]=r,s[2*i]=s[2*n]+s[2*r],e.depth[i]=(e.depth[n]>=e.depth[r]?e.depth[n]:e.depth[r])+1,s[2*n+1]=s[2*r+1]=i,e.heap[1]=i++,W(e,s,1),2<=e.heap_len;);e.heap[--e.heap_max]=e.heap[1],function(e,t){var n,r,i,s,o,a,u=t.dyn_tree,l=t.max_code,d=t.stat_desc.static_tree,p=t.stat_desc.has_stree,f=t.stat_desc.extra_bits,m=t.stat_desc.extra_base,w=t.stat_desc.max_length,g=0;for(s=0;s<=h;s++)e.bl_count[s]=0;for(u[2*e.heap[e.heap_max]+1]=0,n=e.heap_max+1;n>=7;r>>=1)if(1&n&&0!==e.dyn_ltree[2*t])return 0;if(0!==e.dyn_ltree[18]||0!==e.dyn_ltree[20]||0!==e.dyn_ltree[26])return 1;for(t=32;t>>3,(s=e.static_len+3+7>>>3)<=i&&(i=s)):i=s=n+5,n+4<=i&&-1!==t?K(e,t,n,r):4===e.strategy||s===i?(F(e,2+(r?1:0),3),z(e,v,x)):(F(e,4+(r?1:0),3),function(e,t,n,r){var i;for(F(e,t-257,5),F(e,n-1,5),F(e,r-4,4),i=0;i>>8&255,e.pending_buf[e.d_buf+2*e.last_lit+1]=255&t,e.pending_buf[e.l_buf+e.last_lit]=255&n,e.last_lit++,0===t?e.dyn_ltree[2*n]++:(e.matches++,t--,e.dyn_ltree[2*(A[n]+o+1)]++,e.dyn_dtree[2*I(t)]++),e.last_lit===e.lit_bufsize-1},n._tr_align=function(e){F(e,2,3),P(e,p,v),function(e){16===e.bi_valid?(N(e,e.bi_buf),e.bi_buf=0,e.bi_valid=0):8<=e.bi_valid&&(e.pending_buf[e.pending++]=255&e.bi_buf,e.bi_buf>>=8,e.bi_valid-=8)}(e)}},{"../utils/common":41}],53:[function(e,t,n){"use strict";t.exports=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}},{}],54:[function(e,t,n){"use strict";t.exports="function"==typeof r?r:function(){var e=[].slice.apply(arguments);e.splice(1,0,0),setTimeout.apply(null,e)}},{}]},{},[10])(10)}).call(this,n(3).Buffer,n(6),n(59).setImmediate)},function(e,t,n){"use strict";if(self.registration){const{SWReplay:e}=n(182);self.sw=new e,console.log("sw init")}else if(self.postMessage){const{WorkerLoader:e}=n(52);new e(self);console.log("ww init")}},function(e,t){t.read=function(e,t,n,r,i){var s,o,a=8*i-r-1,u=(1<>1,c=-7,h=n?i-1:0,d=n?-1:1,p=e[t+h];for(h+=d,s=p&(1<<-c)-1,p>>=-c,c+=a;c>0;s=256*s+e[t+h],h+=d,c-=8);for(o=s&(1<<-c)-1,s>>=-c,c+=r;c>0;o=256*o+e[t+h],h+=d,c-=8);if(0===s)s=1-l;else{if(s===u)return o?NaN:1/0*(p?-1:1);o+=Math.pow(2,r),s-=l}return(p?-1:1)*o*Math.pow(2,s-r)},t.write=function(e,t,n,r,i,s){var o,a,u,l=8*s-i-1,c=(1<>1,d=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,p=r?0:s-1,f=r?1:-1,m=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(a=isNaN(t)?1:0,o=c):(o=Math.floor(Math.log(t)/Math.LN2),t*(u=Math.pow(2,-o))<1&&(o--,u*=2),(t+=o+h>=1?d/u:d*Math.pow(2,1-h))*u>=2&&(o++,u/=2),o+h>=c?(a=0,o=c):o+h>=1?(a=(t*u-1)*Math.pow(2,i),o+=h):(a=t*Math.pow(2,h-1)*Math.pow(2,i),o=0));i>=8;e[n+p]=255&a,p+=f,a/=256,i-=8);for(o=o<0;e[n+p]=255&o,p+=f,o/=256,l-=8);e[n+p-f]|=128*m}},function(e,t){},function(e,t,n){"use strict";var r=n(28).Buffer,i=n(96);e.exports=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.head=null,this.tail=null,this.length=0}return e.prototype.push=function(e){var t={data:e,next:null};this.length>0?this.tail.next=t:this.head=t,this.tail=t,++this.length},e.prototype.unshift=function(e){var t={data:e,next:this.head};0===this.length&&(this.tail=t),this.head=t,++this.length},e.prototype.shift=function(){if(0!==this.length){var e=this.head.data;return 1===this.length?this.head=this.tail=null:this.head=this.head.next,--this.length,e}},e.prototype.clear=function(){this.head=this.tail=null,this.length=0},e.prototype.join=function(e){if(0===this.length)return"";for(var t=this.head,n=""+t.data;t=t.next;)n+=e+t.data;return n},e.prototype.concat=function(e){if(0===this.length)return r.alloc(0);if(1===this.length)return this.head.data;for(var t,n,i,s=r.allocUnsafe(e>>>0),o=this.head,a=0;o;)t=o.data,n=s,i=a,t.copy(n,i),a+=o.data.length,o=o.next;return s},e}(),i&&i.inspect&&i.inspect.custom&&(e.exports.prototype[i.inspect.custom]=function(){var e=i.inspect({length:this.length});return this.constructor.name+" "+e})},function(e,t){},function(e,t,n){(function(e,t){!function(e,n){"use strict";if(!e.setImmediate){var r,i,s,o,a,u=1,l={},c=!1,h=e.document,d=Object.getPrototypeOf&&Object.getPrototypeOf(e);d=d&&d.setTimeout?d:e,"[object process]"==={}.toString.call(e.process)?r=function(e){t.nextTick((function(){f(e)}))}:!function(){if(e.postMessage&&!e.importScripts){var t=!0,n=e.onmessage;return e.onmessage=function(){t=!1},e.postMessage("","*"),e.onmessage=n,t}}()?e.MessageChannel?((s=new MessageChannel).port1.onmessage=function(e){f(e.data)},r=function(e){s.port2.postMessage(e)}):h&&"onreadystatechange"in h.createElement("script")?(i=h.documentElement,r=function(e){var t=h.createElement("script");t.onreadystatechange=function(){f(e),t.onreadystatechange=null,i.removeChild(t),t=null},i.appendChild(t)}):r=function(e){setTimeout(f,0,e)}:(o="setImmediate$"+Math.random()+"$",a=function(t){t.source===e&&"string"==typeof t.data&&0===t.data.indexOf(o)&&f(+t.data.slice(o.length))},e.addEventListener?e.addEventListener("message",a,!1):e.attachEvent("onmessage",a),r=function(t){e.postMessage(o+t,"*")}),d.setImmediate=function(e){"function"!=typeof e&&(e=new Function(""+e));for(var t=new Array(arguments.length-1),n=0;nthis.bufferWaterline&&(this.lastCharPos-=this.pos,this.html=this.html.substring(this.pos),this.pos=0,this.lastGapPos=-1,this.gapStack=[])}write(e,t){this.html?this.html+=e:this.html=e,this.lastCharPos=this.html.length-1,this.endOfChunkHit=!1,this.lastChunkWritten=t}insertHtmlAtCurrentPos(e){this.html=this.html.substring(0,this.pos+1)+e+this.html.substring(this.pos+1,this.html.length),this.lastCharPos=this.html.length-1,this.endOfChunkHit=!1}advance(){if(this.pos++,this.pos>this.lastCharPos)return this.endOfChunkHit=!this.lastChunkWritten,s.EOF;let e=this.html.charCodeAt(this.pos);if(this.skipNextNewLine&&e===s.LINE_FEED)return this.skipNextNewLine=!1,this._addGap(),this.advance();if(e===s.CARRIAGE_RETURN)return this.skipNextNewLine=!0,s.LINE_FEED;return this.skipNextNewLine=!1,r.isSurrogate(e)&&(e=this._processSurrogate(e)),e>31&&e<127||e===s.LINE_FEED||e===s.CARRIAGE_RETURN||e>159&&e<64976||this._checkForProblematicCharacters(e),e}_checkForProblematicCharacters(e){r.isControlCodePoint(e)?this._err(i.controlCharacterInInputStream):r.isUndefinedCodePoint(e)&&this._err(i.noncharacterInInputStream)}retreat(){this.pos===this.lastGapPos&&(this.lastGapPos=this.gapStack.pop(),this.pos--),this.pos--}}},function(e,t,n){"use strict";e.exports=new Uint16Array([4,52,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,106,303,412,810,1432,1701,1796,1987,2114,2360,2420,2484,3170,3251,4140,4393,4575,4610,5106,5512,5728,6117,6274,6315,6345,6427,6516,7002,7910,8733,9323,9870,10170,10631,10893,11318,11386,11467,12773,13092,14474,14922,15448,15542,16419,17666,18166,18611,19004,19095,19298,19397,4,16,69,77,97,98,99,102,103,108,109,110,111,112,114,115,116,117,140,150,158,169,176,194,199,210,216,222,226,242,256,266,283,294,108,105,103,5,198,1,59,148,1,198,80,5,38,1,59,156,1,38,99,117,116,101,5,193,1,59,167,1,193,114,101,118,101,59,1,258,4,2,105,121,182,191,114,99,5,194,1,59,189,1,194,59,1,1040,114,59,3,55349,56580,114,97,118,101,5,192,1,59,208,1,192,112,104,97,59,1,913,97,99,114,59,1,256,100,59,1,10835,4,2,103,112,232,237,111,110,59,1,260,102,59,3,55349,56632,112,108,121,70,117,110,99,116,105,111,110,59,1,8289,105,110,103,5,197,1,59,264,1,197,4,2,99,115,272,277,114,59,3,55349,56476,105,103,110,59,1,8788,105,108,100,101,5,195,1,59,292,1,195,109,108,5,196,1,59,301,1,196,4,8,97,99,101,102,111,114,115,117,321,350,354,383,388,394,400,405,4,2,99,114,327,336,107,115,108,97,115,104,59,1,8726,4,2,118,119,342,345,59,1,10983,101,100,59,1,8966,121,59,1,1041,4,3,99,114,116,362,369,379,97,117,115,101,59,1,8757,110,111,117,108,108,105,115,59,1,8492,97,59,1,914,114,59,3,55349,56581,112,102,59,3,55349,56633,101,118,101,59,1,728,99,114,59,1,8492,109,112,101,113,59,1,8782,4,14,72,79,97,99,100,101,102,104,105,108,111,114,115,117,442,447,456,504,542,547,569,573,577,616,678,784,790,796,99,121,59,1,1063,80,89,5,169,1,59,454,1,169,4,3,99,112,121,464,470,497,117,116,101,59,1,262,4,2,59,105,476,478,1,8914,116,97,108,68,105,102,102,101,114,101,110,116,105,97,108,68,59,1,8517,108,101,121,115,59,1,8493,4,4,97,101,105,111,514,520,530,535,114,111,110,59,1,268,100,105,108,5,199,1,59,528,1,199,114,99,59,1,264,110,105,110,116,59,1,8752,111,116,59,1,266,4,2,100,110,553,560,105,108,108,97,59,1,184,116,101,114,68,111,116,59,1,183,114,59,1,8493,105,59,1,935,114,99,108,101,4,4,68,77,80,84,591,596,603,609,111,116,59,1,8857,105,110,117,115,59,1,8854,108,117,115,59,1,8853,105,109,101,115,59,1,8855,111,4,2,99,115,623,646,107,119,105,115,101,67,111,110,116,111,117,114,73,110,116,101,103,114,97,108,59,1,8754,101,67,117,114,108,121,4,2,68,81,658,671,111,117,98,108,101,81,117,111,116,101,59,1,8221,117,111,116,101,59,1,8217,4,4,108,110,112,117,688,701,736,753,111,110,4,2,59,101,696,698,1,8759,59,1,10868,4,3,103,105,116,709,717,722,114,117,101,110,116,59,1,8801,110,116,59,1,8751,111,117,114,73,110,116,101,103,114,97,108,59,1,8750,4,2,102,114,742,745,59,1,8450,111,100,117,99,116,59,1,8720,110,116,101,114,67,108,111,99,107,119,105,115,101,67,111,110,116,111,117,114,73,110,116,101,103,114,97,108,59,1,8755,111,115,115,59,1,10799,99,114,59,3,55349,56478,112,4,2,59,67,803,805,1,8915,97,112,59,1,8781,4,11,68,74,83,90,97,99,101,102,105,111,115,834,850,855,860,865,888,903,916,921,1011,1415,4,2,59,111,840,842,1,8517,116,114,97,104,100,59,1,10513,99,121,59,1,1026,99,121,59,1,1029,99,121,59,1,1039,4,3,103,114,115,873,879,883,103,101,114,59,1,8225,114,59,1,8609,104,118,59,1,10980,4,2,97,121,894,900,114,111,110,59,1,270,59,1,1044,108,4,2,59,116,910,912,1,8711,97,59,1,916,114,59,3,55349,56583,4,2,97,102,927,998,4,2,99,109,933,992,114,105,116,105,99,97,108,4,4,65,68,71,84,950,957,978,985,99,117,116,101,59,1,180,111,4,2,116,117,964,967,59,1,729,98,108,101,65,99,117,116,101,59,1,733,114,97,118,101,59,1,96,105,108,100,101,59,1,732,111,110,100,59,1,8900,102,101,114,101,110,116,105,97,108,68,59,1,8518,4,4,112,116,117,119,1021,1026,1048,1249,102,59,3,55349,56635,4,3,59,68,69,1034,1036,1041,1,168,111,116,59,1,8412,113,117,97,108,59,1,8784,98,108,101,4,6,67,68,76,82,85,86,1065,1082,1101,1189,1211,1236,111,110,116,111,117,114,73,110,116,101,103,114,97,108,59,1,8751,111,4,2,116,119,1089,1092,59,1,168,110,65,114,114,111,119,59,1,8659,4,2,101,111,1107,1141,102,116,4,3,65,82,84,1117,1124,1136,114,114,111,119,59,1,8656,105,103,104,116,65,114,114,111,119,59,1,8660,101,101,59,1,10980,110,103,4,2,76,82,1149,1177,101,102,116,4,2,65,82,1158,1165,114,114,111,119,59,1,10232,105,103,104,116,65,114,114,111,119,59,1,10234,105,103,104,116,65,114,114,111,119,59,1,10233,105,103,104,116,4,2,65,84,1199,1206,114,114,111,119,59,1,8658,101,101,59,1,8872,112,4,2,65,68,1218,1225,114,114,111,119,59,1,8657,111,119,110,65,114,114,111,119,59,1,8661,101,114,116,105,99,97,108,66,97,114,59,1,8741,110,4,6,65,66,76,82,84,97,1264,1292,1299,1352,1391,1408,114,114,111,119,4,3,59,66,85,1276,1278,1283,1,8595,97,114,59,1,10515,112,65,114,114,111,119,59,1,8693,114,101,118,101,59,1,785,101,102,116,4,3,82,84,86,1310,1323,1334,105,103,104,116,86,101,99,116,111,114,59,1,10576,101,101,86,101,99,116,111,114,59,1,10590,101,99,116,111,114,4,2,59,66,1345,1347,1,8637,97,114,59,1,10582,105,103,104,116,4,2,84,86,1362,1373,101,101,86,101,99,116,111,114,59,1,10591,101,99,116,111,114,4,2,59,66,1384,1386,1,8641,97,114,59,1,10583,101,101,4,2,59,65,1399,1401,1,8868,114,114,111,119,59,1,8615,114,114,111,119,59,1,8659,4,2,99,116,1421,1426,114,59,3,55349,56479,114,111,107,59,1,272,4,16,78,84,97,99,100,102,103,108,109,111,112,113,115,116,117,120,1466,1470,1478,1489,1515,1520,1525,1536,1544,1593,1609,1617,1650,1664,1668,1677,71,59,1,330,72,5,208,1,59,1476,1,208,99,117,116,101,5,201,1,59,1487,1,201,4,3,97,105,121,1497,1503,1512,114,111,110,59,1,282,114,99,5,202,1,59,1510,1,202,59,1,1069,111,116,59,1,278,114,59,3,55349,56584,114,97,118,101,5,200,1,59,1534,1,200,101,109,101,110,116,59,1,8712,4,2,97,112,1550,1555,99,114,59,1,274,116,121,4,2,83,86,1563,1576,109,97,108,108,83,113,117,97,114,101,59,1,9723,101,114,121,83,109,97,108,108,83,113,117,97,114,101,59,1,9643,4,2,103,112,1599,1604,111,110,59,1,280,102,59,3,55349,56636,115,105,108,111,110,59,1,917,117,4,2,97,105,1624,1640,108,4,2,59,84,1631,1633,1,10869,105,108,100,101,59,1,8770,108,105,98,114,105,117,109,59,1,8652,4,2,99,105,1656,1660,114,59,1,8496,109,59,1,10867,97,59,1,919,109,108,5,203,1,59,1675,1,203,4,2,105,112,1683,1689,115,116,115,59,1,8707,111,110,101,110,116,105,97,108,69,59,1,8519,4,5,99,102,105,111,115,1713,1717,1722,1762,1791,121,59,1,1060,114,59,3,55349,56585,108,108,101,100,4,2,83,86,1732,1745,109,97,108,108,83,113,117,97,114,101,59,1,9724,101,114,121,83,109,97,108,108,83,113,117,97,114,101,59,1,9642,4,3,112,114,117,1770,1775,1781,102,59,3,55349,56637,65,108,108,59,1,8704,114,105,101,114,116,114,102,59,1,8497,99,114,59,1,8497,4,12,74,84,97,98,99,100,102,103,111,114,115,116,1822,1827,1834,1848,1855,1877,1882,1887,1890,1896,1978,1984,99,121,59,1,1027,5,62,1,59,1832,1,62,109,109,97,4,2,59,100,1843,1845,1,915,59,1,988,114,101,118,101,59,1,286,4,3,101,105,121,1863,1869,1874,100,105,108,59,1,290,114,99,59,1,284,59,1,1043,111,116,59,1,288,114,59,3,55349,56586,59,1,8921,112,102,59,3,55349,56638,101,97,116,101,114,4,6,69,70,71,76,83,84,1915,1933,1944,1953,1959,1971,113,117,97,108,4,2,59,76,1925,1927,1,8805,101,115,115,59,1,8923,117,108,108,69,113,117,97,108,59,1,8807,114,101,97,116,101,114,59,1,10914,101,115,115,59,1,8823,108,97,110,116,69,113,117,97,108,59,1,10878,105,108,100,101,59,1,8819,99,114,59,3,55349,56482,59,1,8811,4,8,65,97,99,102,105,111,115,117,2005,2012,2026,2032,2036,2049,2073,2089,82,68,99,121,59,1,1066,4,2,99,116,2018,2023,101,107,59,1,711,59,1,94,105,114,99,59,1,292,114,59,1,8460,108,98,101,114,116,83,112,97,99,101,59,1,8459,4,2,112,114,2055,2059,102,59,1,8461,105,122,111,110,116,97,108,76,105,110,101,59,1,9472,4,2,99,116,2079,2083,114,59,1,8459,114,111,107,59,1,294,109,112,4,2,68,69,2097,2107,111,119,110,72,117,109,112,59,1,8782,113,117,97,108,59,1,8783,4,14,69,74,79,97,99,100,102,103,109,110,111,115,116,117,2144,2149,2155,2160,2171,2189,2194,2198,2209,2245,2307,2329,2334,2341,99,121,59,1,1045,108,105,103,59,1,306,99,121,59,1,1025,99,117,116,101,5,205,1,59,2169,1,205,4,2,105,121,2177,2186,114,99,5,206,1,59,2184,1,206,59,1,1048,111,116,59,1,304,114,59,1,8465,114,97,118,101,5,204,1,59,2207,1,204,4,3,59,97,112,2217,2219,2238,1,8465,4,2,99,103,2225,2229,114,59,1,298,105,110,97,114,121,73,59,1,8520,108,105,101,115,59,1,8658,4,2,116,118,2251,2281,4,2,59,101,2257,2259,1,8748,4,2,103,114,2265,2271,114,97,108,59,1,8747,115,101,99,116,105,111,110,59,1,8898,105,115,105,98,108,101,4,2,67,84,2293,2300,111,109,109,97,59,1,8291,105,109,101,115,59,1,8290,4,3,103,112,116,2315,2320,2325,111,110,59,1,302,102,59,3,55349,56640,97,59,1,921,99,114,59,1,8464,105,108,100,101,59,1,296,4,2,107,109,2347,2352,99,121,59,1,1030,108,5,207,1,59,2358,1,207,4,5,99,102,111,115,117,2372,2386,2391,2397,2414,4,2,105,121,2378,2383,114,99,59,1,308,59,1,1049,114,59,3,55349,56589,112,102,59,3,55349,56641,4,2,99,101,2403,2408,114,59,3,55349,56485,114,99,121,59,1,1032,107,99,121,59,1,1028,4,7,72,74,97,99,102,111,115,2436,2441,2446,2452,2467,2472,2478,99,121,59,1,1061,99,121,59,1,1036,112,112,97,59,1,922,4,2,101,121,2458,2464,100,105,108,59,1,310,59,1,1050,114,59,3,55349,56590,112,102,59,3,55349,56642,99,114,59,3,55349,56486,4,11,74,84,97,99,101,102,108,109,111,115,116,2508,2513,2520,2562,2585,2981,2986,3004,3011,3146,3167,99,121,59,1,1033,5,60,1,59,2518,1,60,4,5,99,109,110,112,114,2532,2538,2544,2548,2558,117,116,101,59,1,313,98,100,97,59,1,923,103,59,1,10218,108,97,99,101,116,114,102,59,1,8466,114,59,1,8606,4,3,97,101,121,2570,2576,2582,114,111,110,59,1,317,100,105,108,59,1,315,59,1,1051,4,2,102,115,2591,2907,116,4,10,65,67,68,70,82,84,85,86,97,114,2614,2663,2672,2728,2735,2760,2820,2870,2888,2895,4,2,110,114,2620,2633,103,108,101,66,114,97,99,107,101,116,59,1,10216,114,111,119,4,3,59,66,82,2644,2646,2651,1,8592,97,114,59,1,8676,105,103,104,116,65,114,114,111,119,59,1,8646,101,105,108,105,110,103,59,1,8968,111,4,2,117,119,2679,2692,98,108,101,66,114,97,99,107,101,116,59,1,10214,110,4,2,84,86,2699,2710,101,101,86,101,99,116,111,114,59,1,10593,101,99,116,111,114,4,2,59,66,2721,2723,1,8643,97,114,59,1,10585,108,111,111,114,59,1,8970,105,103,104,116,4,2,65,86,2745,2752,114,114,111,119,59,1,8596,101,99,116,111,114,59,1,10574,4,2,101,114,2766,2792,101,4,3,59,65,86,2775,2777,2784,1,8867,114,114,111,119,59,1,8612,101,99,116,111,114,59,1,10586,105,97,110,103,108,101,4,3,59,66,69,2806,2808,2813,1,8882,97,114,59,1,10703,113,117,97,108,59,1,8884,112,4,3,68,84,86,2829,2841,2852,111,119,110,86,101,99,116,111,114,59,1,10577,101,101,86,101,99,116,111,114,59,1,10592,101,99,116,111,114,4,2,59,66,2863,2865,1,8639,97,114,59,1,10584,101,99,116,111,114,4,2,59,66,2881,2883,1,8636,97,114,59,1,10578,114,114,111,119,59,1,8656,105,103,104,116,97,114,114,111,119,59,1,8660,115,4,6,69,70,71,76,83,84,2922,2936,2947,2956,2962,2974,113,117,97,108,71,114,101,97,116,101,114,59,1,8922,117,108,108,69,113,117,97,108,59,1,8806,114,101,97,116,101,114,59,1,8822,101,115,115,59,1,10913,108,97,110,116,69,113,117,97,108,59,1,10877,105,108,100,101,59,1,8818,114,59,3,55349,56591,4,2,59,101,2992,2994,1,8920,102,116,97,114,114,111,119,59,1,8666,105,100,111,116,59,1,319,4,3,110,112,119,3019,3110,3115,103,4,4,76,82,108,114,3030,3058,3070,3098,101,102,116,4,2,65,82,3039,3046,114,114,111,119,59,1,10229,105,103,104,116,65,114,114,111,119,59,1,10231,105,103,104,116,65,114,114,111,119,59,1,10230,101,102,116,4,2,97,114,3079,3086,114,114,111,119,59,1,10232,105,103,104,116,97,114,114,111,119,59,1,10234,105,103,104,116,97,114,114,111,119,59,1,10233,102,59,3,55349,56643,101,114,4,2,76,82,3123,3134,101,102,116,65,114,114,111,119,59,1,8601,105,103,104,116,65,114,114,111,119,59,1,8600,4,3,99,104,116,3154,3158,3161,114,59,1,8466,59,1,8624,114,111,107,59,1,321,59,1,8810,4,8,97,99,101,102,105,111,115,117,3188,3192,3196,3222,3227,3237,3243,3248,112,59,1,10501,121,59,1,1052,4,2,100,108,3202,3213,105,117,109,83,112,97,99,101,59,1,8287,108,105,110,116,114,102,59,1,8499,114,59,3,55349,56592,110,117,115,80,108,117,115,59,1,8723,112,102,59,3,55349,56644,99,114,59,1,8499,59,1,924,4,9,74,97,99,101,102,111,115,116,117,3271,3276,3283,3306,3422,3427,4120,4126,4137,99,121,59,1,1034,99,117,116,101,59,1,323,4,3,97,101,121,3291,3297,3303,114,111,110,59,1,327,100,105,108,59,1,325,59,1,1053,4,3,103,115,119,3314,3380,3415,97,116,105,118,101,4,3,77,84,86,3327,3340,3365,101,100,105,117,109,83,112,97,99,101,59,1,8203,104,105,4,2,99,110,3348,3357,107,83,112,97,99,101,59,1,8203,83,112,97,99,101,59,1,8203,101,114,121,84,104,105,110,83,112,97,99,101,59,1,8203,116,101,100,4,2,71,76,3389,3405,114,101,97,116,101,114,71,114,101,97,116,101,114,59,1,8811,101,115,115,76,101,115,115,59,1,8810,76,105,110,101,59,1,10,114,59,3,55349,56593,4,4,66,110,112,116,3437,3444,3460,3464,114,101,97,107,59,1,8288,66,114,101,97,107,105,110,103,83,112,97,99,101,59,1,160,102,59,1,8469,4,13,59,67,68,69,71,72,76,78,80,82,83,84,86,3492,3494,3517,3536,3578,3657,3685,3784,3823,3860,3915,4066,4107,1,10988,4,2,111,117,3500,3510,110,103,114,117,101,110,116,59,1,8802,112,67,97,112,59,1,8813,111,117,98,108,101,86,101,114,116,105,99,97,108,66,97,114,59,1,8742,4,3,108,113,120,3544,3552,3571,101,109,101,110,116,59,1,8713,117,97,108,4,2,59,84,3561,3563,1,8800,105,108,100,101,59,3,8770,824,105,115,116,115,59,1,8708,114,101,97,116,101,114,4,7,59,69,70,71,76,83,84,3600,3602,3609,3621,3631,3637,3650,1,8815,113,117,97,108,59,1,8817,117,108,108,69,113,117,97,108,59,3,8807,824,114,101,97,116,101,114,59,3,8811,824,101,115,115,59,1,8825,108,97,110,116,69,113,117,97,108,59,3,10878,824,105,108,100,101,59,1,8821,117,109,112,4,2,68,69,3666,3677,111,119,110,72,117,109,112,59,3,8782,824,113,117,97,108,59,3,8783,824,101,4,2,102,115,3692,3724,116,84,114,105,97,110,103,108,101,4,3,59,66,69,3709,3711,3717,1,8938,97,114,59,3,10703,824,113,117,97,108,59,1,8940,115,4,6,59,69,71,76,83,84,3739,3741,3748,3757,3764,3777,1,8814,113,117,97,108,59,1,8816,114,101,97,116,101,114,59,1,8824,101,115,115,59,3,8810,824,108,97,110,116,69,113,117,97,108,59,3,10877,824,105,108,100,101,59,1,8820,101,115,116,101,100,4,2,71,76,3795,3812,114,101,97,116,101,114,71,114,101,97,116,101,114,59,3,10914,824,101,115,115,76,101,115,115,59,3,10913,824,114,101,99,101,100,101,115,4,3,59,69,83,3838,3840,3848,1,8832,113,117,97,108,59,3,10927,824,108,97,110,116,69,113,117,97,108,59,1,8928,4,2,101,105,3866,3881,118,101,114,115,101,69,108,101,109,101,110,116,59,1,8716,103,104,116,84,114,105,97,110,103,108,101,4,3,59,66,69,3900,3902,3908,1,8939,97,114,59,3,10704,824,113,117,97,108,59,1,8941,4,2,113,117,3921,3973,117,97,114,101,83,117,4,2,98,112,3933,3952,115,101,116,4,2,59,69,3942,3945,3,8847,824,113,117,97,108,59,1,8930,101,114,115,101,116,4,2,59,69,3963,3966,3,8848,824,113,117,97,108,59,1,8931,4,3,98,99,112,3981,4e3,4045,115,101,116,4,2,59,69,3990,3993,3,8834,8402,113,117,97,108,59,1,8840,99,101,101,100,115,4,4,59,69,83,84,4015,4017,4025,4037,1,8833,113,117,97,108,59,3,10928,824,108,97,110,116,69,113,117,97,108,59,1,8929,105,108,100,101,59,3,8831,824,101,114,115,101,116,4,2,59,69,4056,4059,3,8835,8402,113,117,97,108,59,1,8841,105,108,100,101,4,4,59,69,70,84,4080,4082,4089,4100,1,8769,113,117,97,108,59,1,8772,117,108,108,69,113,117,97,108,59,1,8775,105,108,100,101,59,1,8777,101,114,116,105,99,97,108,66,97,114,59,1,8740,99,114,59,3,55349,56489,105,108,100,101,5,209,1,59,4135,1,209,59,1,925,4,14,69,97,99,100,102,103,109,111,112,114,115,116,117,118,4170,4176,4187,4205,4212,4217,4228,4253,4259,4292,4295,4316,4337,4346,108,105,103,59,1,338,99,117,116,101,5,211,1,59,4185,1,211,4,2,105,121,4193,4202,114,99,5,212,1,59,4200,1,212,59,1,1054,98,108,97,99,59,1,336,114,59,3,55349,56594,114,97,118,101,5,210,1,59,4226,1,210,4,3,97,101,105,4236,4241,4246,99,114,59,1,332,103,97,59,1,937,99,114,111,110,59,1,927,112,102,59,3,55349,56646,101,110,67,117,114,108,121,4,2,68,81,4272,4285,111,117,98,108,101,81,117,111,116,101,59,1,8220,117,111,116,101,59,1,8216,59,1,10836,4,2,99,108,4301,4306,114,59,3,55349,56490,97,115,104,5,216,1,59,4314,1,216,105,4,2,108,109,4323,4332,100,101,5,213,1,59,4330,1,213,101,115,59,1,10807,109,108,5,214,1,59,4344,1,214,101,114,4,2,66,80,4354,4380,4,2,97,114,4360,4364,114,59,1,8254,97,99,4,2,101,107,4372,4375,59,1,9182,101,116,59,1,9140,97,114,101,110,116,104,101,115,105,115,59,1,9180,4,9,97,99,102,104,105,108,111,114,115,4413,4422,4426,4431,4435,4438,4448,4471,4561,114,116,105,97,108,68,59,1,8706,121,59,1,1055,114,59,3,55349,56595,105,59,1,934,59,1,928,117,115,77,105,110,117,115,59,1,177,4,2,105,112,4454,4467,110,99,97,114,101,112,108,97,110,101,59,1,8460,102,59,1,8473,4,4,59,101,105,111,4481,4483,4526,4531,1,10939,99,101,100,101,115,4,4,59,69,83,84,4498,4500,4507,4519,1,8826,113,117,97,108,59,1,10927,108,97,110,116,69,113,117,97,108,59,1,8828,105,108,100,101,59,1,8830,109,101,59,1,8243,4,2,100,112,4537,4543,117,99,116,59,1,8719,111,114,116,105,111,110,4,2,59,97,4555,4557,1,8759,108,59,1,8733,4,2,99,105,4567,4572,114,59,3,55349,56491,59,1,936,4,4,85,102,111,115,4585,4594,4599,4604,79,84,5,34,1,59,4592,1,34,114,59,3,55349,56596,112,102,59,1,8474,99,114,59,3,55349,56492,4,12,66,69,97,99,101,102,104,105,111,114,115,117,4636,4642,4650,4681,4704,4763,4767,4771,5047,5069,5081,5094,97,114,114,59,1,10512,71,5,174,1,59,4648,1,174,4,3,99,110,114,4658,4664,4668,117,116,101,59,1,340,103,59,1,10219,114,4,2,59,116,4675,4677,1,8608,108,59,1,10518,4,3,97,101,121,4689,4695,4701,114,111,110,59,1,344,100,105,108,59,1,342,59,1,1056,4,2,59,118,4710,4712,1,8476,101,114,115,101,4,2,69,85,4722,4748,4,2,108,113,4728,4736,101,109,101,110,116,59,1,8715,117,105,108,105,98,114,105,117,109,59,1,8651,112,69,113,117,105,108,105,98,114,105,117,109,59,1,10607,114,59,1,8476,111,59,1,929,103,104,116,4,8,65,67,68,70,84,85,86,97,4792,4840,4849,4905,4912,4972,5022,5040,4,2,110,114,4798,4811,103,108,101,66,114,97,99,107,101,116,59,1,10217,114,111,119,4,3,59,66,76,4822,4824,4829,1,8594,97,114,59,1,8677,101,102,116,65,114,114,111,119,59,1,8644,101,105,108,105,110,103,59,1,8969,111,4,2,117,119,4856,4869,98,108,101,66,114,97,99,107,101,116,59,1,10215,110,4,2,84,86,4876,4887,101,101,86,101,99,116,111,114,59,1,10589,101,99,116,111,114,4,2,59,66,4898,4900,1,8642,97,114,59,1,10581,108,111,111,114,59,1,8971,4,2,101,114,4918,4944,101,4,3,59,65,86,4927,4929,4936,1,8866,114,114,111,119,59,1,8614,101,99,116,111,114,59,1,10587,105,97,110,103,108,101,4,3,59,66,69,4958,4960,4965,1,8883,97,114,59,1,10704,113,117,97,108,59,1,8885,112,4,3,68,84,86,4981,4993,5004,111,119,110,86,101,99,116,111,114,59,1,10575,101,101,86,101,99,116,111,114,59,1,10588,101,99,116,111,114,4,2,59,66,5015,5017,1,8638,97,114,59,1,10580,101,99,116,111,114,4,2,59,66,5033,5035,1,8640,97,114,59,1,10579,114,114,111,119,59,1,8658,4,2,112,117,5053,5057,102,59,1,8477,110,100,73,109,112,108,105,101,115,59,1,10608,105,103,104,116,97,114,114,111,119,59,1,8667,4,2,99,104,5087,5091,114,59,1,8475,59,1,8625,108,101,68,101,108,97,121,101,100,59,1,10740,4,13,72,79,97,99,102,104,105,109,111,113,115,116,117,5134,5150,5157,5164,5198,5203,5259,5265,5277,5283,5374,5380,5385,4,2,67,99,5140,5146,72,99,121,59,1,1065,121,59,1,1064,70,84,99,121,59,1,1068,99,117,116,101,59,1,346,4,5,59,97,101,105,121,5176,5178,5184,5190,5195,1,10940,114,111,110,59,1,352,100,105,108,59,1,350,114,99,59,1,348,59,1,1057,114,59,3,55349,56598,111,114,116,4,4,68,76,82,85,5216,5227,5238,5250,111,119,110,65,114,114,111,119,59,1,8595,101,102,116,65,114,114,111,119,59,1,8592,105,103,104,116,65,114,114,111,119,59,1,8594,112,65,114,114,111,119,59,1,8593,103,109,97,59,1,931,97,108,108,67,105,114,99,108,101,59,1,8728,112,102,59,3,55349,56650,4,2,114,117,5289,5293,116,59,1,8730,97,114,101,4,4,59,73,83,85,5306,5308,5322,5367,1,9633,110,116,101,114,115,101,99,116,105,111,110,59,1,8851,117,4,2,98,112,5329,5347,115,101,116,4,2,59,69,5338,5340,1,8847,113,117,97,108,59,1,8849,101,114,115,101,116,4,2,59,69,5358,5360,1,8848,113,117,97,108,59,1,8850,110,105,111,110,59,1,8852,99,114,59,3,55349,56494,97,114,59,1,8902,4,4,98,99,109,112,5395,5420,5475,5478,4,2,59,115,5401,5403,1,8912,101,116,4,2,59,69,5411,5413,1,8912,113,117,97,108,59,1,8838,4,2,99,104,5426,5468,101,101,100,115,4,4,59,69,83,84,5440,5442,5449,5461,1,8827,113,117,97,108,59,1,10928,108,97,110,116,69,113,117,97,108,59,1,8829,105,108,100,101,59,1,8831,84,104,97,116,59,1,8715,59,1,8721,4,3,59,101,115,5486,5488,5507,1,8913,114,115,101,116,4,2,59,69,5498,5500,1,8835,113,117,97,108,59,1,8839,101,116,59,1,8913,4,11,72,82,83,97,99,102,104,105,111,114,115,5536,5546,5552,5567,5579,5602,5607,5655,5695,5701,5711,79,82,78,5,222,1,59,5544,1,222,65,68,69,59,1,8482,4,2,72,99,5558,5563,99,121,59,1,1035,121,59,1,1062,4,2,98,117,5573,5576,59,1,9,59,1,932,4,3,97,101,121,5587,5593,5599,114,111,110,59,1,356,100,105,108,59,1,354,59,1,1058,114,59,3,55349,56599,4,2,101,105,5613,5631,4,2,114,116,5619,5627,101,102,111,114,101,59,1,8756,97,59,1,920,4,2,99,110,5637,5647,107,83,112,97,99,101,59,3,8287,8202,83,112,97,99,101,59,1,8201,108,100,101,4,4,59,69,70,84,5668,5670,5677,5688,1,8764,113,117,97,108,59,1,8771,117,108,108,69,113,117,97,108,59,1,8773,105,108,100,101,59,1,8776,112,102,59,3,55349,56651,105,112,108,101,68,111,116,59,1,8411,4,2,99,116,5717,5722,114,59,3,55349,56495,114,111,107,59,1,358,4,14,97,98,99,100,102,103,109,110,111,112,114,115,116,117,5758,5789,5805,5823,5830,5835,5846,5852,5921,5937,6089,6095,6101,6108,4,2,99,114,5764,5774,117,116,101,5,218,1,59,5772,1,218,114,4,2,59,111,5781,5783,1,8607,99,105,114,59,1,10569,114,4,2,99,101,5796,5800,121,59,1,1038,118,101,59,1,364,4,2,105,121,5811,5820,114,99,5,219,1,59,5818,1,219,59,1,1059,98,108,97,99,59,1,368,114,59,3,55349,56600,114,97,118,101,5,217,1,59,5844,1,217,97,99,114,59,1,362,4,2,100,105,5858,5905,101,114,4,2,66,80,5866,5892,4,2,97,114,5872,5876,114,59,1,95,97,99,4,2,101,107,5884,5887,59,1,9183,101,116,59,1,9141,97,114,101,110,116,104,101,115,105,115,59,1,9181,111,110,4,2,59,80,5913,5915,1,8899,108,117,115,59,1,8846,4,2,103,112,5927,5932,111,110,59,1,370,102,59,3,55349,56652,4,8,65,68,69,84,97,100,112,115,5955,5985,5996,6009,6026,6033,6044,6075,114,114,111,119,4,3,59,66,68,5967,5969,5974,1,8593,97,114,59,1,10514,111,119,110,65,114,114,111,119,59,1,8645,111,119,110,65,114,114,111,119,59,1,8597,113,117,105,108,105,98,114,105,117,109,59,1,10606,101,101,4,2,59,65,6017,6019,1,8869,114,114,111,119,59,1,8613,114,114,111,119,59,1,8657,111,119,110,97,114,114,111,119,59,1,8661,101,114,4,2,76,82,6052,6063,101,102,116,65,114,114,111,119,59,1,8598,105,103,104,116,65,114,114,111,119,59,1,8599,105,4,2,59,108,6082,6084,1,978,111,110,59,1,933,105,110,103,59,1,366,99,114,59,3,55349,56496,105,108,100,101,59,1,360,109,108,5,220,1,59,6115,1,220,4,9,68,98,99,100,101,102,111,115,118,6137,6143,6148,6152,6166,6250,6255,6261,6267,97,115,104,59,1,8875,97,114,59,1,10987,121,59,1,1042,97,115,104,4,2,59,108,6161,6163,1,8873,59,1,10982,4,2,101,114,6172,6175,59,1,8897,4,3,98,116,121,6183,6188,6238,97,114,59,1,8214,4,2,59,105,6194,6196,1,8214,99,97,108,4,4,66,76,83,84,6209,6214,6220,6231,97,114,59,1,8739,105,110,101,59,1,124,101,112,97,114,97,116,111,114,59,1,10072,105,108,100,101,59,1,8768,84,104,105,110,83,112,97,99,101,59,1,8202,114,59,3,55349,56601,112,102,59,3,55349,56653,99,114,59,3,55349,56497,100,97,115,104,59,1,8874,4,5,99,101,102,111,115,6286,6292,6298,6303,6309,105,114,99,59,1,372,100,103,101,59,1,8896,114,59,3,55349,56602,112,102,59,3,55349,56654,99,114,59,3,55349,56498,4,4,102,105,111,115,6325,6330,6333,6339,114,59,3,55349,56603,59,1,926,112,102,59,3,55349,56655,99,114,59,3,55349,56499,4,9,65,73,85,97,99,102,111,115,117,6365,6370,6375,6380,6391,6405,6410,6416,6422,99,121,59,1,1071,99,121,59,1,1031,99,121,59,1,1070,99,117,116,101,5,221,1,59,6389,1,221,4,2,105,121,6397,6402,114,99,59,1,374,59,1,1067,114,59,3,55349,56604,112,102,59,3,55349,56656,99,114,59,3,55349,56500,109,108,59,1,376,4,8,72,97,99,100,101,102,111,115,6445,6450,6457,6472,6477,6501,6505,6510,99,121,59,1,1046,99,117,116,101,59,1,377,4,2,97,121,6463,6469,114,111,110,59,1,381,59,1,1047,111,116,59,1,379,4,2,114,116,6483,6497,111,87,105,100,116,104,83,112,97,99,101,59,1,8203,97,59,1,918,114,59,1,8488,112,102,59,1,8484,99,114,59,3,55349,56501,4,16,97,98,99,101,102,103,108,109,110,111,112,114,115,116,117,119,6550,6561,6568,6612,6622,6634,6645,6672,6699,6854,6870,6923,6933,6963,6974,6983,99,117,116,101,5,225,1,59,6559,1,225,114,101,118,101,59,1,259,4,6,59,69,100,105,117,121,6582,6584,6588,6591,6600,6609,1,8766,59,3,8766,819,59,1,8767,114,99,5,226,1,59,6598,1,226,116,101,5,180,1,59,6607,1,180,59,1,1072,108,105,103,5,230,1,59,6620,1,230,4,2,59,114,6628,6630,1,8289,59,3,55349,56606,114,97,118,101,5,224,1,59,6643,1,224,4,2,101,112,6651,6667,4,2,102,112,6657,6663,115,121,109,59,1,8501,104,59,1,8501,104,97,59,1,945,4,2,97,112,6678,6692,4,2,99,108,6684,6688,114,59,1,257,103,59,1,10815,5,38,1,59,6697,1,38,4,2,100,103,6705,6737,4,5,59,97,100,115,118,6717,6719,6724,6727,6734,1,8743,110,100,59,1,10837,59,1,10844,108,111,112,101,59,1,10840,59,1,10842,4,7,59,101,108,109,114,115,122,6753,6755,6758,6762,6814,6835,6848,1,8736,59,1,10660,101,59,1,8736,115,100,4,2,59,97,6770,6772,1,8737,4,8,97,98,99,100,101,102,103,104,6790,6793,6796,6799,6802,6805,6808,6811,59,1,10664,59,1,10665,59,1,10666,59,1,10667,59,1,10668,59,1,10669,59,1,10670,59,1,10671,116,4,2,59,118,6821,6823,1,8735,98,4,2,59,100,6830,6832,1,8894,59,1,10653,4,2,112,116,6841,6845,104,59,1,8738,59,1,197,97,114,114,59,1,9084,4,2,103,112,6860,6865,111,110,59,1,261,102,59,3,55349,56658,4,7,59,69,97,101,105,111,112,6886,6888,6891,6897,6900,6904,6908,1,8776,59,1,10864,99,105,114,59,1,10863,59,1,8778,100,59,1,8779,115,59,1,39,114,111,120,4,2,59,101,6917,6919,1,8776,113,59,1,8778,105,110,103,5,229,1,59,6931,1,229,4,3,99,116,121,6941,6946,6949,114,59,3,55349,56502,59,1,42,109,112,4,2,59,101,6957,6959,1,8776,113,59,1,8781,105,108,100,101,5,227,1,59,6972,1,227,109,108,5,228,1,59,6981,1,228,4,2,99,105,6989,6997,111,110,105,110,116,59,1,8755,110,116,59,1,10769,4,16,78,97,98,99,100,101,102,105,107,108,110,111,112,114,115,117,7036,7041,7119,7135,7149,7155,7219,7224,7347,7354,7463,7489,7786,7793,7814,7866,111,116,59,1,10989,4,2,99,114,7047,7094,107,4,4,99,101,112,115,7058,7064,7073,7080,111,110,103,59,1,8780,112,115,105,108,111,110,59,1,1014,114,105,109,101,59,1,8245,105,109,4,2,59,101,7088,7090,1,8765,113,59,1,8909,4,2,118,119,7100,7105,101,101,59,1,8893,101,100,4,2,59,103,7113,7115,1,8965,101,59,1,8965,114,107,4,2,59,116,7127,7129,1,9141,98,114,107,59,1,9142,4,2,111,121,7141,7146,110,103,59,1,8780,59,1,1073,113,117,111,59,1,8222,4,5,99,109,112,114,116,7167,7181,7188,7193,7199,97,117,115,4,2,59,101,7176,7178,1,8757,59,1,8757,112,116,121,118,59,1,10672,115,105,59,1,1014,110,111,117,59,1,8492,4,3,97,104,119,7207,7210,7213,59,1,946,59,1,8502,101,101,110,59,1,8812,114,59,3,55349,56607,103,4,7,99,111,115,116,117,118,119,7241,7262,7288,7305,7328,7335,7340,4,3,97,105,117,7249,7253,7258,112,59,1,8898,114,99,59,1,9711,112,59,1,8899,4,3,100,112,116,7270,7275,7281,111,116,59,1,10752,108,117,115,59,1,10753,105,109,101,115,59,1,10754,4,2,113,116,7294,7300,99,117,112,59,1,10758,97,114,59,1,9733,114,105,97,110,103,108,101,4,2,100,117,7318,7324,111,119,110,59,1,9661,112,59,1,9651,112,108,117,115,59,1,10756,101,101,59,1,8897,101,100,103,101,59,1,8896,97,114,111,119,59,1,10509,4,3,97,107,111,7362,7436,7458,4,2,99,110,7368,7432,107,4,3,108,115,116,7377,7386,7394,111,122,101,110,103,101,59,1,10731,113,117,97,114,101,59,1,9642,114,105,97,110,103,108,101,4,4,59,100,108,114,7411,7413,7419,7425,1,9652,111,119,110,59,1,9662,101,102,116,59,1,9666,105,103,104,116,59,1,9656,107,59,1,9251,4,2,49,51,7442,7454,4,2,50,52,7448,7451,59,1,9618,59,1,9617,52,59,1,9619,99,107,59,1,9608,4,2,101,111,7469,7485,4,2,59,113,7475,7478,3,61,8421,117,105,118,59,3,8801,8421,116,59,1,8976,4,4,112,116,119,120,7499,7504,7517,7523,102,59,3,55349,56659,4,2,59,116,7510,7512,1,8869,111,109,59,1,8869,116,105,101,59,1,8904,4,12,68,72,85,86,98,100,104,109,112,116,117,118,7549,7571,7597,7619,7655,7660,7682,7708,7715,7721,7728,7750,4,4,76,82,108,114,7559,7562,7565,7568,59,1,9559,59,1,9556,59,1,9558,59,1,9555,4,5,59,68,85,100,117,7583,7585,7588,7591,7594,1,9552,59,1,9574,59,1,9577,59,1,9572,59,1,9575,4,4,76,82,108,114,7607,7610,7613,7616,59,1,9565,59,1,9562,59,1,9564,59,1,9561,4,7,59,72,76,82,104,108,114,7635,7637,7640,7643,7646,7649,7652,1,9553,59,1,9580,59,1,9571,59,1,9568,59,1,9579,59,1,9570,59,1,9567,111,120,59,1,10697,4,4,76,82,108,114,7670,7673,7676,7679,59,1,9557,59,1,9554,59,1,9488,59,1,9484,4,5,59,68,85,100,117,7694,7696,7699,7702,7705,1,9472,59,1,9573,59,1,9576,59,1,9516,59,1,9524,105,110,117,115,59,1,8863,108,117,115,59,1,8862,105,109,101,115,59,1,8864,4,4,76,82,108,114,7738,7741,7744,7747,59,1,9563,59,1,9560,59,1,9496,59,1,9492,4,7,59,72,76,82,104,108,114,7766,7768,7771,7774,7777,7780,7783,1,9474,59,1,9578,59,1,9569,59,1,9566,59,1,9532,59,1,9508,59,1,9500,114,105,109,101,59,1,8245,4,2,101,118,7799,7804,118,101,59,1,728,98,97,114,5,166,1,59,7812,1,166,4,4,99,101,105,111,7824,7829,7834,7846,114,59,3,55349,56503,109,105,59,1,8271,109,4,2,59,101,7841,7843,1,8765,59,1,8909,108,4,3,59,98,104,7855,7857,7860,1,92,59,1,10693,115,117,98,59,1,10184,4,2,108,109,7872,7885,108,4,2,59,101,7879,7881,1,8226,116,59,1,8226,112,4,3,59,69,101,7894,7896,7899,1,8782,59,1,10926,4,2,59,113,7905,7907,1,8783,59,1,8783,4,15,97,99,100,101,102,104,105,108,111,114,115,116,117,119,121,7942,8021,8075,8080,8121,8126,8157,8279,8295,8430,8446,8485,8491,8707,8726,4,3,99,112,114,7950,7956,8007,117,116,101,59,1,263,4,6,59,97,98,99,100,115,7970,7972,7977,7984,7998,8003,1,8745,110,100,59,1,10820,114,99,117,112,59,1,10825,4,2,97,117,7990,7994,112,59,1,10827,112,59,1,10823,111,116,59,1,10816,59,3,8745,65024,4,2,101,111,8013,8017,116,59,1,8257,110,59,1,711,4,4,97,101,105,117,8031,8046,8056,8061,4,2,112,114,8037,8041,115,59,1,10829,111,110,59,1,269,100,105,108,5,231,1,59,8054,1,231,114,99,59,1,265,112,115,4,2,59,115,8069,8071,1,10828,109,59,1,10832,111,116,59,1,267,4,3,100,109,110,8088,8097,8104,105,108,5,184,1,59,8095,1,184,112,116,121,118,59,1,10674,116,5,162,2,59,101,8112,8114,1,162,114,100,111,116,59,1,183,114,59,3,55349,56608,4,3,99,101,105,8134,8138,8154,121,59,1,1095,99,107,4,2,59,109,8146,8148,1,10003,97,114,107,59,1,10003,59,1,967,114,4,7,59,69,99,101,102,109,115,8174,8176,8179,8258,8261,8268,8273,1,9675,59,1,10691,4,3,59,101,108,8187,8189,8193,1,710,113,59,1,8791,101,4,2,97,100,8200,8223,114,114,111,119,4,2,108,114,8210,8216,101,102,116,59,1,8634,105,103,104,116,59,1,8635,4,5,82,83,97,99,100,8235,8238,8241,8246,8252,59,1,174,59,1,9416,115,116,59,1,8859,105,114,99,59,1,8858,97,115,104,59,1,8861,59,1,8791,110,105,110,116,59,1,10768,105,100,59,1,10991,99,105,114,59,1,10690,117,98,115,4,2,59,117,8288,8290,1,9827,105,116,59,1,9827,4,4,108,109,110,112,8305,8326,8376,8400,111,110,4,2,59,101,8313,8315,1,58,4,2,59,113,8321,8323,1,8788,59,1,8788,4,2,109,112,8332,8344,97,4,2,59,116,8339,8341,1,44,59,1,64,4,3,59,102,108,8352,8354,8358,1,8705,110,59,1,8728,101,4,2,109,120,8365,8371,101,110,116,59,1,8705,101,115,59,1,8450,4,2,103,105,8382,8395,4,2,59,100,8388,8390,1,8773,111,116,59,1,10861,110,116,59,1,8750,4,3,102,114,121,8408,8412,8417,59,3,55349,56660,111,100,59,1,8720,5,169,2,59,115,8424,8426,1,169,114,59,1,8471,4,2,97,111,8436,8441,114,114,59,1,8629,115,115,59,1,10007,4,2,99,117,8452,8457,114,59,3,55349,56504,4,2,98,112,8463,8474,4,2,59,101,8469,8471,1,10959,59,1,10961,4,2,59,101,8480,8482,1,10960,59,1,10962,100,111,116,59,1,8943,4,7,100,101,108,112,114,118,119,8507,8522,8536,8550,8600,8697,8702,97,114,114,4,2,108,114,8516,8519,59,1,10552,59,1,10549,4,2,112,115,8528,8532,114,59,1,8926,99,59,1,8927,97,114,114,4,2,59,112,8545,8547,1,8630,59,1,10557,4,6,59,98,99,100,111,115,8564,8566,8573,8587,8592,8596,1,8746,114,99,97,112,59,1,10824,4,2,97,117,8579,8583,112,59,1,10822,112,59,1,10826,111,116,59,1,8845,114,59,1,10821,59,3,8746,65024,4,4,97,108,114,118,8610,8623,8663,8672,114,114,4,2,59,109,8618,8620,1,8631,59,1,10556,121,4,3,101,118,119,8632,8651,8656,113,4,2,112,115,8639,8645,114,101,99,59,1,8926,117,99,99,59,1,8927,101,101,59,1,8910,101,100,103,101,59,1,8911,101,110,5,164,1,59,8670,1,164,101,97,114,114,111,119,4,2,108,114,8684,8690,101,102,116,59,1,8630,105,103,104,116,59,1,8631,101,101,59,1,8910,101,100,59,1,8911,4,2,99,105,8713,8721,111,110,105,110,116,59,1,8754,110,116,59,1,8753,108,99,116,121,59,1,9005,4,19,65,72,97,98,99,100,101,102,104,105,106,108,111,114,115,116,117,119,122,8773,8778,8783,8821,8839,8854,8887,8914,8930,8944,9036,9041,9058,9197,9227,9258,9281,9297,9305,114,114,59,1,8659,97,114,59,1,10597,4,4,103,108,114,115,8793,8799,8805,8809,103,101,114,59,1,8224,101,116,104,59,1,8504,114,59,1,8595,104,4,2,59,118,8816,8818,1,8208,59,1,8867,4,2,107,108,8827,8834,97,114,111,119,59,1,10511,97,99,59,1,733,4,2,97,121,8845,8851,114,111,110,59,1,271,59,1,1076,4,3,59,97,111,8862,8864,8880,1,8518,4,2,103,114,8870,8876,103,101,114,59,1,8225,114,59,1,8650,116,115,101,113,59,1,10871,4,3,103,108,109,8895,8902,8907,5,176,1,59,8900,1,176,116,97,59,1,948,112,116,121,118,59,1,10673,4,2,105,114,8920,8926,115,104,116,59,1,10623,59,3,55349,56609,97,114,4,2,108,114,8938,8941,59,1,8643,59,1,8642,4,5,97,101,103,115,118,8956,8986,8989,8996,9001,109,4,3,59,111,115,8965,8967,8983,1,8900,110,100,4,2,59,115,8975,8977,1,8900,117,105,116,59,1,9830,59,1,9830,59,1,168,97,109,109,97,59,1,989,105,110,59,1,8946,4,3,59,105,111,9009,9011,9031,1,247,100,101,5,247,2,59,111,9020,9022,1,247,110,116,105,109,101,115,59,1,8903,110,120,59,1,8903,99,121,59,1,1106,99,4,2,111,114,9048,9053,114,110,59,1,8990,111,112,59,1,8973,4,5,108,112,116,117,119,9070,9076,9081,9130,9144,108,97,114,59,1,36,102,59,3,55349,56661,4,5,59,101,109,112,115,9093,9095,9109,9116,9122,1,729,113,4,2,59,100,9102,9104,1,8784,111,116,59,1,8785,105,110,117,115,59,1,8760,108,117,115,59,1,8724,113,117,97,114,101,59,1,8865,98,108,101,98,97,114,119,101,100,103,101,59,1,8966,110,4,3,97,100,104,9153,9160,9172,114,114,111,119,59,1,8595,111,119,110,97,114,114,111,119,115,59,1,8650,97,114,112,111,111,110,4,2,108,114,9184,9190,101,102,116,59,1,8643,105,103,104,116,59,1,8642,4,2,98,99,9203,9211,107,97,114,111,119,59,1,10512,4,2,111,114,9217,9222,114,110,59,1,8991,111,112,59,1,8972,4,3,99,111,116,9235,9248,9252,4,2,114,121,9241,9245,59,3,55349,56505,59,1,1109,108,59,1,10742,114,111,107,59,1,273,4,2,100,114,9264,9269,111,116,59,1,8945,105,4,2,59,102,9276,9278,1,9663,59,1,9662,4,2,97,104,9287,9292,114,114,59,1,8693,97,114,59,1,10607,97,110,103,108,101,59,1,10662,4,2,99,105,9311,9315,121,59,1,1119,103,114,97,114,114,59,1,10239,4,18,68,97,99,100,101,102,103,108,109,110,111,112,113,114,115,116,117,120,9361,9376,9398,9439,9444,9447,9462,9495,9531,9585,9598,9614,9659,9755,9771,9792,9808,9826,4,2,68,111,9367,9372,111,116,59,1,10871,116,59,1,8785,4,2,99,115,9382,9392,117,116,101,5,233,1,59,9390,1,233,116,101,114,59,1,10862,4,4,97,105,111,121,9408,9414,9430,9436,114,111,110,59,1,283,114,4,2,59,99,9421,9423,1,8790,5,234,1,59,9428,1,234,108,111,110,59,1,8789,59,1,1101,111,116,59,1,279,59,1,8519,4,2,68,114,9453,9458,111,116,59,1,8786,59,3,55349,56610,4,3,59,114,115,9470,9472,9482,1,10906,97,118,101,5,232,1,59,9480,1,232,4,2,59,100,9488,9490,1,10902,111,116,59,1,10904,4,4,59,105,108,115,9505,9507,9515,9518,1,10905,110,116,101,114,115,59,1,9191,59,1,8467,4,2,59,100,9524,9526,1,10901,111,116,59,1,10903,4,3,97,112,115,9539,9544,9564,99,114,59,1,275,116,121,4,3,59,115,118,9554,9556,9561,1,8709,101,116,59,1,8709,59,1,8709,112,4,2,49,59,9571,9583,4,2,51,52,9577,9580,59,1,8196,59,1,8197,1,8195,4,2,103,115,9591,9594,59,1,331,112,59,1,8194,4,2,103,112,9604,9609,111,110,59,1,281,102,59,3,55349,56662,4,3,97,108,115,9622,9635,9640,114,4,2,59,115,9629,9631,1,8917,108,59,1,10723,117,115,59,1,10865,105,4,3,59,108,118,9649,9651,9656,1,949,111,110,59,1,949,59,1,1013,4,4,99,115,117,118,9669,9686,9716,9747,4,2,105,111,9675,9680,114,99,59,1,8790,108,111,110,59,1,8789,4,2,105,108,9692,9696,109,59,1,8770,97,110,116,4,2,103,108,9705,9710,116,114,59,1,10902,101,115,115,59,1,10901,4,3,97,101,105,9724,9729,9734,108,115,59,1,61,115,116,59,1,8799,118,4,2,59,68,9741,9743,1,8801,68,59,1,10872,112,97,114,115,108,59,1,10725,4,2,68,97,9761,9766,111,116,59,1,8787,114,114,59,1,10609,4,3,99,100,105,9779,9783,9788,114,59,1,8495,111,116,59,1,8784,109,59,1,8770,4,2,97,104,9798,9801,59,1,951,5,240,1,59,9806,1,240,4,2,109,114,9814,9822,108,5,235,1,59,9820,1,235,111,59,1,8364,4,3,99,105,112,9834,9838,9843,108,59,1,33,115,116,59,1,8707,4,2,101,111,9849,9859,99,116,97,116,105,111,110,59,1,8496,110,101,110,116,105,97,108,101,59,1,8519,4,12,97,99,101,102,105,106,108,110,111,112,114,115,9896,9910,9914,9921,9954,9960,9967,9989,9994,10027,10036,10164,108,108,105,110,103,100,111,116,115,101,113,59,1,8786,121,59,1,1092,109,97,108,101,59,1,9792,4,3,105,108,114,9929,9935,9950,108,105,103,59,1,64259,4,2,105,108,9941,9945,103,59,1,64256,105,103,59,1,64260,59,3,55349,56611,108,105,103,59,1,64257,108,105,103,59,3,102,106,4,3,97,108,116,9975,9979,9984,116,59,1,9837,105,103,59,1,64258,110,115,59,1,9649,111,102,59,1,402,4,2,112,114,1e4,10005,102,59,3,55349,56663,4,2,97,107,10011,10016,108,108,59,1,8704,4,2,59,118,10022,10024,1,8916,59,1,10969,97,114,116,105,110,116,59,1,10765,4,2,97,111,10042,10159,4,2,99,115,10048,10155,4,6,49,50,51,52,53,55,10062,10102,10114,10135,10139,10151,4,6,50,51,52,53,54,56,10076,10083,10086,10093,10096,10099,5,189,1,59,10081,1,189,59,1,8531,5,188,1,59,10091,1,188,59,1,8533,59,1,8537,59,1,8539,4,2,51,53,10108,10111,59,1,8532,59,1,8534,4,3,52,53,56,10122,10129,10132,5,190,1,59,10127,1,190,59,1,8535,59,1,8540,53,59,1,8536,4,2,54,56,10145,10148,59,1,8538,59,1,8541,56,59,1,8542,108,59,1,8260,119,110,59,1,8994,99,114,59,3,55349,56507,4,17,69,97,98,99,100,101,102,103,105,106,108,110,111,114,115,116,118,10206,10217,10247,10254,10268,10273,10358,10363,10374,10380,10385,10406,10458,10464,10470,10497,10610,4,2,59,108,10212,10214,1,8807,59,1,10892,4,3,99,109,112,10225,10231,10244,117,116,101,59,1,501,109,97,4,2,59,100,10239,10241,1,947,59,1,989,59,1,10886,114,101,118,101,59,1,287,4,2,105,121,10260,10265,114,99,59,1,285,59,1,1075,111,116,59,1,289,4,4,59,108,113,115,10283,10285,10288,10308,1,8805,59,1,8923,4,3,59,113,115,10296,10298,10301,1,8805,59,1,8807,108,97,110,116,59,1,10878,4,4,59,99,100,108,10318,10320,10324,10345,1,10878,99,59,1,10921,111,116,4,2,59,111,10332,10334,1,10880,4,2,59,108,10340,10342,1,10882,59,1,10884,4,2,59,101,10351,10354,3,8923,65024,115,59,1,10900,114,59,3,55349,56612,4,2,59,103,10369,10371,1,8811,59,1,8921,109,101,108,59,1,8503,99,121,59,1,1107,4,4,59,69,97,106,10395,10397,10400,10403,1,8823,59,1,10898,59,1,10917,59,1,10916,4,4,69,97,101,115,10416,10419,10434,10453,59,1,8809,112,4,2,59,112,10426,10428,1,10890,114,111,120,59,1,10890,4,2,59,113,10440,10442,1,10888,4,2,59,113,10448,10450,1,10888,59,1,8809,105,109,59,1,8935,112,102,59,3,55349,56664,97,118,101,59,1,96,4,2,99,105,10476,10480,114,59,1,8458,109,4,3,59,101,108,10489,10491,10494,1,8819,59,1,10894,59,1,10896,5,62,6,59,99,100,108,113,114,10512,10514,10527,10532,10538,10545,1,62,4,2,99,105,10520,10523,59,1,10919,114,59,1,10874,111,116,59,1,8919,80,97,114,59,1,10645,117,101,115,116,59,1,10876,4,5,97,100,101,108,115,10557,10574,10579,10599,10605,4,2,112,114,10563,10570,112,114,111,120,59,1,10886,114,59,1,10616,111,116,59,1,8919,113,4,2,108,113,10586,10592,101,115,115,59,1,8923,108,101,115,115,59,1,10892,101,115,115,59,1,8823,105,109,59,1,8819,4,2,101,110,10616,10626,114,116,110,101,113,113,59,3,8809,65024,69,59,3,8809,65024,4,10,65,97,98,99,101,102,107,111,115,121,10653,10658,10713,10718,10724,10760,10765,10786,10850,10875,114,114,59,1,8660,4,4,105,108,109,114,10668,10674,10678,10684,114,115,112,59,1,8202,102,59,1,189,105,108,116,59,1,8459,4,2,100,114,10690,10695,99,121,59,1,1098,4,3,59,99,119,10703,10705,10710,1,8596,105,114,59,1,10568,59,1,8621,97,114,59,1,8463,105,114,99,59,1,293,4,3,97,108,114,10732,10748,10754,114,116,115,4,2,59,117,10741,10743,1,9829,105,116,59,1,9829,108,105,112,59,1,8230,99,111,110,59,1,8889,114,59,3,55349,56613,115,4,2,101,119,10772,10779,97,114,111,119,59,1,10533,97,114,111,119,59,1,10534,4,5,97,109,111,112,114,10798,10803,10809,10839,10844,114,114,59,1,8703,116,104,116,59,1,8763,107,4,2,108,114,10816,10827,101,102,116,97,114,114,111,119,59,1,8617,105,103,104,116,97,114,114,111,119,59,1,8618,102,59,3,55349,56665,98,97,114,59,1,8213,4,3,99,108,116,10858,10863,10869,114,59,3,55349,56509,97,115,104,59,1,8463,114,111,107,59,1,295,4,2,98,112,10881,10887,117,108,108,59,1,8259,104,101,110,59,1,8208,4,15,97,99,101,102,103,105,106,109,110,111,112,113,115,116,117,10925,10936,10958,10977,10990,11001,11039,11045,11101,11192,11220,11226,11237,11285,11299,99,117,116,101,5,237,1,59,10934,1,237,4,3,59,105,121,10944,10946,10955,1,8291,114,99,5,238,1,59,10953,1,238,59,1,1080,4,2,99,120,10964,10968,121,59,1,1077,99,108,5,161,1,59,10975,1,161,4,2,102,114,10983,10986,59,1,8660,59,3,55349,56614,114,97,118,101,5,236,1,59,10999,1,236,4,4,59,105,110,111,11011,11013,11028,11034,1,8520,4,2,105,110,11019,11024,110,116,59,1,10764,116,59,1,8749,102,105,110,59,1,10716,116,97,59,1,8489,108,105,103,59,1,307,4,3,97,111,112,11053,11092,11096,4,3,99,103,116,11061,11065,11088,114,59,1,299,4,3,101,108,112,11073,11076,11082,59,1,8465,105,110,101,59,1,8464,97,114,116,59,1,8465,104,59,1,305,102,59,1,8887,101,100,59,1,437,4,5,59,99,102,111,116,11113,11115,11121,11136,11142,1,8712,97,114,101,59,1,8453,105,110,4,2,59,116,11129,11131,1,8734,105,101,59,1,10717,100,111,116,59,1,305,4,5,59,99,101,108,112,11154,11156,11161,11179,11186,1,8747,97,108,59,1,8890,4,2,103,114,11167,11173,101,114,115,59,1,8484,99,97,108,59,1,8890,97,114,104,107,59,1,10775,114,111,100,59,1,10812,4,4,99,103,112,116,11202,11206,11211,11216,121,59,1,1105,111,110,59,1,303,102,59,3,55349,56666,97,59,1,953,114,111,100,59,1,10812,117,101,115,116,5,191,1,59,11235,1,191,4,2,99,105,11243,11248,114,59,3,55349,56510,110,4,5,59,69,100,115,118,11261,11263,11266,11271,11282,1,8712,59,1,8953,111,116,59,1,8949,4,2,59,118,11277,11279,1,8948,59,1,8947,59,1,8712,4,2,59,105,11291,11293,1,8290,108,100,101,59,1,297,4,2,107,109,11305,11310,99,121,59,1,1110,108,5,239,1,59,11316,1,239,4,6,99,102,109,111,115,117,11332,11346,11351,11357,11363,11380,4,2,105,121,11338,11343,114,99,59,1,309,59,1,1081,114,59,3,55349,56615,97,116,104,59,1,567,112,102,59,3,55349,56667,4,2,99,101,11369,11374,114,59,3,55349,56511,114,99,121,59,1,1112,107,99,121,59,1,1108,4,8,97,99,102,103,104,106,111,115,11404,11418,11433,11438,11445,11450,11455,11461,112,112,97,4,2,59,118,11413,11415,1,954,59,1,1008,4,2,101,121,11424,11430,100,105,108,59,1,311,59,1,1082,114,59,3,55349,56616,114,101,101,110,59,1,312,99,121,59,1,1093,99,121,59,1,1116,112,102,59,3,55349,56668,99,114,59,3,55349,56512,4,23,65,66,69,72,97,98,99,100,101,102,103,104,106,108,109,110,111,112,114,115,116,117,118,11515,11538,11544,11555,11560,11721,11780,11818,11868,12136,12160,12171,12203,12208,12246,12275,12327,12509,12523,12569,12641,12732,12752,4,3,97,114,116,11523,11528,11532,114,114,59,1,8666,114,59,1,8656,97,105,108,59,1,10523,97,114,114,59,1,10510,4,2,59,103,11550,11552,1,8806,59,1,10891,97,114,59,1,10594,4,9,99,101,103,109,110,112,113,114,116,11580,11586,11594,11600,11606,11624,11627,11636,11694,117,116,101,59,1,314,109,112,116,121,118,59,1,10676,114,97,110,59,1,8466,98,100,97,59,1,955,103,4,3,59,100,108,11615,11617,11620,1,10216,59,1,10641,101,59,1,10216,59,1,10885,117,111,5,171,1,59,11634,1,171,114,4,8,59,98,102,104,108,112,115,116,11655,11657,11669,11673,11677,11681,11685,11690,1,8592,4,2,59,102,11663,11665,1,8676,115,59,1,10527,115,59,1,10525,107,59,1,8617,112,59,1,8619,108,59,1,10553,105,109,59,1,10611,108,59,1,8610,4,3,59,97,101,11702,11704,11709,1,10923,105,108,59,1,10521,4,2,59,115,11715,11717,1,10925,59,3,10925,65024,4,3,97,98,114,11729,11734,11739,114,114,59,1,10508,114,107,59,1,10098,4,2,97,107,11745,11758,99,4,2,101,107,11752,11755,59,1,123,59,1,91,4,2,101,115,11764,11767,59,1,10635,108,4,2,100,117,11774,11777,59,1,10639,59,1,10637,4,4,97,101,117,121,11790,11796,11811,11815,114,111,110,59,1,318,4,2,100,105,11802,11807,105,108,59,1,316,108,59,1,8968,98,59,1,123,59,1,1083,4,4,99,113,114,115,11828,11832,11845,11864,97,59,1,10550,117,111,4,2,59,114,11840,11842,1,8220,59,1,8222,4,2,100,117,11851,11857,104,97,114,59,1,10599,115,104,97,114,59,1,10571,104,59,1,8626,4,5,59,102,103,113,115,11880,11882,12008,12011,12031,1,8804,116,4,5,97,104,108,114,116,11895,11913,11935,11947,11996,114,114,111,119,4,2,59,116,11905,11907,1,8592,97,105,108,59,1,8610,97,114,112,111,111,110,4,2,100,117,11925,11931,111,119,110,59,1,8637,112,59,1,8636,101,102,116,97,114,114,111,119,115,59,1,8647,105,103,104,116,4,3,97,104,115,11959,11974,11984,114,114,111,119,4,2,59,115,11969,11971,1,8596,59,1,8646,97,114,112,111,111,110,115,59,1,8651,113,117,105,103,97,114,114,111,119,59,1,8621,104,114,101,101,116,105,109,101,115,59,1,8907,59,1,8922,4,3,59,113,115,12019,12021,12024,1,8804,59,1,8806,108,97,110,116,59,1,10877,4,5,59,99,100,103,115,12043,12045,12049,12070,12083,1,10877,99,59,1,10920,111,116,4,2,59,111,12057,12059,1,10879,4,2,59,114,12065,12067,1,10881,59,1,10883,4,2,59,101,12076,12079,3,8922,65024,115,59,1,10899,4,5,97,100,101,103,115,12095,12103,12108,12126,12131,112,112,114,111,120,59,1,10885,111,116,59,1,8918,113,4,2,103,113,12115,12120,116,114,59,1,8922,103,116,114,59,1,10891,116,114,59,1,8822,105,109,59,1,8818,4,3,105,108,114,12144,12150,12156,115,104,116,59,1,10620,111,111,114,59,1,8970,59,3,55349,56617,4,2,59,69,12166,12168,1,8822,59,1,10897,4,2,97,98,12177,12198,114,4,2,100,117,12184,12187,59,1,8637,4,2,59,108,12193,12195,1,8636,59,1,10602,108,107,59,1,9604,99,121,59,1,1113,4,5,59,97,99,104,116,12220,12222,12227,12235,12241,1,8810,114,114,59,1,8647,111,114,110,101,114,59,1,8990,97,114,100,59,1,10603,114,105,59,1,9722,4,2,105,111,12252,12258,100,111,116,59,1,320,117,115,116,4,2,59,97,12267,12269,1,9136,99,104,101,59,1,9136,4,4,69,97,101,115,12285,12288,12303,12322,59,1,8808,112,4,2,59,112,12295,12297,1,10889,114,111,120,59,1,10889,4,2,59,113,12309,12311,1,10887,4,2,59,113,12317,12319,1,10887,59,1,8808,105,109,59,1,8934,4,8,97,98,110,111,112,116,119,122,12345,12359,12364,12421,12446,12467,12474,12490,4,2,110,114,12351,12355,103,59,1,10220,114,59,1,8701,114,107,59,1,10214,103,4,3,108,109,114,12373,12401,12409,101,102,116,4,2,97,114,12382,12389,114,114,111,119,59,1,10229,105,103,104,116,97,114,114,111,119,59,1,10231,97,112,115,116,111,59,1,10236,105,103,104,116,97,114,114,111,119,59,1,10230,112,97,114,114,111,119,4,2,108,114,12433,12439,101,102,116,59,1,8619,105,103,104,116,59,1,8620,4,3,97,102,108,12454,12458,12462,114,59,1,10629,59,3,55349,56669,117,115,59,1,10797,105,109,101,115,59,1,10804,4,2,97,98,12480,12485,115,116,59,1,8727,97,114,59,1,95,4,3,59,101,102,12498,12500,12506,1,9674,110,103,101,59,1,9674,59,1,10731,97,114,4,2,59,108,12517,12519,1,40,116,59,1,10643,4,5,97,99,104,109,116,12535,12540,12548,12561,12564,114,114,59,1,8646,111,114,110,101,114,59,1,8991,97,114,4,2,59,100,12556,12558,1,8651,59,1,10605,59,1,8206,114,105,59,1,8895,4,6,97,99,104,105,113,116,12583,12589,12594,12597,12614,12635,113,117,111,59,1,8249,114,59,3,55349,56513,59,1,8624,109,4,3,59,101,103,12606,12608,12611,1,8818,59,1,10893,59,1,10895,4,2,98,117,12620,12623,59,1,91,111,4,2,59,114,12630,12632,1,8216,59,1,8218,114,111,107,59,1,322,5,60,8,59,99,100,104,105,108,113,114,12660,12662,12675,12680,12686,12692,12698,12705,1,60,4,2,99,105,12668,12671,59,1,10918,114,59,1,10873,111,116,59,1,8918,114,101,101,59,1,8907,109,101,115,59,1,8905,97,114,114,59,1,10614,117,101,115,116,59,1,10875,4,2,80,105,12711,12716,97,114,59,1,10646,4,3,59,101,102,12724,12726,12729,1,9667,59,1,8884,59,1,9666,114,4,2,100,117,12739,12746,115,104,97,114,59,1,10570,104,97,114,59,1,10598,4,2,101,110,12758,12768,114,116,110,101,113,113,59,3,8808,65024,69,59,3,8808,65024,4,14,68,97,99,100,101,102,104,105,108,110,111,112,115,117,12803,12809,12893,12908,12914,12928,12933,12937,13011,13025,13032,13049,13052,13069,68,111,116,59,1,8762,4,4,99,108,112,114,12819,12827,12849,12887,114,5,175,1,59,12825,1,175,4,2,101,116,12833,12836,59,1,9794,4,2,59,101,12842,12844,1,10016,115,101,59,1,10016,4,2,59,115,12855,12857,1,8614,116,111,4,4,59,100,108,117,12869,12871,12877,12883,1,8614,111,119,110,59,1,8615,101,102,116,59,1,8612,112,59,1,8613,107,101,114,59,1,9646,4,2,111,121,12899,12905,109,109,97,59,1,10793,59,1,1084,97,115,104,59,1,8212,97,115,117,114,101,100,97,110,103,108,101,59,1,8737,114,59,3,55349,56618,111,59,1,8487,4,3,99,100,110,12945,12954,12985,114,111,5,181,1,59,12952,1,181,4,4,59,97,99,100,12964,12966,12971,12976,1,8739,115,116,59,1,42,105,114,59,1,10992,111,116,5,183,1,59,12983,1,183,117,115,4,3,59,98,100,12995,12997,13e3,1,8722,59,1,8863,4,2,59,117,13006,13008,1,8760,59,1,10794,4,2,99,100,13017,13021,112,59,1,10971,114,59,1,8230,112,108,117,115,59,1,8723,4,2,100,112,13038,13044,101,108,115,59,1,8871,102,59,3,55349,56670,59,1,8723,4,2,99,116,13058,13063,114,59,3,55349,56514,112,111,115,59,1,8766,4,3,59,108,109,13077,13079,13087,1,956,116,105,109,97,112,59,1,8888,97,112,59,1,8888,4,24,71,76,82,86,97,98,99,100,101,102,103,104,105,106,108,109,111,112,114,115,116,117,118,119,13142,13165,13217,13229,13247,13330,13359,13414,13420,13508,13513,13579,13602,13626,13631,13762,13767,13855,13936,13995,14214,14285,14312,14432,4,2,103,116,13148,13152,59,3,8921,824,4,2,59,118,13158,13161,3,8811,8402,59,3,8811,824,4,3,101,108,116,13173,13200,13204,102,116,4,2,97,114,13181,13188,114,114,111,119,59,1,8653,105,103,104,116,97,114,114,111,119,59,1,8654,59,3,8920,824,4,2,59,118,13210,13213,3,8810,8402,59,3,8810,824,105,103,104,116,97,114,114,111,119,59,1,8655,4,2,68,100,13235,13241,97,115,104,59,1,8879,97,115,104,59,1,8878,4,5,98,99,110,112,116,13259,13264,13270,13275,13308,108,97,59,1,8711,117,116,101,59,1,324,103,59,3,8736,8402,4,5,59,69,105,111,112,13287,13289,13293,13298,13302,1,8777,59,3,10864,824,100,59,3,8779,824,115,59,1,329,114,111,120,59,1,8777,117,114,4,2,59,97,13316,13318,1,9838,108,4,2,59,115,13325,13327,1,9838,59,1,8469,4,2,115,117,13336,13344,112,5,160,1,59,13342,1,160,109,112,4,2,59,101,13352,13355,3,8782,824,59,3,8783,824,4,5,97,101,111,117,121,13371,13385,13391,13407,13411,4,2,112,114,13377,13380,59,1,10819,111,110,59,1,328,100,105,108,59,1,326,110,103,4,2,59,100,13399,13401,1,8775,111,116,59,3,10861,824,112,59,1,10818,59,1,1085,97,115,104,59,1,8211,4,7,59,65,97,100,113,115,120,13436,13438,13443,13466,13472,13478,13494,1,8800,114,114,59,1,8663,114,4,2,104,114,13450,13454,107,59,1,10532,4,2,59,111,13460,13462,1,8599,119,59,1,8599,111,116,59,3,8784,824,117,105,118,59,1,8802,4,2,101,105,13484,13489,97,114,59,1,10536,109,59,3,8770,824,105,115,116,4,2,59,115,13503,13505,1,8708,59,1,8708,114,59,3,55349,56619,4,4,69,101,115,116,13523,13527,13563,13568,59,3,8807,824,4,3,59,113,115,13535,13537,13559,1,8817,4,3,59,113,115,13545,13547,13551,1,8817,59,3,8807,824,108,97,110,116,59,3,10878,824,59,3,10878,824,105,109,59,1,8821,4,2,59,114,13574,13576,1,8815,59,1,8815,4,3,65,97,112,13587,13592,13597,114,114,59,1,8654,114,114,59,1,8622,97,114,59,1,10994,4,3,59,115,118,13610,13612,13623,1,8715,4,2,59,100,13618,13620,1,8956,59,1,8954,59,1,8715,99,121,59,1,1114,4,7,65,69,97,100,101,115,116,13647,13652,13656,13661,13665,13737,13742,114,114,59,1,8653,59,3,8806,824,114,114,59,1,8602,114,59,1,8229,4,4,59,102,113,115,13675,13677,13703,13725,1,8816,116,4,2,97,114,13684,13691,114,114,111,119,59,1,8602,105,103,104,116,97,114,114,111,119,59,1,8622,4,3,59,113,115,13711,13713,13717,1,8816,59,3,8806,824,108,97,110,116,59,3,10877,824,4,2,59,115,13731,13734,3,10877,824,59,1,8814,105,109,59,1,8820,4,2,59,114,13748,13750,1,8814,105,4,2,59,101,13757,13759,1,8938,59,1,8940,105,100,59,1,8740,4,2,112,116,13773,13778,102,59,3,55349,56671,5,172,3,59,105,110,13787,13789,13829,1,172,110,4,4,59,69,100,118,13800,13802,13806,13812,1,8713,59,3,8953,824,111,116,59,3,8949,824,4,3,97,98,99,13820,13823,13826,59,1,8713,59,1,8951,59,1,8950,105,4,2,59,118,13836,13838,1,8716,4,3,97,98,99,13846,13849,13852,59,1,8716,59,1,8958,59,1,8957,4,3,97,111,114,13863,13892,13899,114,4,4,59,97,115,116,13874,13876,13883,13888,1,8742,108,108,101,108,59,1,8742,108,59,3,11005,8421,59,3,8706,824,108,105,110,116,59,1,10772,4,3,59,99,101,13907,13909,13914,1,8832,117,101,59,1,8928,4,2,59,99,13920,13923,3,10927,824,4,2,59,101,13929,13931,1,8832,113,59,3,10927,824,4,4,65,97,105,116,13946,13951,13971,13982,114,114,59,1,8655,114,114,4,3,59,99,119,13961,13963,13967,1,8603,59,3,10547,824,59,3,8605,824,103,104,116,97,114,114,111,119,59,1,8603,114,105,4,2,59,101,13990,13992,1,8939,59,1,8941,4,7,99,104,105,109,112,113,117,14011,14036,14060,14080,14085,14090,14106,4,4,59,99,101,114,14021,14023,14028,14032,1,8833,117,101,59,1,8929,59,3,10928,824,59,3,55349,56515,111,114,116,4,2,109,112,14045,14050,105,100,59,1,8740,97,114,97,108,108,101,108,59,1,8742,109,4,2,59,101,14067,14069,1,8769,4,2,59,113,14075,14077,1,8772,59,1,8772,105,100,59,1,8740,97,114,59,1,8742,115,117,4,2,98,112,14098,14102,101,59,1,8930,101,59,1,8931,4,3,98,99,112,14114,14157,14171,4,4,59,69,101,115,14124,14126,14130,14133,1,8836,59,3,10949,824,59,1,8840,101,116,4,2,59,101,14141,14144,3,8834,8402,113,4,2,59,113,14151,14153,1,8840,59,3,10949,824,99,4,2,59,101,14164,14166,1,8833,113,59,3,10928,824,4,4,59,69,101,115,14181,14183,14187,14190,1,8837,59,3,10950,824,59,1,8841,101,116,4,2,59,101,14198,14201,3,8835,8402,113,4,2,59,113,14208,14210,1,8841,59,3,10950,824,4,4,103,105,108,114,14224,14228,14238,14242,108,59,1,8825,108,100,101,5,241,1,59,14236,1,241,103,59,1,8824,105,97,110,103,108,101,4,2,108,114,14254,14269,101,102,116,4,2,59,101,14263,14265,1,8938,113,59,1,8940,105,103,104,116,4,2,59,101,14279,14281,1,8939,113,59,1,8941,4,2,59,109,14291,14293,1,957,4,3,59,101,115,14301,14303,14308,1,35,114,111,59,1,8470,112,59,1,8199,4,9,68,72,97,100,103,105,108,114,115,14332,14338,14344,14349,14355,14369,14376,14408,14426,97,115,104,59,1,8877,97,114,114,59,1,10500,112,59,3,8781,8402,97,115,104,59,1,8876,4,2,101,116,14361,14365,59,3,8805,8402,59,3,62,8402,110,102,105,110,59,1,10718,4,3,65,101,116,14384,14389,14393,114,114,59,1,10498,59,3,8804,8402,4,2,59,114,14399,14402,3,60,8402,105,101,59,3,8884,8402,4,2,65,116,14414,14419,114,114,59,1,10499,114,105,101,59,3,8885,8402,105,109,59,3,8764,8402,4,3,65,97,110,14440,14445,14468,114,114,59,1,8662,114,4,2,104,114,14452,14456,107,59,1,10531,4,2,59,111,14462,14464,1,8598,119,59,1,8598,101,97,114,59,1,10535,4,18,83,97,99,100,101,102,103,104,105,108,109,111,112,114,115,116,117,118,14512,14515,14535,14560,14597,14603,14618,14643,14657,14662,14701,14741,14747,14769,14851,14877,14907,14916,59,1,9416,4,2,99,115,14521,14531,117,116,101,5,243,1,59,14529,1,243,116,59,1,8859,4,2,105,121,14541,14557,114,4,2,59,99,14548,14550,1,8858,5,244,1,59,14555,1,244,59,1,1086,4,5,97,98,105,111,115,14572,14577,14583,14587,14591,115,104,59,1,8861,108,97,99,59,1,337,118,59,1,10808,116,59,1,8857,111,108,100,59,1,10684,108,105,103,59,1,339,4,2,99,114,14609,14614,105,114,59,1,10687,59,3,55349,56620,4,3,111,114,116,14626,14630,14640,110,59,1,731,97,118,101,5,242,1,59,14638,1,242,59,1,10689,4,2,98,109,14649,14654,97,114,59,1,10677,59,1,937,110,116,59,1,8750,4,4,97,99,105,116,14672,14677,14693,14698,114,114,59,1,8634,4,2,105,114,14683,14687,114,59,1,10686,111,115,115,59,1,10683,110,101,59,1,8254,59,1,10688,4,3,97,101,105,14709,14714,14719,99,114,59,1,333,103,97,59,1,969,4,3,99,100,110,14727,14733,14736,114,111,110,59,1,959,59,1,10678,117,115,59,1,8854,112,102,59,3,55349,56672,4,3,97,101,108,14755,14759,14764,114,59,1,10679,114,112,59,1,10681,117,115,59,1,8853,4,7,59,97,100,105,111,115,118,14785,14787,14792,14831,14837,14841,14848,1,8744,114,114,59,1,8635,4,4,59,101,102,109,14802,14804,14817,14824,1,10845,114,4,2,59,111,14811,14813,1,8500,102,59,1,8500,5,170,1,59,14822,1,170,5,186,1,59,14829,1,186,103,111,102,59,1,8886,114,59,1,10838,108,111,112,101,59,1,10839,59,1,10843,4,3,99,108,111,14859,14863,14873,114,59,1,8500,97,115,104,5,248,1,59,14871,1,248,108,59,1,8856,105,4,2,108,109,14884,14893,100,101,5,245,1,59,14891,1,245,101,115,4,2,59,97,14901,14903,1,8855,115,59,1,10806,109,108,5,246,1,59,14914,1,246,98,97,114,59,1,9021,4,12,97,99,101,102,104,105,108,109,111,114,115,117,14948,14992,14996,15033,15038,15068,15090,15189,15192,15222,15427,15441,114,4,4,59,97,115,116,14959,14961,14976,14989,1,8741,5,182,2,59,108,14968,14970,1,182,108,101,108,59,1,8741,4,2,105,108,14982,14986,109,59,1,10995,59,1,11005,59,1,8706,121,59,1,1087,114,4,5,99,105,109,112,116,15009,15014,15019,15024,15027,110,116,59,1,37,111,100,59,1,46,105,108,59,1,8240,59,1,8869,101,110,107,59,1,8241,114,59,3,55349,56621,4,3,105,109,111,15046,15057,15063,4,2,59,118,15052,15054,1,966,59,1,981,109,97,116,59,1,8499,110,101,59,1,9742,4,3,59,116,118,15076,15078,15087,1,960,99,104,102,111,114,107,59,1,8916,59,1,982,4,2,97,117,15096,15119,110,4,2,99,107,15103,15115,107,4,2,59,104,15110,15112,1,8463,59,1,8462,118,59,1,8463,115,4,9,59,97,98,99,100,101,109,115,116,15140,15142,15148,15151,15156,15168,15171,15179,15184,1,43,99,105,114,59,1,10787,59,1,8862,105,114,59,1,10786,4,2,111,117,15162,15165,59,1,8724,59,1,10789,59,1,10866,110,5,177,1,59,15177,1,177,105,109,59,1,10790,119,111,59,1,10791,59,1,177,4,3,105,112,117,15200,15208,15213,110,116,105,110,116,59,1,10773,102,59,3,55349,56673,110,100,5,163,1,59,15220,1,163,4,10,59,69,97,99,101,105,110,111,115,117,15244,15246,15249,15253,15258,15334,15347,15367,15416,15421,1,8826,59,1,10931,112,59,1,10935,117,101,59,1,8828,4,2,59,99,15264,15266,1,10927,4,6,59,97,99,101,110,115,15280,15282,15290,15299,15303,15329,1,8826,112,112,114,111,120,59,1,10935,117,114,108,121,101,113,59,1,8828,113,59,1,10927,4,3,97,101,115,15311,15319,15324,112,112,114,111,120,59,1,10937,113,113,59,1,10933,105,109,59,1,8936,105,109,59,1,8830,109,101,4,2,59,115,15342,15344,1,8242,59,1,8473,4,3,69,97,115,15355,15358,15362,59,1,10933,112,59,1,10937,105,109,59,1,8936,4,3,100,102,112,15375,15378,15404,59,1,8719,4,3,97,108,115,15386,15392,15398,108,97,114,59,1,9006,105,110,101,59,1,8978,117,114,102,59,1,8979,4,2,59,116,15410,15412,1,8733,111,59,1,8733,105,109,59,1,8830,114,101,108,59,1,8880,4,2,99,105,15433,15438,114,59,3,55349,56517,59,1,968,110,99,115,112,59,1,8200,4,6,102,105,111,112,115,117,15462,15467,15472,15478,15485,15491,114,59,3,55349,56622,110,116,59,1,10764,112,102,59,3,55349,56674,114,105,109,101,59,1,8279,99,114,59,3,55349,56518,4,3,97,101,111,15499,15520,15534,116,4,2,101,105,15506,15515,114,110,105,111,110,115,59,1,8461,110,116,59,1,10774,115,116,4,2,59,101,15528,15530,1,63,113,59,1,8799,116,5,34,1,59,15540,1,34,4,21,65,66,72,97,98,99,100,101,102,104,105,108,109,110,111,112,114,115,116,117,120,15586,15609,15615,15620,15796,15855,15893,15931,15977,16001,16039,16183,16204,16222,16228,16285,16312,16318,16363,16408,16416,4,3,97,114,116,15594,15599,15603,114,114,59,1,8667,114,59,1,8658,97,105,108,59,1,10524,97,114,114,59,1,10511,97,114,59,1,10596,4,7,99,100,101,110,113,114,116,15636,15651,15656,15664,15687,15696,15770,4,2,101,117,15642,15646,59,3,8765,817,116,101,59,1,341,105,99,59,1,8730,109,112,116,121,118,59,1,10675,103,4,4,59,100,101,108,15675,15677,15680,15683,1,10217,59,1,10642,59,1,10661,101,59,1,10217,117,111,5,187,1,59,15694,1,187,114,4,11,59,97,98,99,102,104,108,112,115,116,119,15721,15723,15727,15739,15742,15746,15750,15754,15758,15763,15767,1,8594,112,59,1,10613,4,2,59,102,15733,15735,1,8677,115,59,1,10528,59,1,10547,115,59,1,10526,107,59,1,8618,112,59,1,8620,108,59,1,10565,105,109,59,1,10612,108,59,1,8611,59,1,8605,4,2,97,105,15776,15781,105,108,59,1,10522,111,4,2,59,110,15788,15790,1,8758,97,108,115,59,1,8474,4,3,97,98,114,15804,15809,15814,114,114,59,1,10509,114,107,59,1,10099,4,2,97,107,15820,15833,99,4,2,101,107,15827,15830,59,1,125,59,1,93,4,2,101,115,15839,15842,59,1,10636,108,4,2,100,117,15849,15852,59,1,10638,59,1,10640,4,4,97,101,117,121,15865,15871,15886,15890,114,111,110,59,1,345,4,2,100,105,15877,15882,105,108,59,1,343,108,59,1,8969,98,59,1,125,59,1,1088,4,4,99,108,113,115,15903,15907,15914,15927,97,59,1,10551,100,104,97,114,59,1,10601,117,111,4,2,59,114,15922,15924,1,8221,59,1,8221,104,59,1,8627,4,3,97,99,103,15939,15966,15970,108,4,4,59,105,112,115,15950,15952,15957,15963,1,8476,110,101,59,1,8475,97,114,116,59,1,8476,59,1,8477,116,59,1,9645,5,174,1,59,15975,1,174,4,3,105,108,114,15985,15991,15997,115,104,116,59,1,10621,111,111,114,59,1,8971,59,3,55349,56623,4,2,97,111,16007,16028,114,4,2,100,117,16014,16017,59,1,8641,4,2,59,108,16023,16025,1,8640,59,1,10604,4,2,59,118,16034,16036,1,961,59,1,1009,4,3,103,110,115,16047,16167,16171,104,116,4,6,97,104,108,114,115,116,16063,16081,16103,16130,16143,16155,114,114,111,119,4,2,59,116,16073,16075,1,8594,97,105,108,59,1,8611,97,114,112,111,111,110,4,2,100,117,16093,16099,111,119,110,59,1,8641,112,59,1,8640,101,102,116,4,2,97,104,16112,16120,114,114,111,119,115,59,1,8644,97,114,112,111,111,110,115,59,1,8652,105,103,104,116,97,114,114,111,119,115,59,1,8649,113,117,105,103,97,114,114,111,119,59,1,8605,104,114,101,101,116,105,109,101,115,59,1,8908,103,59,1,730,105,110,103,100,111,116,115,101,113,59,1,8787,4,3,97,104,109,16191,16196,16201,114,114,59,1,8644,97,114,59,1,8652,59,1,8207,111,117,115,116,4,2,59,97,16214,16216,1,9137,99,104,101,59,1,9137,109,105,100,59,1,10990,4,4,97,98,112,116,16238,16252,16257,16278,4,2,110,114,16244,16248,103,59,1,10221,114,59,1,8702,114,107,59,1,10215,4,3,97,102,108,16265,16269,16273,114,59,1,10630,59,3,55349,56675,117,115,59,1,10798,105,109,101,115,59,1,10805,4,2,97,112,16291,16304,114,4,2,59,103,16298,16300,1,41,116,59,1,10644,111,108,105,110,116,59,1,10770,97,114,114,59,1,8649,4,4,97,99,104,113,16328,16334,16339,16342,113,117,111,59,1,8250,114,59,3,55349,56519,59,1,8625,4,2,98,117,16348,16351,59,1,93,111,4,2,59,114,16358,16360,1,8217,59,1,8217,4,3,104,105,114,16371,16377,16383,114,101,101,59,1,8908,109,101,115,59,1,8906,105,4,4,59,101,102,108,16394,16396,16399,16402,1,9657,59,1,8885,59,1,9656,116,114,105,59,1,10702,108,117,104,97,114,59,1,10600,59,1,8478,4,19,97,98,99,100,101,102,104,105,108,109,111,112,113,114,115,116,117,119,122,16459,16466,16472,16572,16590,16672,16687,16746,16844,16850,16924,16963,16988,17115,17121,17154,17206,17614,17656,99,117,116,101,59,1,347,113,117,111,59,1,8218,4,10,59,69,97,99,101,105,110,112,115,121,16494,16496,16499,16513,16518,16531,16536,16556,16564,16569,1,8827,59,1,10932,4,2,112,114,16505,16508,59,1,10936,111,110,59,1,353,117,101,59,1,8829,4,2,59,100,16524,16526,1,10928,105,108,59,1,351,114,99,59,1,349,4,3,69,97,115,16544,16547,16551,59,1,10934,112,59,1,10938,105,109,59,1,8937,111,108,105,110,116,59,1,10771,105,109,59,1,8831,59,1,1089,111,116,4,3,59,98,101,16582,16584,16587,1,8901,59,1,8865,59,1,10854,4,7,65,97,99,109,115,116,120,16606,16611,16634,16642,16646,16652,16668,114,114,59,1,8664,114,4,2,104,114,16618,16622,107,59,1,10533,4,2,59,111,16628,16630,1,8600,119,59,1,8600,116,5,167,1,59,16640,1,167,105,59,1,59,119,97,114,59,1,10537,109,4,2,105,110,16659,16665,110,117,115,59,1,8726,59,1,8726,116,59,1,10038,114,4,2,59,111,16679,16682,3,55349,56624,119,110,59,1,8994,4,4,97,99,111,121,16697,16702,16716,16739,114,112,59,1,9839,4,2,104,121,16708,16713,99,121,59,1,1097,59,1,1096,114,116,4,2,109,112,16724,16729,105,100,59,1,8739,97,114,97,108,108,101,108,59,1,8741,5,173,1,59,16744,1,173,4,2,103,109,16752,16770,109,97,4,3,59,102,118,16762,16764,16767,1,963,59,1,962,59,1,962,4,8,59,100,101,103,108,110,112,114,16788,16790,16795,16806,16817,16828,16832,16838,1,8764,111,116,59,1,10858,4,2,59,113,16801,16803,1,8771,59,1,8771,4,2,59,69,16812,16814,1,10910,59,1,10912,4,2,59,69,16823,16825,1,10909,59,1,10911,101,59,1,8774,108,117,115,59,1,10788,97,114,114,59,1,10610,97,114,114,59,1,8592,4,4,97,101,105,116,16860,16883,16891,16904,4,2,108,115,16866,16878,108,115,101,116,109,105,110,117,115,59,1,8726,104,112,59,1,10803,112,97,114,115,108,59,1,10724,4,2,100,108,16897,16900,59,1,8739,101,59,1,8995,4,2,59,101,16910,16912,1,10922,4,2,59,115,16918,16920,1,10924,59,3,10924,65024,4,3,102,108,112,16932,16938,16958,116,99,121,59,1,1100,4,2,59,98,16944,16946,1,47,4,2,59,97,16952,16954,1,10692,114,59,1,9023,102,59,3,55349,56676,97,4,2,100,114,16970,16985,101,115,4,2,59,117,16978,16980,1,9824,105,116,59,1,9824,59,1,8741,4,3,99,115,117,16996,17028,17089,4,2,97,117,17002,17015,112,4,2,59,115,17009,17011,1,8851,59,3,8851,65024,112,4,2,59,115,17022,17024,1,8852,59,3,8852,65024,117,4,2,98,112,17035,17062,4,3,59,101,115,17043,17045,17048,1,8847,59,1,8849,101,116,4,2,59,101,17056,17058,1,8847,113,59,1,8849,4,3,59,101,115,17070,17072,17075,1,8848,59,1,8850,101,116,4,2,59,101,17083,17085,1,8848,113,59,1,8850,4,3,59,97,102,17097,17099,17112,1,9633,114,4,2,101,102,17106,17109,59,1,9633,59,1,9642,59,1,9642,97,114,114,59,1,8594,4,4,99,101,109,116,17131,17136,17142,17148,114,59,3,55349,56520,116,109,110,59,1,8726,105,108,101,59,1,8995,97,114,102,59,1,8902,4,2,97,114,17160,17172,114,4,2,59,102,17167,17169,1,9734,59,1,9733,4,2,97,110,17178,17202,105,103,104,116,4,2,101,112,17188,17197,112,115,105,108,111,110,59,1,1013,104,105,59,1,981,115,59,1,175,4,5,98,99,109,110,112,17218,17351,17420,17423,17427,4,9,59,69,100,101,109,110,112,114,115,17238,17240,17243,17248,17261,17267,17279,17285,17291,1,8834,59,1,10949,111,116,59,1,10941,4,2,59,100,17254,17256,1,8838,111,116,59,1,10947,117,108,116,59,1,10945,4,2,69,101,17273,17276,59,1,10955,59,1,8842,108,117,115,59,1,10943,97,114,114,59,1,10617,4,3,101,105,117,17299,17335,17339,116,4,3,59,101,110,17308,17310,17322,1,8834,113,4,2,59,113,17317,17319,1,8838,59,1,10949,101,113,4,2,59,113,17330,17332,1,8842,59,1,10955,109,59,1,10951,4,2,98,112,17345,17348,59,1,10965,59,1,10963,99,4,6,59,97,99,101,110,115,17366,17368,17376,17385,17389,17415,1,8827,112,112,114,111,120,59,1,10936,117,114,108,121,101,113,59,1,8829,113,59,1,10928,4,3,97,101,115,17397,17405,17410,112,112,114,111,120,59,1,10938,113,113,59,1,10934,105,109,59,1,8937,105,109,59,1,8831,59,1,8721,103,59,1,9834,4,13,49,50,51,59,69,100,101,104,108,109,110,112,115,17455,17462,17469,17476,17478,17481,17496,17509,17524,17530,17536,17548,17554,5,185,1,59,17460,1,185,5,178,1,59,17467,1,178,5,179,1,59,17474,1,179,1,8835,59,1,10950,4,2,111,115,17487,17491,116,59,1,10942,117,98,59,1,10968,4,2,59,100,17502,17504,1,8839,111,116,59,1,10948,115,4,2,111,117,17516,17520,108,59,1,10185,98,59,1,10967,97,114,114,59,1,10619,117,108,116,59,1,10946,4,2,69,101,17542,17545,59,1,10956,59,1,8843,108,117,115,59,1,10944,4,3,101,105,117,17562,17598,17602,116,4,3,59,101,110,17571,17573,17585,1,8835,113,4,2,59,113,17580,17582,1,8839,59,1,10950,101,113,4,2,59,113,17593,17595,1,8843,59,1,10956,109,59,1,10952,4,2,98,112,17608,17611,59,1,10964,59,1,10966,4,3,65,97,110,17622,17627,17650,114,114,59,1,8665,114,4,2,104,114,17634,17638,107,59,1,10534,4,2,59,111,17644,17646,1,8601,119,59,1,8601,119,97,114,59,1,10538,108,105,103,5,223,1,59,17664,1,223,4,13,97,98,99,100,101,102,104,105,111,112,114,115,119,17694,17709,17714,17737,17742,17749,17754,17860,17905,17957,17964,18090,18122,4,2,114,117,17700,17706,103,101,116,59,1,8982,59,1,964,114,107,59,1,9140,4,3,97,101,121,17722,17728,17734,114,111,110,59,1,357,100,105,108,59,1,355,59,1,1090,111,116,59,1,8411,108,114,101,99,59,1,8981,114,59,3,55349,56625,4,4,101,105,107,111,17764,17805,17836,17851,4,2,114,116,17770,17786,101,4,2,52,102,17777,17780,59,1,8756,111,114,101,59,1,8756,97,4,3,59,115,118,17795,17797,17802,1,952,121,109,59,1,977,59,1,977,4,2,99,110,17811,17831,107,4,2,97,115,17818,17826,112,112,114,111,120,59,1,8776,105,109,59,1,8764,115,112,59,1,8201,4,2,97,115,17842,17846,112,59,1,8776,105,109,59,1,8764,114,110,5,254,1,59,17858,1,254,4,3,108,109,110,17868,17873,17901,100,101,59,1,732,101,115,5,215,3,59,98,100,17884,17886,17898,1,215,4,2,59,97,17892,17894,1,8864,114,59,1,10801,59,1,10800,116,59,1,8749,4,3,101,112,115,17913,17917,17953,97,59,1,10536,4,4,59,98,99,102,17927,17929,17934,17939,1,8868,111,116,59,1,9014,105,114,59,1,10993,4,2,59,111,17945,17948,3,55349,56677,114,107,59,1,10970,97,59,1,10537,114,105,109,101,59,1,8244,4,3,97,105,112,17972,17977,18082,100,101,59,1,8482,4,7,97,100,101,109,112,115,116,17993,18051,18056,18059,18066,18072,18076,110,103,108,101,4,5,59,100,108,113,114,18009,18011,18017,18032,18035,1,9653,111,119,110,59,1,9663,101,102,116,4,2,59,101,18026,18028,1,9667,113,59,1,8884,59,1,8796,105,103,104,116,4,2,59,101,18045,18047,1,9657,113,59,1,8885,111,116,59,1,9708,59,1,8796,105,110,117,115,59,1,10810,108,117,115,59,1,10809,98,59,1,10701,105,109,101,59,1,10811,101,122,105,117,109,59,1,9186,4,3,99,104,116,18098,18111,18116,4,2,114,121,18104,18108,59,3,55349,56521,59,1,1094,99,121,59,1,1115,114,111,107,59,1,359,4,2,105,111,18128,18133,120,116,59,1,8812,104,101,97,100,4,2,108,114,18143,18154,101,102,116,97,114,114,111,119,59,1,8606,105,103,104,116,97,114,114,111,119,59,1,8608,4,18,65,72,97,98,99,100,102,103,104,108,109,111,112,114,115,116,117,119,18204,18209,18214,18234,18250,18268,18292,18308,18319,18343,18379,18397,18413,18504,18547,18553,18584,18603,114,114,59,1,8657,97,114,59,1,10595,4,2,99,114,18220,18230,117,116,101,5,250,1,59,18228,1,250,114,59,1,8593,114,4,2,99,101,18241,18245,121,59,1,1118,118,101,59,1,365,4,2,105,121,18256,18265,114,99,5,251,1,59,18263,1,251,59,1,1091,4,3,97,98,104,18276,18281,18287,114,114,59,1,8645,108,97,99,59,1,369,97,114,59,1,10606,4,2,105,114,18298,18304,115,104,116,59,1,10622,59,3,55349,56626,114,97,118,101,5,249,1,59,18317,1,249,4,2,97,98,18325,18338,114,4,2,108,114,18332,18335,59,1,8639,59,1,8638,108,107,59,1,9600,4,2,99,116,18349,18374,4,2,111,114,18355,18369,114,110,4,2,59,101,18363,18365,1,8988,114,59,1,8988,111,112,59,1,8975,114,105,59,1,9720,4,2,97,108,18385,18390,99,114,59,1,363,5,168,1,59,18395,1,168,4,2,103,112,18403,18408,111,110,59,1,371,102,59,3,55349,56678,4,6,97,100,104,108,115,117,18427,18434,18445,18470,18475,18494,114,114,111,119,59,1,8593,111,119,110,97,114,114,111,119,59,1,8597,97,114,112,111,111,110,4,2,108,114,18457,18463,101,102,116,59,1,8639,105,103,104,116,59,1,8638,117,115,59,1,8846,105,4,3,59,104,108,18484,18486,18489,1,965,59,1,978,111,110,59,1,965,112,97,114,114,111,119,115,59,1,8648,4,3,99,105,116,18512,18537,18542,4,2,111,114,18518,18532,114,110,4,2,59,101,18526,18528,1,8989,114,59,1,8989,111,112,59,1,8974,110,103,59,1,367,114,105,59,1,9721,99,114,59,3,55349,56522,4,3,100,105,114,18561,18566,18572,111,116,59,1,8944,108,100,101,59,1,361,105,4,2,59,102,18579,18581,1,9653,59,1,9652,4,2,97,109,18590,18595,114,114,59,1,8648,108,5,252,1,59,18601,1,252,97,110,103,108,101,59,1,10663,4,15,65,66,68,97,99,100,101,102,108,110,111,112,114,115,122,18643,18648,18661,18667,18847,18851,18857,18904,18909,18915,18931,18937,18943,18949,18996,114,114,59,1,8661,97,114,4,2,59,118,18656,18658,1,10984,59,1,10985,97,115,104,59,1,8872,4,2,110,114,18673,18679,103,114,116,59,1,10652,4,7,101,107,110,112,114,115,116,18695,18704,18711,18720,18742,18754,18810,112,115,105,108,111,110,59,1,1013,97,112,112,97,59,1,1008,111,116,104,105,110,103,59,1,8709,4,3,104,105,114,18728,18732,18735,105,59,1,981,59,1,982,111,112,116,111,59,1,8733,4,2,59,104,18748,18750,1,8597,111,59,1,1009,4,2,105,117,18760,18766,103,109,97,59,1,962,4,2,98,112,18772,18791,115,101,116,110,101,113,4,2,59,113,18784,18787,3,8842,65024,59,3,10955,65024,115,101,116,110,101,113,4,2,59,113,18803,18806,3,8843,65024,59,3,10956,65024,4,2,104,114,18816,18822,101,116,97,59,1,977,105,97,110,103,108,101,4,2,108,114,18834,18840,101,102,116,59,1,8882,105,103,104,116,59,1,8883,121,59,1,1074,97,115,104,59,1,8866,4,3,101,108,114,18865,18884,18890,4,3,59,98,101,18873,18875,18880,1,8744,97,114,59,1,8891,113,59,1,8794,108,105,112,59,1,8942,4,2,98,116,18896,18901,97,114,59,1,124,59,1,124,114,59,3,55349,56627,116,114,105,59,1,8882,115,117,4,2,98,112,18923,18927,59,3,8834,8402,59,3,8835,8402,112,102,59,3,55349,56679,114,111,112,59,1,8733,116,114,105,59,1,8883,4,2,99,117,18955,18960,114,59,3,55349,56523,4,2,98,112,18966,18981,110,4,2,69,101,18973,18977,59,3,10955,65024,59,3,8842,65024,110,4,2,69,101,18988,18992,59,3,10956,65024,59,3,8843,65024,105,103,122,97,103,59,1,10650,4,7,99,101,102,111,112,114,115,19020,19026,19061,19066,19072,19075,19089,105,114,99,59,1,373,4,2,100,105,19032,19055,4,2,98,103,19038,19043,97,114,59,1,10847,101,4,2,59,113,19050,19052,1,8743,59,1,8793,101,114,112,59,1,8472,114,59,3,55349,56628,112,102,59,3,55349,56680,59,1,8472,4,2,59,101,19081,19083,1,8768,97,116,104,59,1,8768,99,114,59,3,55349,56524,4,14,99,100,102,104,105,108,109,110,111,114,115,117,118,119,19125,19146,19152,19157,19173,19176,19192,19197,19202,19236,19252,19269,19286,19291,4,3,97,105,117,19133,19137,19142,112,59,1,8898,114,99,59,1,9711,112,59,1,8899,116,114,105,59,1,9661,114,59,3,55349,56629,4,2,65,97,19163,19168,114,114,59,1,10234,114,114,59,1,10231,59,1,958,4,2,65,97,19182,19187,114,114,59,1,10232,114,114,59,1,10229,97,112,59,1,10236,105,115,59,1,8955,4,3,100,112,116,19210,19215,19230,111,116,59,1,10752,4,2,102,108,19221,19225,59,3,55349,56681,117,115,59,1,10753,105,109,101,59,1,10754,4,2,65,97,19242,19247,114,114,59,1,10233,114,114,59,1,10230,4,2,99,113,19258,19263,114,59,3,55349,56525,99,117,112,59,1,10758,4,2,112,116,19275,19281,108,117,115,59,1,10756,114,105,59,1,9651,101,101,59,1,8897,101,100,103,101,59,1,8896,4,8,97,99,101,102,105,111,115,117,19316,19335,19349,19357,19362,19367,19373,19379,99,4,2,117,121,19323,19332,116,101,5,253,1,59,19330,1,253,59,1,1103,4,2,105,121,19341,19346,114,99,59,1,375,59,1,1099,110,5,165,1,59,19355,1,165,114,59,3,55349,56630,99,121,59,1,1111,112,102,59,3,55349,56682,99,114,59,3,55349,56526,4,2,99,109,19385,19389,121,59,1,1102,108,5,255,1,59,19395,1,255,4,10,97,99,100,101,102,104,105,111,115,119,19419,19426,19441,19446,19462,19467,19472,19480,19486,19492,99,117,116,101,59,1,378,4,2,97,121,19432,19438,114,111,110,59,1,382,59,1,1079,111,116,59,1,380,4,2,101,116,19452,19458,116,114,102,59,1,8488,97,59,1,950,114,59,3,55349,56631,99,121,59,1,1078,103,114,97,114,114,59,1,8669,112,102,59,3,55349,56683,99,114,59,3,55349,56527,4,2,106,110,19498,19501,59,1,8205,106,59,1,8204])},function(e,t,n){"use strict";const r=n(42),i=n(29),s=n(107);e.exports=class extends r{constructor(e){super(e),this.tokenizer=e,this.posTracker=r.install(e.preprocessor,s),this.currentAttrLocation=null,this.ctLoc=null}_getCurrentLocation(){return{startLine:this.posTracker.line,startCol:this.posTracker.col,startOffset:this.posTracker.offset,endLine:-1,endCol:-1,endOffset:-1}}_attachCurrentAttrLocationInfo(){this.currentAttrLocation.endLine=this.posTracker.line,this.currentAttrLocation.endCol=this.posTracker.col,this.currentAttrLocation.endOffset=this.posTracker.offset;const e=this.tokenizer.currentToken,t=this.tokenizer.currentAttr;e.location.attrs||(e.location.attrs=Object.create(null)),e.location.attrs[t.name]=this.currentAttrLocation}_getOverriddenMethods(e,t){const n={_createStartTagToken(){t._createStartTagToken.call(this),this.currentToken.location=e.ctLoc},_createEndTagToken(){t._createEndTagToken.call(this),this.currentToken.location=e.ctLoc},_createCommentToken(){t._createCommentToken.call(this),this.currentToken.location=e.ctLoc},_createDoctypeToken(n){t._createDoctypeToken.call(this,n),this.currentToken.location=e.ctLoc},_createCharacterToken(n,r){t._createCharacterToken.call(this,n,r),this.currentCharacterToken.location=e.ctLoc},_createEOFToken(){t._createEOFToken.call(this),this.currentToken.location=e._getCurrentLocation()},_createAttr(n){t._createAttr.call(this,n),e.currentAttrLocation=e._getCurrentLocation()},_leaveAttrName(n){t._leaveAttrName.call(this,n),e._attachCurrentAttrLocationInfo()},_leaveAttrValue(n){t._leaveAttrValue.call(this,n),e._attachCurrentAttrLocationInfo()},_emitCurrentToken(){const n=this.currentToken.location;this.currentCharacterToken&&(this.currentCharacterToken.location.endLine=n.startLine,this.currentCharacterToken.location.endCol=n.startCol,this.currentCharacterToken.location.endOffset=n.startOffset),this.currentToken.type===i.EOF_TOKEN?(n.endLine=n.startLine,n.endCol=n.startCol,n.endOffset=n.startOffset):(n.endLine=e.posTracker.line,n.endCol=e.posTracker.col+1,n.endOffset=e.posTracker.offset+1),t._emitCurrentToken.call(this)},_emitCurrentCharacterToken(){const n=this.currentCharacterToken&&this.currentCharacterToken.location;n&&-1===n.endOffset&&(n.endLine=e.posTracker.line,n.endCol=e.posTracker.col,n.endOffset=e.posTracker.offset),t._emitCurrentCharacterToken.call(this)}};return Object.keys(i.MODE).forEach(r=>{const s=i.MODE[r];n[s]=function(n){e.ctLoc=e._getCurrentLocation(),t[s].call(this,n)}}),n}}},function(e,t,n){"use strict";const r=n(42);e.exports=class extends r{constructor(e){super(e),this.preprocessor=e,this.isEol=!1,this.lineStartPos=0,this.droppedBufferSize=0,this.offset=0,this.col=0,this.line=1}_getOverriddenMethods(e,t){return{advance(){const n=this.pos+1,r=this.html[n];return e.isEol&&(e.isEol=!1,e.line++,e.lineStartPos=n),("\n"===r||"\r"===r&&"\n"!==this.html[n+1])&&(e.isEol=!0),e.col=n-e.lineStartPos+1,e.offset=e.droppedBufferSize+n,t.advance.call(this)},retreat(){t.retreat.call(this),e.isEol=!1,e.col=this.pos-e.lineStartPos+1},dropParsedChunk(){const n=this.pos;t.dropParsedChunk.call(this);const r=n-this.pos;e.lineStartPos-=r,e.droppedBufferSize+=r,e.offset=e.droppedBufferSize+this.pos}}}}},function(e,t,n){"use strict";const{Writable:r}=n(4);e.exports=class extends r{_write(e,t,n){n()}}},function(e,t,n){"use strict";const r=n(29),i=n(110),s=n(41),o=n(20),a=o.TAG_NAMES,u=o.NAMESPACES;e.exports=class{constructor(e){this.tokenizer=e,this.namespaceStack=[],this.namespaceStackTop=-1,this._enterNamespace(u.HTML)}getNextToken(){const e=this.tokenizer.getNextToken();if(e.type===r.START_TAG_TOKEN)this._handleStartTagToken(e);else if(e.type===r.END_TAG_TOKEN)this._handleEndTagToken(e);else if(e.type===r.NULL_CHARACTER_TOKEN&&this.inForeignContent)e.type=r.CHARACTER_TOKEN,e.chars=s.REPLACEMENT_CHARACTER;else if(this.skipNextNewLine&&(e.type!==r.HIBERNATION_TOKEN&&(this.skipNextNewLine=!1),e.type===r.WHITESPACE_CHARACTER_TOKEN&&"\n"===e.chars[0])){if(1===e.chars.length)return this.getNextToken();e.chars=e.chars.substr(1)}return e}_enterNamespace(e){this.namespaceStackTop++,this.namespaceStack.push(e),this.inForeignContent=e!==u.HTML,this.currentNamespace=e,this.tokenizer.allowCDATA=this.inForeignContent}_leaveCurrentNamespace(){this.namespaceStackTop--,this.namespaceStack.pop(),this.currentNamespace=this.namespaceStack[this.namespaceStackTop],this.inForeignContent=this.currentNamespace!==u.HTML,this.tokenizer.allowCDATA=this.inForeignContent}_ensureTokenizerMode(e){e===a.TEXTAREA||e===a.TITLE?this.tokenizer.state=r.MODE.RCDATA:e===a.PLAINTEXT?this.tokenizer.state=r.MODE.PLAINTEXT:e===a.SCRIPT?this.tokenizer.state=r.MODE.SCRIPT_DATA:e!==a.STYLE&&e!==a.IFRAME&&e!==a.XMP&&e!==a.NOEMBED&&e!==a.NOFRAMES&&e!==a.NOSCRIPT||(this.tokenizer.state=r.MODE.RAWTEXT)}_handleStartTagToken(e){let t=e.tagName;if(t===a.SVG?this._enterNamespace(u.SVG):t===a.MATH&&this._enterNamespace(u.MATHML),this.inForeignContent){if(i.causesExit(e))return void this._leaveCurrentNamespace();const n=this.currentNamespace;n===u.MATHML?i.adjustTokenMathMLAttrs(e):n===u.SVG&&(i.adjustTokenSVGTagName(e),i.adjustTokenSVGAttrs(e)),i.adjustTokenXMLAttrs(e),t=e.tagName,!e.selfClosing&&i.isIntegrationPoint(t,n,e.attrs)&&this._enterNamespace(u.HTML)}else t===a.PRE||t===a.TEXTAREA||t===a.LISTING?this.skipNextNewLine=!0:t===a.IMAGE&&(e.tagName=a.IMG),this._ensureTokenizerMode(t)}_handleEndTagToken(e){let t=e.tagName;if(this.inForeignContent)(t===a.SVG&&this.currentNamespace===u.SVG||t===a.MATH&&this.currentNamespace===u.MATHML)&&this._leaveCurrentNamespace();else{const n=this.namespaceStack[this.namespaceStackTop-1];n===u.SVG&&i.SVG_TAG_NAMES_ADJUSTMENT_MAP[t]&&(t=i.SVG_TAG_NAMES_ADJUSTMENT_MAP[t]),i.isIntegrationPoint(t,n,e.attrs)&&this._leaveCurrentNamespace()}this.currentNamespace===u.SVG&&i.adjustTokenSVGTagName(e)}}},function(e,t,n){"use strict";const r=n(29),i=n(20),s=i.TAG_NAMES,o=i.NAMESPACES,a=i.ATTRS,u={TEXT_HTML:"text/html",APPLICATION_XML:"application/xhtml+xml"},l={attributename:"attributeName",attributetype:"attributeType",basefrequency:"baseFrequency",baseprofile:"baseProfile",calcmode:"calcMode",clippathunits:"clipPathUnits",diffuseconstant:"diffuseConstant",edgemode:"edgeMode",filterunits:"filterUnits",glyphref:"glyphRef",gradienttransform:"gradientTransform",gradientunits:"gradientUnits",kernelmatrix:"kernelMatrix",kernelunitlength:"kernelUnitLength",keypoints:"keyPoints",keysplines:"keySplines",keytimes:"keyTimes",lengthadjust:"lengthAdjust",limitingconeangle:"limitingConeAngle",markerheight:"markerHeight",markerunits:"markerUnits",markerwidth:"markerWidth",maskcontentunits:"maskContentUnits",maskunits:"maskUnits",numoctaves:"numOctaves",pathlength:"pathLength",patterncontentunits:"patternContentUnits",patterntransform:"patternTransform",patternunits:"patternUnits",pointsatx:"pointsAtX",pointsaty:"pointsAtY",pointsatz:"pointsAtZ",preservealpha:"preserveAlpha",preserveaspectratio:"preserveAspectRatio",primitiveunits:"primitiveUnits",refx:"refX",refy:"refY",repeatcount:"repeatCount",repeatdur:"repeatDur",requiredextensions:"requiredExtensions",requiredfeatures:"requiredFeatures",specularconstant:"specularConstant",specularexponent:"specularExponent",spreadmethod:"spreadMethod",startoffset:"startOffset",stddeviation:"stdDeviation",stitchtiles:"stitchTiles",surfacescale:"surfaceScale",systemlanguage:"systemLanguage",tablevalues:"tableValues",targetx:"targetX",targety:"targetY",textlength:"textLength",viewbox:"viewBox",viewtarget:"viewTarget",xchannelselector:"xChannelSelector",ychannelselector:"yChannelSelector",zoomandpan:"zoomAndPan"},c={"xlink:actuate":{prefix:"xlink",name:"actuate",namespace:o.XLINK},"xlink:arcrole":{prefix:"xlink",name:"arcrole",namespace:o.XLINK},"xlink:href":{prefix:"xlink",name:"href",namespace:o.XLINK},"xlink:role":{prefix:"xlink",name:"role",namespace:o.XLINK},"xlink:show":{prefix:"xlink",name:"show",namespace:o.XLINK},"xlink:title":{prefix:"xlink",name:"title",namespace:o.XLINK},"xlink:type":{prefix:"xlink",name:"type",namespace:o.XLINK},"xml:base":{prefix:"xml",name:"base",namespace:o.XML},"xml:lang":{prefix:"xml",name:"lang",namespace:o.XML},"xml:space":{prefix:"xml",name:"space",namespace:o.XML},xmlns:{prefix:"",name:"xmlns",namespace:o.XMLNS},"xmlns:xlink":{prefix:"xmlns",name:"xlink",namespace:o.XMLNS}},h=t.SVG_TAG_NAMES_ADJUSTMENT_MAP={altglyph:"altGlyph",altglyphdef:"altGlyphDef",altglyphitem:"altGlyphItem",animatecolor:"animateColor",animatemotion:"animateMotion",animatetransform:"animateTransform",clippath:"clipPath",feblend:"feBlend",fecolormatrix:"feColorMatrix",fecomponenttransfer:"feComponentTransfer",fecomposite:"feComposite",feconvolvematrix:"feConvolveMatrix",fediffuselighting:"feDiffuseLighting",fedisplacementmap:"feDisplacementMap",fedistantlight:"feDistantLight",feflood:"feFlood",fefunca:"feFuncA",fefuncb:"feFuncB",fefuncg:"feFuncG",fefuncr:"feFuncR",fegaussianblur:"feGaussianBlur",feimage:"feImage",femerge:"feMerge",femergenode:"feMergeNode",femorphology:"feMorphology",feoffset:"feOffset",fepointlight:"fePointLight",fespecularlighting:"feSpecularLighting",fespotlight:"feSpotLight",fetile:"feTile",feturbulence:"feTurbulence",foreignobject:"foreignObject",glyphref:"glyphRef",lineargradient:"linearGradient",radialgradient:"radialGradient",textpath:"textPath"},d={[s.B]:!0,[s.BIG]:!0,[s.BLOCKQUOTE]:!0,[s.BODY]:!0,[s.BR]:!0,[s.CENTER]:!0,[s.CODE]:!0,[s.DD]:!0,[s.DIV]:!0,[s.DL]:!0,[s.DT]:!0,[s.EM]:!0,[s.EMBED]:!0,[s.H1]:!0,[s.H2]:!0,[s.H3]:!0,[s.H4]:!0,[s.H5]:!0,[s.H6]:!0,[s.HEAD]:!0,[s.HR]:!0,[s.I]:!0,[s.IMG]:!0,[s.LI]:!0,[s.LISTING]:!0,[s.MENU]:!0,[s.META]:!0,[s.NOBR]:!0,[s.OL]:!0,[s.P]:!0,[s.PRE]:!0,[s.RUBY]:!0,[s.S]:!0,[s.SMALL]:!0,[s.SPAN]:!0,[s.STRONG]:!0,[s.STRIKE]:!0,[s.SUB]:!0,[s.SUP]:!0,[s.TABLE]:!0,[s.TT]:!0,[s.U]:!0,[s.UL]:!0,[s.VAR]:!0};t.causesExit=function(e){const t=e.tagName;return!!(t===s.FONT&&(null!==r.getTokenAttr(e,a.COLOR)||null!==r.getTokenAttr(e,a.SIZE)||null!==r.getTokenAttr(e,a.FACE)))||d[t]},t.adjustTokenMathMLAttrs=function(e){for(let t=0;t/g;class m{constructor(e,t){this.options=i(l,t),this.treeAdapter=this.options.treeAdapter,this.html="",this.startNode=e}serialize(){return this._serializeChildNodes(this.startNode),this.html}_serializeChildNodes(e){const t=this.treeAdapter.getChildNodes(e);if(t)for(let e=0,n=t.length;e",t!==a.AREA&&t!==a.BASE&&t!==a.BASEFONT&&t!==a.BGSOUND&&t!==a.BR&&t!==a.COL&&t!==a.EMBED&&t!==a.FRAME&&t!==a.HR&&t!==a.IMG&&t!==a.INPUT&&t!==a.KEYGEN&&t!==a.LINK&&t!==a.META&&t!==a.PARAM&&t!==a.SOURCE&&t!==a.TRACK&&t!==a.WBR){const r=t===a.TEMPLATE&&n===u.HTML?this.treeAdapter.getTemplateContent(e):e;this._serializeChildNodes(r),this.html+=""}}_serializeAttributes(e){const t=this.treeAdapter.getAttrList(e);for(let e=0,n=t.length;e"}}m.escapeString=function(e,t){return e=e.replace(c,"&").replace(h," "),e=t?e.replace(d,"""):e.replace(p,"<").replace(f,">")},e.exports=m},function(e,t,n){"use strict";const{DOCUMENT_MODE:r}=n(20);t.createDocument=function(){return{nodeName:"#document",mode:r.NO_QUIRKS,childNodes:[]}},t.createDocumentFragment=function(){return{nodeName:"#document-fragment",childNodes:[]}},t.createElement=function(e,t,n){return{nodeName:e,tagName:e,attrs:n,namespaceURI:t,childNodes:[],parentNode:null}},t.createCommentNode=function(e){return{nodeName:"#comment",data:e,parentNode:null}};const i=function(e){return{nodeName:"#text",value:e,parentNode:null}},s=t.appendChild=function(e,t){e.childNodes.push(t),t.parentNode=e},o=t.insertBefore=function(e,t,n){const r=e.childNodes.indexOf(n);e.childNodes.splice(r,0,t),t.parentNode=e};t.setTemplateContent=function(e,t){e.content=t},t.getTemplateContent=function(e){return e.content},t.setDocumentType=function(e,t,n,r){let i=null;for(let t=0;t-1)return r.QUIRKS;let e=null===t?s:i;if(c(n,e))return r.QUIRKS;if(c(n,e=null===t?a:u))return r.LIMITED_QUIRKS}return r.NO_QUIRKS},t.serializeContent=function(e,t,n){let r="!DOCTYPE ";return e&&(r+=e),t?r+=" PUBLIC "+l(t):n&&(r+=" SYSTEM"),null!==n&&(r+=" "+l(n)),r}},function(e,t){var n=8224,r=new Uint32Array([0,1,3,7,15,31,63,127,255,511,1023,2047,4095,8191,16383,32767,65535,131071,262143,524287,1048575,2097151,4194303,8388607,16777215]);function i(e){this.buf_=new Uint8Array(n),this.input_=e,this.reset()}i.READ_SIZE=4096,i.IBUF_MASK=8191,i.prototype.reset=function(){this.buf_ptr_=0,this.val_=0,this.pos_=0,this.bit_pos_=0,this.bit_end_pos_=0,this.eos_=0,this.readMoreInput();for(var e=0;e<4;e++)this.val_|=this.buf_[this.pos_]<<8*e,++this.pos_;return this.bit_end_pos_>0},i.prototype.readMoreInput=function(){if(!(this.bit_end_pos_>256))if(this.eos_){if(this.bit_pos_>this.bit_end_pos_)throw new Error("Unexpected end of input "+this.bit_pos_+" "+this.bit_end_pos_)}else{var e=this.buf_ptr_,t=this.input_.read(this.buf_,e,4096);if(t<0)throw new Error("Unexpected end of input");if(t<4096){this.eos_=1;for(var n=0;n<32;n++)this.buf_[e+t+n]=0}if(0===e){for(n=0;n<32;n++)this.buf_[8192+n]=this.buf_[n];this.buf_ptr_=4096}else this.buf_ptr_=0;this.bit_end_pos_+=t<<3}},i.prototype.fillBitWindow=function(){for(;this.bit_pos_>=8;)this.val_>>>=8,this.val_|=this.buf_[8191&this.pos_]<<24,++this.pos_,this.bit_pos_=this.bit_pos_-8>>>0,this.bit_end_pos_=this.bit_end_pos_-8>>>0},i.prototype.readBits=function(e){32-this.bit_pos_>>this.bit_pos_&r[e];return this.bit_pos_+=e,t},e.exports=i},function(e,t,n){var r=n(57);t.init=function(){return(0,n(64).BrotliDecompressBuffer)(r.toByteArray(n(116)))}},function(e,t){e.exports="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"},function(e,t){t.lookup=new Uint8Array([0,0,0,0,0,0,0,0,0,4,4,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,12,16,12,12,20,12,16,24,28,12,12,32,12,36,12,44,44,44,44,44,44,44,44,44,44,32,32,24,40,28,12,12,48,52,52,52,48,52,52,52,48,52,52,52,52,52,48,52,52,52,52,52,48,52,52,52,52,52,24,12,28,12,12,12,56,60,60,60,56,60,60,60,56,60,60,60,60,60,56,60,60,60,60,60,56,60,60,60,60,60,24,12,28,12,0,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,7,0,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,56,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,6,6,6,6,7,7,7,7,8,8,8,8,9,9,9,9,10,10,10,10,11,11,11,11,12,12,12,12,13,13,13,13,14,14,14,14,15,15,15,15,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,22,22,22,22,23,23,23,23,24,24,24,24,25,25,25,25,26,26,26,26,27,27,27,27,28,28,28,28,29,29,29,29,30,30,30,30,31,31,31,31,32,32,32,32,33,33,33,33,34,34,34,34,35,35,35,35,36,36,36,36,37,37,37,37,38,38,38,38,39,39,39,39,40,40,40,40,41,41,41,41,42,42,42,42,43,43,43,43,44,44,44,44,45,45,45,45,46,46,46,46,47,47,47,47,48,48,48,48,49,49,49,49,50,50,50,50,51,51,51,51,52,52,52,52,53,53,53,53,54,54,54,54,55,55,55,55,56,56,56,56,57,57,57,57,58,58,58,58,59,59,59,59,60,60,60,60,61,61,61,61,62,62,62,62,63,63,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]),t.lookupOffsets=new Uint16Array([1024,1536,1280,1536,0,256,768,512])},function(e,t){function n(e,t){this.offset=e,this.nbits=t}t.kBlockLengthPrefixCode=[new n(1,2),new n(5,2),new n(9,2),new n(13,2),new n(17,3),new n(25,3),new n(33,3),new n(41,3),new n(49,4),new n(65,4),new n(81,4),new n(97,4),new n(113,5),new n(145,5),new n(177,5),new n(209,5),new n(241,6),new n(305,6),new n(369,7),new n(497,8),new n(753,9),new n(1265,10),new n(2289,11),new n(4337,12),new n(8433,13),new n(16625,24)],t.kInsertLengthPrefixCode=[new n(0,0),new n(1,0),new n(2,0),new n(3,0),new n(4,0),new n(5,0),new n(6,1),new n(8,1),new n(10,2),new n(14,2),new n(18,3),new n(26,3),new n(34,4),new n(50,4),new n(66,5),new n(98,5),new n(130,6),new n(194,7),new n(322,8),new n(578,9),new n(1090,10),new n(2114,12),new n(6210,14),new n(22594,24)],t.kCopyLengthPrefixCode=[new n(2,0),new n(3,0),new n(4,0),new n(5,0),new n(6,0),new n(7,0),new n(8,0),new n(9,0),new n(10,1),new n(12,1),new n(14,2),new n(18,2),new n(22,3),new n(30,3),new n(38,4),new n(54,4),new n(70,5),new n(102,5),new n(134,6),new n(198,7),new n(326,8),new n(582,9),new n(1094,10),new n(2118,24)],t.kInsertRangeLut=[0,0,8,8,0,16,8,16,16],t.kCopyRangeLut=[0,8,0,8,16,0,16,8,16]},function(e,t,n){var r=n(66);function i(e,t,n){this.prefix=new Uint8Array(e.length),this.transform=t,this.suffix=new Uint8Array(n.length);for(var r=0;r'),new i("",0,"\n"),new i("",3,""),new i("",0,"]"),new i("",0," for "),new i("",14,""),new i("",2,""),new i("",0," a "),new i("",0," that "),new i(" ",10,""),new i("",0,". "),new i(".",0,""),new i(" ",0,", "),new i("",15,""),new i("",0," with "),new i("",0,"'"),new i("",0," from "),new i("",0," by "),new i("",16,""),new i("",17,""),new i(" the ",0,""),new i("",4,""),new i("",0,". The "),new i("",11,""),new i("",0," on "),new i("",0," as "),new i("",0," is "),new i("",7,""),new i("",1,"ing "),new i("",0,"\n\t"),new i("",0,":"),new i(" ",0,". "),new i("",0,"ed "),new i("",20,""),new i("",18,""),new i("",6,""),new i("",0,"("),new i("",10,", "),new i("",8,""),new i("",0," at "),new i("",0,"ly "),new i(" the ",0," of "),new i("",5,""),new i("",9,""),new i(" ",10,", "),new i("",10,'"'),new i(".",0,"("),new i("",11," "),new i("",10,'">'),new i("",0,'="'),new i(" ",0,"."),new i(".com/",0,""),new i(" the ",0," of the "),new i("",10,"'"),new i("",0,". This "),new i("",0,","),new i(".",0," "),new i("",10,"("),new i("",10,"."),new i("",0," not "),new i(" ",0,'="'),new i("",0,"er "),new i(" ",11," "),new i("",0,"al "),new i(" ",11,""),new i("",0,"='"),new i("",11,'"'),new i("",10,". "),new i(" ",0,"("),new i("",0,"ful "),new i(" ",10,". "),new i("",0,"ive "),new i("",0,"less "),new i("",11,"'"),new i("",0,"est "),new i(" ",10,"."),new i("",11,'">'),new i(" ",0,"='"),new i("",10,","),new i("",0,"ize "),new i("",11,"."),new i(" ",0,""),new i(" ",0,","),new i("",10,'="'),new i("",11,'="'),new i("",0,"ous "),new i("",11,", "),new i("",10,"='"),new i(" ",10,","),new i(" ",11,'="'),new i(" ",11,", "),new i("",11,","),new i("",11,"("),new i("",11,". "),new i(" ",11,"."),new i("",11,"='"),new i(" ",11,". "),new i(" ",10,'="'),new i(" ",11,"='"),new i(" ",10,"='")];function o(e,t){return e[t]<192?(e[t]>=97&&e[t]<=122&&(e[t]^=32),1):e[t]<224?(e[t+1]^=32,2):(e[t+2]^=5,3)}t.kTransforms=s,t.kNumTransforms=s.length,t.transformDictionaryWord=function(e,t,n,i,a){var u,l=s[a].prefix,c=s[a].suffix,h=s[a].transform,d=h<12?0:h-11,p=0,f=t;d>i&&(d=i);for(var m=0;m0;){var w=o(e,u);u+=w,i-=w}for(var g=0;g0?t.windowBits=-t.windowBits:t.gzip&&t.windowBits>0&&t.windowBits<16&&(t.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new a,this.strm.avail_out=0;var n=r.deflateInit2(this.strm,t.level,t.method,t.windowBits,t.memLevel,t.strategy);if(n!==l)throw new Error(o[n]);if(t.header&&r.deflateSetHeader(this.strm,t.header),t.dictionary){var f;if(f="string"==typeof t.dictionary?s.string2buf(t.dictionary):"[object ArrayBuffer]"===u.call(t.dictionary)?new Uint8Array(t.dictionary):t.dictionary,(n=r.deflateSetDictionary(this.strm,f))!==l)throw new Error(o[n]);this._dict_set=!0}}function f(e,t){var n=new p(t);if(n.push(e,!0),n.err)throw n.msg||o[n.err];return n.result}p.prototype.push=function(e,t){var n,o,a=this.strm,c=this.options.chunkSize;if(this.ended)return!1;o=t===~~t?t:!0===t?4:0,"string"==typeof e?a.input=s.string2buf(e):"[object ArrayBuffer]"===u.call(e)?a.input=new Uint8Array(e):a.input=e,a.next_in=0,a.avail_in=a.input.length;do{if(0===a.avail_out&&(a.output=new i.Buf8(c),a.next_out=0,a.avail_out=c),1!==(n=r.deflate(a,o))&&n!==l)return this.onEnd(n),this.ended=!0,!1;0!==a.avail_out&&(0!==a.avail_in||4!==o&&2!==o)||("string"===this.options.to?this.onData(s.buf2binstring(i.shrinkBuf(a.output,a.next_out))):this.onData(i.shrinkBuf(a.output,a.next_out)))}while((a.avail_in>0||0===a.avail_out)&&1!==n);return 4===o?(n=r.deflateEnd(this.strm),this.onEnd(n),this.ended=!0,n===l):2!==o||(this.onEnd(l),a.avail_out=0,!0)},p.prototype.onData=function(e){this.chunks.push(e)},p.prototype.onEnd=function(e){e===l&&("string"===this.options.to?this.result=this.chunks.join(""):this.result=i.flattenChunks(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg},t.Deflate=p,t.deflate=f,t.deflateRaw=function(e,t){return(t=t||{}).raw=!0,f(e,t)},t.gzip=function(e,t){return(t=t||{}).gzip=!0,f(e,t)}},function(e,t,n){"use strict";var r,i=n(8),s=n(122),o=n(68),a=n(69),u=n(43),l=0,c=1,h=3,d=4,p=5,f=0,m=1,w=-2,g=-3,b=-5,_=-1,y=1,v=2,x=3,E=4,A=0,S=2,k=8,T=9,C=15,D=8,R=286,O=30,I=19,N=2*R+1,F=15,P=3,L=258,B=L+P+1,U=32,M=42,j=69,W=73,z=91,H=103,G=113,q=666,V=1,K=2,X=3,Y=4,J=3;function Z(e,t){return e.msg=u[t],t}function Q(e){return(e<<1)-(e>4?9:0)}function $(e){for(var t=e.length;--t>=0;)e[t]=0}function ee(e){var t=e.state,n=t.pending;n>e.avail_out&&(n=e.avail_out),0!==n&&(i.arraySet(e.output,t.pending_buf,t.pending_out,n,e.next_out),e.next_out+=n,t.pending_out+=n,e.total_out+=n,e.avail_out-=n,t.pending-=n,0===t.pending&&(t.pending_out=0))}function te(e,t){s._tr_flush_block(e,e.block_start>=0?e.block_start:-1,e.strstart-e.block_start,t),e.block_start=e.strstart,ee(e.strm)}function ne(e,t){e.pending_buf[e.pending++]=t}function re(e,t){e.pending_buf[e.pending++]=t>>>8&255,e.pending_buf[e.pending++]=255&t}function ie(e,t){var n,r,i=e.max_chain_length,s=e.strstart,o=e.prev_length,a=e.nice_match,u=e.strstart>e.w_size-B?e.strstart-(e.w_size-B):0,l=e.window,c=e.w_mask,h=e.prev,d=e.strstart+L,p=l[s+o-1],f=l[s+o];e.prev_length>=e.good_match&&(i>>=2),a>e.lookahead&&(a=e.lookahead);do{if(l[(n=t)+o]===f&&l[n+o-1]===p&&l[n]===l[s]&&l[++n]===l[s+1]){s+=2,n++;do{}while(l[++s]===l[++n]&&l[++s]===l[++n]&&l[++s]===l[++n]&&l[++s]===l[++n]&&l[++s]===l[++n]&&l[++s]===l[++n]&&l[++s]===l[++n]&&l[++s]===l[++n]&&so){if(e.match_start=t,o=r,r>=a)break;p=l[s+o-1],f=l[s+o]}}}while((t=h[t&c])>u&&0!=--i);return o<=e.lookahead?o:e.lookahead}function se(e){var t,n,r,s,u,l,c,h,d,p,f=e.w_size;do{if(s=e.window_size-e.lookahead-e.strstart,e.strstart>=f+(f-B)){i.arraySet(e.window,e.window,f,f,0),e.match_start-=f,e.strstart-=f,e.block_start-=f,t=n=e.hash_size;do{r=e.head[--t],e.head[t]=r>=f?r-f:0}while(--n);t=n=f;do{r=e.prev[--t],e.prev[t]=r>=f?r-f:0}while(--n);s+=f}if(0===e.strm.avail_in)break;if(l=e.strm,c=e.window,h=e.strstart+e.lookahead,d=s,p=void 0,(p=l.avail_in)>d&&(p=d),n=0===p?0:(l.avail_in-=p,i.arraySet(c,l.input,l.next_in,p,h),1===l.state.wrap?l.adler=o(l.adler,c,p,h):2===l.state.wrap&&(l.adler=a(l.adler,c,p,h)),l.next_in+=p,l.total_in+=p,p),e.lookahead+=n,e.lookahead+e.insert>=P)for(u=e.strstart-e.insert,e.ins_h=e.window[u],e.ins_h=(e.ins_h<=P&&(e.ins_h=(e.ins_h<=P)if(r=s._tr_tally(e,e.strstart-e.match_start,e.match_length-P),e.lookahead-=e.match_length,e.match_length<=e.max_lazy_match&&e.lookahead>=P){e.match_length--;do{e.strstart++,e.ins_h=(e.ins_h<=P&&(e.ins_h=(e.ins_h<4096)&&(e.match_length=P-1)),e.prev_length>=P&&e.match_length<=e.prev_length){i=e.strstart+e.lookahead-P,r=s._tr_tally(e,e.strstart-1-e.prev_match,e.prev_length-P),e.lookahead-=e.prev_length-1,e.prev_length-=2;do{++e.strstart<=i&&(e.ins_h=(e.ins_h<15&&(a=2,r-=16),s<1||s>T||n!==k||r<8||r>15||t<0||t>9||o<0||o>E)return Z(e,w);8===r&&(r=9);var u=new le;return e.state=u,u.strm=e,u.wrap=a,u.gzhead=null,u.w_bits=r,u.w_size=1<e.pending_buf_size-5&&(n=e.pending_buf_size-5);;){if(e.lookahead<=1){if(se(e),0===e.lookahead&&t===l)return V;if(0===e.lookahead)break}e.strstart+=e.lookahead,e.lookahead=0;var r=e.block_start+n;if((0===e.strstart||e.strstart>=r)&&(e.lookahead=e.strstart-r,e.strstart=r,te(e,!1),0===e.strm.avail_out))return V;if(e.strstart-e.block_start>=e.w_size-B&&(te(e,!1),0===e.strm.avail_out))return V}return e.insert=0,t===d?(te(e,!0),0===e.strm.avail_out?X:Y):(e.strstart>e.block_start&&(te(e,!1),e.strm.avail_out),V)})),new ue(4,4,8,4,oe),new ue(4,5,16,8,oe),new ue(4,6,32,32,oe),new ue(4,4,16,16,ae),new ue(8,16,32,32,ae),new ue(8,16,128,128,ae),new ue(8,32,128,256,ae),new ue(32,128,258,1024,ae),new ue(32,258,258,4096,ae)],t.deflateInit=function(e,t){return de(e,t,k,C,D,A)},t.deflateInit2=de,t.deflateReset=he,t.deflateResetKeep=ce,t.deflateSetHeader=function(e,t){return e&&e.state?2!==e.state.wrap?w:(e.state.gzhead=t,f):w},t.deflate=function(e,t){var n,i,o,u;if(!e||!e.state||t>p||t<0)return e?Z(e,w):w;if(i=e.state,!e.output||!e.input&&0!==e.avail_in||i.status===q&&t!==d)return Z(e,0===e.avail_out?b:w);if(i.strm=e,n=i.last_flush,i.last_flush=t,i.status===M)if(2===i.wrap)e.adler=0,ne(i,31),ne(i,139),ne(i,8),i.gzhead?(ne(i,(i.gzhead.text?1:0)+(i.gzhead.hcrc?2:0)+(i.gzhead.extra?4:0)+(i.gzhead.name?8:0)+(i.gzhead.comment?16:0)),ne(i,255&i.gzhead.time),ne(i,i.gzhead.time>>8&255),ne(i,i.gzhead.time>>16&255),ne(i,i.gzhead.time>>24&255),ne(i,9===i.level?2:i.strategy>=v||i.level<2?4:0),ne(i,255&i.gzhead.os),i.gzhead.extra&&i.gzhead.extra.length&&(ne(i,255&i.gzhead.extra.length),ne(i,i.gzhead.extra.length>>8&255)),i.gzhead.hcrc&&(e.adler=a(e.adler,i.pending_buf,i.pending,0)),i.gzindex=0,i.status=j):(ne(i,0),ne(i,0),ne(i,0),ne(i,0),ne(i,0),ne(i,9===i.level?2:i.strategy>=v||i.level<2?4:0),ne(i,J),i.status=G);else{var g=k+(i.w_bits-8<<4)<<8;g|=(i.strategy>=v||i.level<2?0:i.level<6?1:6===i.level?2:3)<<6,0!==i.strstart&&(g|=U),g+=31-g%31,i.status=G,re(i,g),0!==i.strstart&&(re(i,e.adler>>>16),re(i,65535&e.adler)),e.adler=1}if(i.status===j)if(i.gzhead.extra){for(o=i.pending;i.gzindex<(65535&i.gzhead.extra.length)&&(i.pending!==i.pending_buf_size||(i.gzhead.hcrc&&i.pending>o&&(e.adler=a(e.adler,i.pending_buf,i.pending-o,o)),ee(e),o=i.pending,i.pending!==i.pending_buf_size));)ne(i,255&i.gzhead.extra[i.gzindex]),i.gzindex++;i.gzhead.hcrc&&i.pending>o&&(e.adler=a(e.adler,i.pending_buf,i.pending-o,o)),i.gzindex===i.gzhead.extra.length&&(i.gzindex=0,i.status=W)}else i.status=W;if(i.status===W)if(i.gzhead.name){o=i.pending;do{if(i.pending===i.pending_buf_size&&(i.gzhead.hcrc&&i.pending>o&&(e.adler=a(e.adler,i.pending_buf,i.pending-o,o)),ee(e),o=i.pending,i.pending===i.pending_buf_size)){u=1;break}u=i.gzindexo&&(e.adler=a(e.adler,i.pending_buf,i.pending-o,o)),0===u&&(i.gzindex=0,i.status=z)}else i.status=z;if(i.status===z)if(i.gzhead.comment){o=i.pending;do{if(i.pending===i.pending_buf_size&&(i.gzhead.hcrc&&i.pending>o&&(e.adler=a(e.adler,i.pending_buf,i.pending-o,o)),ee(e),o=i.pending,i.pending===i.pending_buf_size)){u=1;break}u=i.gzindexo&&(e.adler=a(e.adler,i.pending_buf,i.pending-o,o)),0===u&&(i.status=H)}else i.status=H;if(i.status===H&&(i.gzhead.hcrc?(i.pending+2>i.pending_buf_size&&ee(e),i.pending+2<=i.pending_buf_size&&(ne(i,255&e.adler),ne(i,e.adler>>8&255),e.adler=0,i.status=G)):i.status=G),0!==i.pending){if(ee(e),0===e.avail_out)return i.last_flush=-1,f}else if(0===e.avail_in&&Q(t)<=Q(n)&&t!==d)return Z(e,b);if(i.status===q&&0!==e.avail_in)return Z(e,b);if(0!==e.avail_in||0!==i.lookahead||t!==l&&i.status!==q){var _=i.strategy===v?function(e,t){for(var n;;){if(0===e.lookahead&&(se(e),0===e.lookahead)){if(t===l)return V;break}if(e.match_length=0,n=s._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,n&&(te(e,!1),0===e.strm.avail_out))return V}return e.insert=0,t===d?(te(e,!0),0===e.strm.avail_out?X:Y):e.last_lit&&(te(e,!1),0===e.strm.avail_out)?V:K}(i,t):i.strategy===x?function(e,t){for(var n,r,i,o,a=e.window;;){if(e.lookahead<=L){if(se(e),e.lookahead<=L&&t===l)return V;if(0===e.lookahead)break}if(e.match_length=0,e.lookahead>=P&&e.strstart>0&&(r=a[i=e.strstart-1])===a[++i]&&r===a[++i]&&r===a[++i]){o=e.strstart+L;do{}while(r===a[++i]&&r===a[++i]&&r===a[++i]&&r===a[++i]&&r===a[++i]&&r===a[++i]&&r===a[++i]&&r===a[++i]&&ie.lookahead&&(e.match_length=e.lookahead)}if(e.match_length>=P?(n=s._tr_tally(e,1,e.match_length-P),e.lookahead-=e.match_length,e.strstart+=e.match_length,e.match_length=0):(n=s._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++),n&&(te(e,!1),0===e.strm.avail_out))return V}return e.insert=0,t===d?(te(e,!0),0===e.strm.avail_out?X:Y):e.last_lit&&(te(e,!1),0===e.strm.avail_out)?V:K}(i,t):r[i.level].func(i,t);if(_!==X&&_!==Y||(i.status=q),_===V||_===X)return 0===e.avail_out&&(i.last_flush=-1),f;if(_===K&&(t===c?s._tr_align(i):t!==p&&(s._tr_stored_block(i,0,0,!1),t===h&&($(i.head),0===i.lookahead&&(i.strstart=0,i.block_start=0,i.insert=0))),ee(e),0===e.avail_out))return i.last_flush=-1,f}return t!==d?f:i.wrap<=0?m:(2===i.wrap?(ne(i,255&e.adler),ne(i,e.adler>>8&255),ne(i,e.adler>>16&255),ne(i,e.adler>>24&255),ne(i,255&e.total_in),ne(i,e.total_in>>8&255),ne(i,e.total_in>>16&255),ne(i,e.total_in>>24&255)):(re(i,e.adler>>>16),re(i,65535&e.adler)),ee(e),i.wrap>0&&(i.wrap=-i.wrap),0!==i.pending?f:m)},t.deflateEnd=function(e){var t;return e&&e.state?(t=e.state.status)!==M&&t!==j&&t!==W&&t!==z&&t!==H&&t!==G&&t!==q?Z(e,w):(e.state=null,t===G?Z(e,g):f):w},t.deflateSetDictionary=function(e,t){var n,r,s,a,u,l,c,h,d=t.length;if(!e||!e.state)return w;if(2===(a=(n=e.state).wrap)||1===a&&n.status!==M||n.lookahead)return w;for(1===a&&(e.adler=o(e.adler,t,d,0)),n.wrap=0,d>=n.w_size&&(0===a&&($(n.head),n.strstart=0,n.block_start=0,n.insert=0),h=new i.Buf8(n.w_size),i.arraySet(h,t,d-n.w_size,n.w_size,0),t=h,d=n.w_size),u=e.avail_in,l=e.next_in,c=e.input,e.avail_in=d,e.next_in=0,e.input=t,se(n);n.lookahead>=P;){r=n.strstart,s=n.lookahead-(P-1);do{n.ins_h=(n.ins_h<=0;)e[t]=0}var l=0,c=1,h=2,d=29,p=256,f=p+1+d,m=30,w=19,g=2*f+1,b=15,_=16,y=7,v=256,x=16,E=17,A=18,S=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],k=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],T=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],C=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],D=new Array(2*(f+2));u(D);var R=new Array(2*m);u(R);var O=new Array(512);u(O);var I=new Array(256);u(I);var N=new Array(d);u(N);var F,P,L,B=new Array(m);function U(e,t,n,r,i){this.static_tree=e,this.extra_bits=t,this.extra_base=n,this.elems=r,this.max_length=i,this.has_stree=e&&e.length}function M(e,t){this.dyn_tree=e,this.max_code=0,this.stat_desc=t}function j(e){return e<256?O[e]:O[256+(e>>>7)]}function W(e,t){e.pending_buf[e.pending++]=255&t,e.pending_buf[e.pending++]=t>>>8&255}function z(e,t,n){e.bi_valid>_-n?(e.bi_buf|=t<>_-e.bi_valid,e.bi_valid+=n-_):(e.bi_buf|=t<>>=1,n<<=1}while(--t>0);return n>>>1}function q(e,t,n){var r,i,s=new Array(b+1),o=0;for(r=1;r<=b;r++)s[r]=o=o+n[r-1]<<1;for(i=0;i<=t;i++){var a=e[2*i+1];0!==a&&(e[2*i]=G(s[a]++,a))}}function V(e){var t;for(t=0;t8?W(e,e.bi_buf):e.bi_valid>0&&(e.pending_buf[e.pending++]=e.bi_buf),e.bi_buf=0,e.bi_valid=0}function X(e,t,n,r){var i=2*t,s=2*n;return e[i]>1;n>=1;n--)Y(e,s,n);i=u;do{n=e.heap[1],e.heap[1]=e.heap[e.heap_len--],Y(e,s,1),r=e.heap[1],e.heap[--e.heap_max]=n,e.heap[--e.heap_max]=r,s[2*i]=s[2*n]+s[2*r],e.depth[i]=(e.depth[n]>=e.depth[r]?e.depth[n]:e.depth[r])+1,s[2*n+1]=s[2*r+1]=i,e.heap[1]=i++,Y(e,s,1)}while(e.heap_len>=2);e.heap[--e.heap_max]=e.heap[1],function(e,t){var n,r,i,s,o,a,u=t.dyn_tree,l=t.max_code,c=t.stat_desc.static_tree,h=t.stat_desc.has_stree,d=t.stat_desc.extra_bits,p=t.stat_desc.extra_base,f=t.stat_desc.max_length,m=0;for(s=0;s<=b;s++)e.bl_count[s]=0;for(u[2*e.heap[e.heap_max]+1]=0,n=e.heap_max+1;nf&&(s=f,m++),u[2*r+1]=s,r>l||(e.bl_count[s]++,o=0,r>=p&&(o=d[r-p]),a=u[2*r],e.opt_len+=a*(s+o),h&&(e.static_len+=a*(c[2*r+1]+o)));if(0!==m){do{for(s=f-1;0===e.bl_count[s];)s--;e.bl_count[s]--,e.bl_count[s+1]+=2,e.bl_count[f]--,m-=2}while(m>0);for(s=f;0!==s;s--)for(r=e.bl_count[s];0!==r;)(i=e.heap[--n])>l||(u[2*i+1]!==s&&(e.opt_len+=(s-u[2*i+1])*u[2*i],u[2*i+1]=s),r--)}}(e,t),q(s,l,e.bl_count)}function Q(e,t,n){var r,i,s=-1,o=t[1],a=0,u=7,l=4;for(0===o&&(u=138,l=3),t[2*(n+1)+1]=65535,r=0;r<=n;r++)i=o,o=t[2*(r+1)+1],++a>=7;r0?(e.strm.data_type===a&&(e.strm.data_type=function(e){var t,n=4093624447;for(t=0;t<=31;t++,n>>>=1)if(1&n&&0!==e.dyn_ltree[2*t])return s;if(0!==e.dyn_ltree[18]||0!==e.dyn_ltree[20]||0!==e.dyn_ltree[26])return o;for(t=32;t=3&&0===e.bl_tree[2*C[t]+1];t--);return e.opt_len+=3*(t+1)+5+5+4,t}(e),u=e.opt_len+3+7>>>3,(l=e.static_len+3+7>>>3)<=u&&(u=l)):u=l=n+5,n+4<=u&&-1!==t?te(e,t,n,r):e.strategy===i||l===u?(z(e,(c<<1)+(r?1:0),3),J(e,D,R)):(z(e,(h<<1)+(r?1:0),3),function(e,t,n,r){var i;for(z(e,t-257,5),z(e,n-1,5),z(e,r-4,4),i=0;i>>8&255,e.pending_buf[e.d_buf+2*e.last_lit+1]=255&t,e.pending_buf[e.l_buf+e.last_lit]=255&n,e.last_lit++,0===t?e.dyn_ltree[2*n]++:(e.matches++,t--,e.dyn_ltree[2*(I[n]+p+1)]++,e.dyn_dtree[2*j(t)]++),e.last_lit===e.lit_bufsize-1},t._tr_align=function(e){z(e,c<<1,3),H(e,v,D),function(e){16===e.bi_valid?(W(e,e.bi_buf),e.bi_buf=0,e.bi_valid=0):e.bi_valid>=8&&(e.pending_buf[e.pending++]=255&e.bi_buf,e.bi_buf>>=8,e.bi_valid-=8)}(e)}},function(e,t,n){"use strict";var r=n(124),i=n(8),s=n(70),o=n(72),a=n(43),u=n(71),l=n(127),c=Object.prototype.toString;function h(e){if(!(this instanceof h))return new h(e);this.options=i.assign({chunkSize:16384,windowBits:0,to:""},e||{});var t=this.options;t.raw&&t.windowBits>=0&&t.windowBits<16&&(t.windowBits=-t.windowBits,0===t.windowBits&&(t.windowBits=-15)),!(t.windowBits>=0&&t.windowBits<16)||e&&e.windowBits||(t.windowBits+=32),t.windowBits>15&&t.windowBits<48&&0==(15&t.windowBits)&&(t.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new u,this.strm.avail_out=0;var n=r.inflateInit2(this.strm,t.windowBits);if(n!==o.Z_OK)throw new Error(a[n]);if(this.header=new l,r.inflateGetHeader(this.strm,this.header),t.dictionary&&("string"==typeof t.dictionary?t.dictionary=s.string2buf(t.dictionary):"[object ArrayBuffer]"===c.call(t.dictionary)&&(t.dictionary=new Uint8Array(t.dictionary)),t.raw&&(n=r.inflateSetDictionary(this.strm,t.dictionary))!==o.Z_OK))throw new Error(a[n])}function d(e,t){var n=new h(t);if(n.push(e,!0),n.err)throw n.msg||a[n.err];return n.result}h.prototype.push=function(e,t){var n,a,u,l,h,d=this.strm,p=this.options.chunkSize,f=this.options.dictionary,m=!1;if(this.ended)return!1;a=t===~~t?t:!0===t?o.Z_FINISH:o.Z_NO_FLUSH,"string"==typeof e?d.input=s.binstring2buf(e):"[object ArrayBuffer]"===c.call(e)?d.input=new Uint8Array(e):d.input=e,d.next_in=0,d.avail_in=d.input.length;do{if(0===d.avail_out&&(d.output=new i.Buf8(p),d.next_out=0,d.avail_out=p),(n=r.inflate(d,o.Z_NO_FLUSH))===o.Z_NEED_DICT&&f&&(n=r.inflateSetDictionary(this.strm,f)),n===o.Z_BUF_ERROR&&!0===m&&(n=o.Z_OK,m=!1),n!==o.Z_STREAM_END&&n!==o.Z_OK)return this.onEnd(n),this.ended=!0,!1;d.next_out&&(0!==d.avail_out&&n!==o.Z_STREAM_END&&(0!==d.avail_in||a!==o.Z_FINISH&&a!==o.Z_SYNC_FLUSH)||("string"===this.options.to?(u=s.utf8border(d.output,d.next_out),l=d.next_out-u,h=s.buf2string(d.output,u),d.next_out=l,d.avail_out=p-l,l&&i.arraySet(d.output,d.output,u,l,0),this.onData(h)):this.onData(i.shrinkBuf(d.output,d.next_out)))),0===d.avail_in&&0===d.avail_out&&(m=!0)}while((d.avail_in>0||0===d.avail_out)&&n!==o.Z_STREAM_END);return n===o.Z_STREAM_END&&(a=o.Z_FINISH),a===o.Z_FINISH?(n=r.inflateEnd(this.strm),this.onEnd(n),this.ended=!0,n===o.Z_OK):a!==o.Z_SYNC_FLUSH||(this.onEnd(o.Z_OK),d.avail_out=0,!0)},h.prototype.onData=function(e){this.chunks.push(e)},h.prototype.onEnd=function(e){e===o.Z_OK&&("string"===this.options.to?this.result=this.chunks.join(""):this.result=i.flattenChunks(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg},t.Inflate=h,t.inflate=d,t.inflateRaw=function(e,t){return(t=t||{}).raw=!0,d(e,t)},t.ungzip=d},function(e,t,n){"use strict";var r=n(8),i=n(68),s=n(69),o=n(125),a=n(126),u=0,l=1,c=2,h=4,d=5,p=6,f=0,m=1,w=2,g=-2,b=-3,_=-4,y=-5,v=8,x=1,E=2,A=3,S=4,k=5,T=6,C=7,D=8,R=9,O=10,I=11,N=12,F=13,P=14,L=15,B=16,U=17,M=18,j=19,W=20,z=21,H=22,G=23,q=24,V=25,K=26,X=27,Y=28,J=29,Z=30,Q=31,$=32,ee=852,te=592,ne=15;function re(e){return(e>>>24&255)+(e>>>8&65280)+((65280&e)<<8)+((255&e)<<24)}function ie(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new r.Buf16(320),this.work=new r.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function se(e){var t;return e&&e.state?(t=e.state,e.total_in=e.total_out=t.total=0,e.msg="",t.wrap&&(e.adler=1&t.wrap),t.mode=x,t.last=0,t.havedict=0,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new r.Buf32(ee),t.distcode=t.distdyn=new r.Buf32(te),t.sane=1,t.back=-1,f):g}function oe(e){var t;return e&&e.state?((t=e.state).wsize=0,t.whave=0,t.wnext=0,se(e)):g}function ae(e,t){var n,r;return e&&e.state?(r=e.state,t<0?(n=0,t=-t):(n=1+(t>>4),t<48&&(t&=15)),t&&(t<8||t>15)?g:(null!==r.window&&r.wbits!==t&&(r.window=null),r.wrap=n,r.wbits=t,oe(e))):g}function ue(e,t){var n,r;return e?(r=new ie,e.state=r,r.window=null,(n=ae(e,t))!==f&&(e.state=null),n):g}var le,ce,he=!0;function de(e){if(he){var t;for(le=new r.Buf32(512),ce=new r.Buf32(32),t=0;t<144;)e.lens[t++]=8;for(;t<256;)e.lens[t++]=9;for(;t<280;)e.lens[t++]=7;for(;t<288;)e.lens[t++]=8;for(a(l,e.lens,0,288,le,0,e.work,{bits:9}),t=0;t<32;)e.lens[t++]=5;a(c,e.lens,0,32,ce,0,e.work,{bits:5}),he=!1}e.lencode=le,e.lenbits=9,e.distcode=ce,e.distbits=5}function pe(e,t,n,i){var s,o=e.state;return null===o.window&&(o.wsize=1<=o.wsize?(r.arraySet(o.window,t,n-o.wsize,o.wsize,0),o.wnext=0,o.whave=o.wsize):((s=o.wsize-o.wnext)>i&&(s=i),r.arraySet(o.window,t,n-i,s,o.wnext),(i-=s)?(r.arraySet(o.window,t,n-i,i,0),o.wnext=i,o.whave=o.wsize):(o.wnext+=s,o.wnext===o.wsize&&(o.wnext=0),o.whave>>8&255,n.check=s(n.check,Te,2,0),ae=0,ue=0,n.mode=E;break}if(n.flags=0,n.head&&(n.head.done=!1),!(1&n.wrap)||(((255&ae)<<8)+(ae>>8))%31){e.msg="incorrect header check",n.mode=Z;break}if((15&ae)!==v){e.msg="unknown compression method",n.mode=Z;break}if(ue-=4,xe=8+(15&(ae>>>=4)),0===n.wbits)n.wbits=xe;else if(xe>n.wbits){e.msg="invalid window size",n.mode=Z;break}n.dmax=1<>8&1),512&n.flags&&(Te[0]=255&ae,Te[1]=ae>>>8&255,n.check=s(n.check,Te,2,0)),ae=0,ue=0,n.mode=A;case A:for(;ue<32;){if(0===se)break e;se--,ae+=ee[ne++]<>>8&255,Te[2]=ae>>>16&255,Te[3]=ae>>>24&255,n.check=s(n.check,Te,4,0)),ae=0,ue=0,n.mode=S;case S:for(;ue<16;){if(0===se)break e;se--,ae+=ee[ne++]<>8),512&n.flags&&(Te[0]=255&ae,Te[1]=ae>>>8&255,n.check=s(n.check,Te,2,0)),ae=0,ue=0,n.mode=k;case k:if(1024&n.flags){for(;ue<16;){if(0===se)break e;se--,ae+=ee[ne++]<>>8&255,n.check=s(n.check,Te,2,0)),ae=0,ue=0}else n.head&&(n.head.extra=null);n.mode=T;case T:if(1024&n.flags&&((he=n.length)>se&&(he=se),he&&(n.head&&(xe=n.head.extra_len-n.length,n.head.extra||(n.head.extra=new Array(n.head.extra_len)),r.arraySet(n.head.extra,ee,ne,he,xe)),512&n.flags&&(n.check=s(n.check,ee,he,ne)),se-=he,ne+=he,n.length-=he),n.length))break e;n.length=0,n.mode=C;case C:if(2048&n.flags){if(0===se)break e;he=0;do{xe=ee[ne+he++],n.head&&xe&&n.length<65536&&(n.head.name+=String.fromCharCode(xe))}while(xe&&he>9&1,n.head.done=!0),e.adler=n.check=0,n.mode=N;break;case O:for(;ue<32;){if(0===se)break e;se--,ae+=ee[ne++]<>>=7&ue,ue-=7&ue,n.mode=X;break}for(;ue<3;){if(0===se)break e;se--,ae+=ee[ne++]<>>=1)){case 0:n.mode=P;break;case 1:if(de(n),n.mode=W,t===p){ae>>>=2,ue-=2;break e}break;case 2:n.mode=U;break;case 3:e.msg="invalid block type",n.mode=Z}ae>>>=2,ue-=2;break;case P:for(ae>>>=7&ue,ue-=7&ue;ue<32;){if(0===se)break e;se--,ae+=ee[ne++]<>>16^65535)){e.msg="invalid stored block lengths",n.mode=Z;break}if(n.length=65535&ae,ae=0,ue=0,n.mode=L,t===p)break e;case L:n.mode=B;case B:if(he=n.length){if(he>se&&(he=se),he>oe&&(he=oe),0===he)break e;r.arraySet(te,ee,ne,he,ie),se-=he,ne+=he,oe-=he,ie+=he,n.length-=he;break}n.mode=N;break;case U:for(;ue<14;){if(0===se)break e;se--,ae+=ee[ne++]<>>=5,ue-=5,n.ndist=1+(31&ae),ae>>>=5,ue-=5,n.ncode=4+(15&ae),ae>>>=4,ue-=4,n.nlen>286||n.ndist>30){e.msg="too many length or distance symbols",n.mode=Z;break}n.have=0,n.mode=M;case M:for(;n.have>>=3,ue-=3}for(;n.have<19;)n.lens[Ce[n.have++]]=0;if(n.lencode=n.lendyn,n.lenbits=7,Ae={bits:n.lenbits},Ee=a(u,n.lens,0,19,n.lencode,0,n.work,Ae),n.lenbits=Ae.bits,Ee){e.msg="invalid code lengths set",n.mode=Z;break}n.have=0,n.mode=j;case j:for(;n.have>>16&255,be=65535&ke,!((we=ke>>>24)<=ue);){if(0===se)break e;se--,ae+=ee[ne++]<>>=we,ue-=we,n.lens[n.have++]=be;else{if(16===be){for(Se=we+2;ue>>=we,ue-=we,0===n.have){e.msg="invalid bit length repeat",n.mode=Z;break}xe=n.lens[n.have-1],he=3+(3&ae),ae>>>=2,ue-=2}else if(17===be){for(Se=we+3;ue>>=we)),ae>>>=3,ue-=3}else{for(Se=we+7;ue>>=we)),ae>>>=7,ue-=7}if(n.have+he>n.nlen+n.ndist){e.msg="invalid bit length repeat",n.mode=Z;break}for(;he--;)n.lens[n.have++]=xe}}if(n.mode===Z)break;if(0===n.lens[256]){e.msg="invalid code -- missing end-of-block",n.mode=Z;break}if(n.lenbits=9,Ae={bits:n.lenbits},Ee=a(l,n.lens,0,n.nlen,n.lencode,0,n.work,Ae),n.lenbits=Ae.bits,Ee){e.msg="invalid literal/lengths set",n.mode=Z;break}if(n.distbits=6,n.distcode=n.distdyn,Ae={bits:n.distbits},Ee=a(c,n.lens,n.nlen,n.ndist,n.distcode,0,n.work,Ae),n.distbits=Ae.bits,Ee){e.msg="invalid distances set",n.mode=Z;break}if(n.mode=W,t===p)break e;case W:n.mode=z;case z:if(se>=6&&oe>=258){e.next_out=ie,e.avail_out=oe,e.next_in=ne,e.avail_in=se,n.hold=ae,n.bits=ue,o(e,ce),ie=e.next_out,te=e.output,oe=e.avail_out,ne=e.next_in,ee=e.input,se=e.avail_in,ae=n.hold,ue=n.bits,n.mode===N&&(n.back=-1);break}for(n.back=0;ge=(ke=n.lencode[ae&(1<>>16&255,be=65535&ke,!((we=ke>>>24)<=ue);){if(0===se)break e;se--,ae+=ee[ne++]<>_e)])>>>16&255,be=65535&ke,!(_e+(we=ke>>>24)<=ue);){if(0===se)break e;se--,ae+=ee[ne++]<>>=_e,ue-=_e,n.back+=_e}if(ae>>>=we,ue-=we,n.back+=we,n.length=be,0===ge){n.mode=K;break}if(32&ge){n.back=-1,n.mode=N;break}if(64&ge){e.msg="invalid literal/length code",n.mode=Z;break}n.extra=15&ge,n.mode=H;case H:if(n.extra){for(Se=n.extra;ue>>=n.extra,ue-=n.extra,n.back+=n.extra}n.was=n.length,n.mode=G;case G:for(;ge=(ke=n.distcode[ae&(1<>>16&255,be=65535&ke,!((we=ke>>>24)<=ue);){if(0===se)break e;se--,ae+=ee[ne++]<>_e)])>>>16&255,be=65535&ke,!(_e+(we=ke>>>24)<=ue);){if(0===se)break e;se--,ae+=ee[ne++]<>>=_e,ue-=_e,n.back+=_e}if(ae>>>=we,ue-=we,n.back+=we,64&ge){e.msg="invalid distance code",n.mode=Z;break}n.offset=be,n.extra=15&ge,n.mode=q;case q:if(n.extra){for(Se=n.extra;ue>>=n.extra,ue-=n.extra,n.back+=n.extra}if(n.offset>n.dmax){e.msg="invalid distance too far back",n.mode=Z;break}n.mode=V;case V:if(0===oe)break e;if(he=ce-oe,n.offset>he){if((he=n.offset-he)>n.whave&&n.sane){e.msg="invalid distance too far back",n.mode=Z;break}he>n.wnext?(he-=n.wnext,fe=n.wsize-he):fe=n.wnext-he,he>n.length&&(he=n.length),me=n.window}else me=te,fe=ie-n.offset,he=n.length;he>oe&&(he=oe),oe-=he,n.length-=he;do{te[ie++]=me[fe++]}while(--he);0===n.length&&(n.mode=z);break;case K:if(0===oe)break e;te[ie++]=n.length,oe--,n.mode=z;break;case X:if(n.wrap){for(;ue<32;){if(0===se)break e;se--,ae|=ee[ne++]<>>=y=_>>>24,f-=y,0===(y=_>>>16&255))k[s++]=65535&_;else{if(!(16&y)){if(0==(64&y)){_=m[(65535&_)+(p&(1<>>=y,f-=y),f<15&&(p+=S[r++]<>>=y=_>>>24,f-=y,!(16&(y=_>>>16&255))){if(0==(64&y)){_=w[(65535&_)+(p&(1<u){e.msg="invalid distance too far back",n.mode=30;break e}if(p>>>=y,f-=y,x>(y=s-o)){if((y=x-y)>c&&n.sane){e.msg="invalid distance too far back",n.mode=30;break e}if(E=0,A=d,0===h){if(E+=l-y,y2;)k[s++]=A[E++],k[s++]=A[E++],k[s++]=A[E++],v-=3;v&&(k[s++]=A[E++],v>1&&(k[s++]=A[E++]))}else{E=s-x;do{k[s++]=k[E++],k[s++]=k[E++],k[s++]=k[E++],v-=3}while(v>2);v&&(k[s++]=k[E++],v>1&&(k[s++]=k[E++]))}break}}break}}while(r>3,p&=(1<<(f-=v<<3))-1,e.next_in=r,e.next_out=s,e.avail_in=r=1&&0===P[k];k--);if(T>k&&(T=k),0===k)return l[c++]=20971520,l[c++]=20971520,d.bits=1,0;for(S=1;S0&&(0===e||1!==k))return-1;for(L[1]=0,E=1;E<15;E++)L[E+1]=L[E]+P[E];for(A=0;A852||2===e&&O>592)return 1;for(;;){_=E-D,h[A]b?(y=B[U+h[A]],v=N[F+h[A]]):(y=96,v=0),p=1<>D)+(f-=p)]=_<<24|y<<16|v|0}while(0!==f);for(p=1<>=1;if(0!==p?(I&=p-1,I+=p):I=0,A++,0==--P[E]){if(E===k)break;E=t[n+h[A]]}if(E>T&&(I&w)!==m){for(0===D&&(D=T),g+=S,R=1<<(C=E-D);C+D852||2===e&&O>592)return 1;l[m=I&w]=T<<24|C<<16|g-c|0}}return 0!==I&&(l[g+I]=E-D<<24|64<<16|0),d.bits=T,0}},function(e,t,n){"use strict";e.exports=function(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1}},function(e,t,n){"use strict";var r=n(11),i=n(73),s=n(74),o=n(129),a=n(130),u=0,l=1,c=2,h=4,d=5,p=6,f=0,m=1,w=2,g=-2,b=-3,_=-4,y=-5,v=8,x=1,E=2,A=3,S=4,k=5,T=6,C=7,D=8,R=9,O=10,I=11,N=12,F=13,P=14,L=15,B=16,U=17,M=18,j=19,W=20,z=21,H=22,G=23,q=24,V=25,K=26,X=27,Y=28,J=29,Z=30,Q=31,$=32,ee=852,te=592,ne=15;function re(e){return(e>>>24&255)+(e>>>8&65280)+((65280&e)<<8)+((255&e)<<24)}function ie(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new r.Buf16(320),this.work=new r.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function se(e){var t;return e&&e.state?(t=e.state,e.total_in=e.total_out=t.total=0,e.msg="",t.wrap&&(e.adler=1&t.wrap),t.mode=x,t.last=0,t.havedict=0,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new r.Buf32(ee),t.distcode=t.distdyn=new r.Buf32(te),t.sane=1,t.back=-1,f):g}function oe(e){var t;return e&&e.state?((t=e.state).wsize=0,t.whave=0,t.wnext=0,se(e)):g}function ae(e,t){var n,r;return e&&e.state?(r=e.state,t<0?(n=0,t=-t):(n=1+(t>>4),t<48&&(t&=15)),t&&(t<8||t>15)?g:(null!==r.window&&r.wbits!==t&&(r.window=null),r.wrap=n,r.wbits=t,oe(e))):g}function ue(e,t){var n,r;return e?(r=new ie,e.state=r,r.window=null,(n=ae(e,t))!==f&&(e.state=null),n):g}var le,ce,he=!0;function de(e){if(he){var t;for(le=new r.Buf32(512),ce=new r.Buf32(32),t=0;t<144;)e.lens[t++]=8;for(;t<256;)e.lens[t++]=9;for(;t<280;)e.lens[t++]=7;for(;t<288;)e.lens[t++]=8;for(a(l,e.lens,0,288,le,0,e.work,{bits:9}),t=0;t<32;)e.lens[t++]=5;a(c,e.lens,0,32,ce,0,e.work,{bits:5}),he=!1}e.lencode=le,e.lenbits=9,e.distcode=ce,e.distbits=5}function pe(e,t,n,i){var s,o=e.state;return null===o.window&&(o.wsize=1<=o.wsize?(r.arraySet(o.window,t,n-o.wsize,o.wsize,0),o.wnext=0,o.whave=o.wsize):((s=o.wsize-o.wnext)>i&&(s=i),r.arraySet(o.window,t,n-i,s,o.wnext),(i-=s)?(r.arraySet(o.window,t,n-i,i,0),o.wnext=i,o.whave=o.wsize):(o.wnext+=s,o.wnext===o.wsize&&(o.wnext=0),o.whave>>8&255,n.check=s(n.check,Te,2,0),ae=0,ue=0,n.mode=E;break}if(n.flags=0,n.head&&(n.head.done=!1),!(1&n.wrap)||(((255&ae)<<8)+(ae>>8))%31){e.msg="incorrect header check",n.mode=Z;break}if((15&ae)!==v){e.msg="unknown compression method",n.mode=Z;break}if(ue-=4,xe=8+(15&(ae>>>=4)),0===n.wbits)n.wbits=xe;else if(xe>n.wbits){e.msg="invalid window size",n.mode=Z;break}n.dmax=1<>8&1),512&n.flags&&(Te[0]=255&ae,Te[1]=ae>>>8&255,n.check=s(n.check,Te,2,0)),ae=0,ue=0,n.mode=A;case A:for(;ue<32;){if(0===se)break e;se--,ae+=ee[ne++]<>>8&255,Te[2]=ae>>>16&255,Te[3]=ae>>>24&255,n.check=s(n.check,Te,4,0)),ae=0,ue=0,n.mode=S;case S:for(;ue<16;){if(0===se)break e;se--,ae+=ee[ne++]<>8),512&n.flags&&(Te[0]=255&ae,Te[1]=ae>>>8&255,n.check=s(n.check,Te,2,0)),ae=0,ue=0,n.mode=k;case k:if(1024&n.flags){for(;ue<16;){if(0===se)break e;se--,ae+=ee[ne++]<>>8&255,n.check=s(n.check,Te,2,0)),ae=0,ue=0}else n.head&&(n.head.extra=null);n.mode=T;case T:if(1024&n.flags&&((he=n.length)>se&&(he=se),he&&(n.head&&(xe=n.head.extra_len-n.length,n.head.extra||(n.head.extra=new Array(n.head.extra_len)),r.arraySet(n.head.extra,ee,ne,he,xe)),512&n.flags&&(n.check=s(n.check,ee,he,ne)),se-=he,ne+=he,n.length-=he),n.length))break e;n.length=0,n.mode=C;case C:if(2048&n.flags){if(0===se)break e;he=0;do{xe=ee[ne+he++],n.head&&xe&&n.length<65536&&(n.head.name+=String.fromCharCode(xe))}while(xe&&he>9&1,n.head.done=!0),e.adler=n.check=0,n.mode=N;break;case O:for(;ue<32;){if(0===se)break e;se--,ae+=ee[ne++]<>>=7&ue,ue-=7&ue,n.mode=X;break}for(;ue<3;){if(0===se)break e;se--,ae+=ee[ne++]<>>=1)){case 0:n.mode=P;break;case 1:if(de(n),n.mode=W,t===p){ae>>>=2,ue-=2;break e}break;case 2:n.mode=U;break;case 3:e.msg="invalid block type",n.mode=Z}ae>>>=2,ue-=2;break;case P:for(ae>>>=7&ue,ue-=7&ue;ue<32;){if(0===se)break e;se--,ae+=ee[ne++]<>>16^65535)){e.msg="invalid stored block lengths",n.mode=Z;break}if(n.length=65535&ae,ae=0,ue=0,n.mode=L,t===p)break e;case L:n.mode=B;case B:if(he=n.length){if(he>se&&(he=se),he>oe&&(he=oe),0===he)break e;r.arraySet(te,ee,ne,he,ie),se-=he,ne+=he,oe-=he,ie+=he,n.length-=he;break}n.mode=N;break;case U:for(;ue<14;){if(0===se)break e;se--,ae+=ee[ne++]<>>=5,ue-=5,n.ndist=1+(31&ae),ae>>>=5,ue-=5,n.ncode=4+(15&ae),ae>>>=4,ue-=4,n.nlen>286||n.ndist>30){e.msg="too many length or distance symbols",n.mode=Z;break}n.have=0,n.mode=M;case M:for(;n.have>>=3,ue-=3}for(;n.have<19;)n.lens[Ce[n.have++]]=0;if(n.lencode=n.lendyn,n.lenbits=7,Ae={bits:n.lenbits},Ee=a(u,n.lens,0,19,n.lencode,0,n.work,Ae),n.lenbits=Ae.bits,Ee){e.msg="invalid code lengths set",n.mode=Z;break}n.have=0,n.mode=j;case j:for(;n.have>>16&255,be=65535&ke,!((we=ke>>>24)<=ue);){if(0===se)break e;se--,ae+=ee[ne++]<>>=we,ue-=we,n.lens[n.have++]=be;else{if(16===be){for(Se=we+2;ue>>=we,ue-=we,0===n.have){e.msg="invalid bit length repeat",n.mode=Z;break}xe=n.lens[n.have-1],he=3+(3&ae),ae>>>=2,ue-=2}else if(17===be){for(Se=we+3;ue>>=we)),ae>>>=3,ue-=3}else{for(Se=we+7;ue>>=we)),ae>>>=7,ue-=7}if(n.have+he>n.nlen+n.ndist){e.msg="invalid bit length repeat",n.mode=Z;break}for(;he--;)n.lens[n.have++]=xe}}if(n.mode===Z)break;if(0===n.lens[256]){e.msg="invalid code -- missing end-of-block",n.mode=Z;break}if(n.lenbits=9,Ae={bits:n.lenbits},Ee=a(l,n.lens,0,n.nlen,n.lencode,0,n.work,Ae),n.lenbits=Ae.bits,Ee){e.msg="invalid literal/lengths set",n.mode=Z;break}if(n.distbits=6,n.distcode=n.distdyn,Ae={bits:n.distbits},Ee=a(c,n.lens,n.nlen,n.ndist,n.distcode,0,n.work,Ae),n.distbits=Ae.bits,Ee){e.msg="invalid distances set",n.mode=Z;break}if(n.mode=W,t===p)break e;case W:n.mode=z;case z:if(se>=6&&oe>=258){e.next_out=ie,e.avail_out=oe,e.next_in=ne,e.avail_in=se,n.hold=ae,n.bits=ue,o(e,ce),ie=e.next_out,te=e.output,oe=e.avail_out,ne=e.next_in,ee=e.input,se=e.avail_in,ae=n.hold,ue=n.bits,n.mode===N&&(n.back=-1);break}for(n.back=0;ge=(ke=n.lencode[ae&(1<>>16&255,be=65535&ke,!((we=ke>>>24)<=ue);){if(0===se)break e;se--,ae+=ee[ne++]<>_e)])>>>16&255,be=65535&ke,!(_e+(we=ke>>>24)<=ue);){if(0===se)break e;se--,ae+=ee[ne++]<>>=_e,ue-=_e,n.back+=_e}if(ae>>>=we,ue-=we,n.back+=we,n.length=be,0===ge){n.mode=K;break}if(32&ge){n.back=-1,n.mode=N;break}if(64&ge){e.msg="invalid literal/length code",n.mode=Z;break}n.extra=15&ge,n.mode=H;case H:if(n.extra){for(Se=n.extra;ue>>=n.extra,ue-=n.extra,n.back+=n.extra}n.was=n.length,n.mode=G;case G:for(;ge=(ke=n.distcode[ae&(1<>>16&255,be=65535&ke,!((we=ke>>>24)<=ue);){if(0===se)break e;se--,ae+=ee[ne++]<>_e)])>>>16&255,be=65535&ke,!(_e+(we=ke>>>24)<=ue);){if(0===se)break e;se--,ae+=ee[ne++]<>>=_e,ue-=_e,n.back+=_e}if(ae>>>=we,ue-=we,n.back+=we,64&ge){e.msg="invalid distance code",n.mode=Z;break}n.offset=be,n.extra=15&ge,n.mode=q;case q:if(n.extra){for(Se=n.extra;ue>>=n.extra,ue-=n.extra,n.back+=n.extra}if(n.offset>n.dmax){e.msg="invalid distance too far back",n.mode=Z;break}n.mode=V;case V:if(0===oe)break e;if(he=ce-oe,n.offset>he){if((he=n.offset-he)>n.whave&&n.sane){e.msg="invalid distance too far back",n.mode=Z;break}he>n.wnext?(he-=n.wnext,fe=n.wsize-he):fe=n.wnext-he,he>n.length&&(he=n.length),me=n.window}else me=te,fe=ie-n.offset,he=n.length;he>oe&&(he=oe),oe-=he,n.length-=he;do{te[ie++]=me[fe++]}while(--he);0===n.length&&(n.mode=z);break;case K:if(0===oe)break e;te[ie++]=n.length,oe--,n.mode=z;break;case X:if(n.wrap){for(;ue<32;){if(0===se)break e;se--,ae|=ee[ne++]<>>=y=_>>>24,f-=y,0===(y=_>>>16&255))k[s++]=65535&_;else{if(!(16&y)){if(0==(64&y)){_=m[(65535&_)+(p&(1<>>=y,f-=y),f<15&&(p+=S[r++]<>>=y=_>>>24,f-=y,!(16&(y=_>>>16&255))){if(0==(64&y)){_=w[(65535&_)+(p&(1<u){e.msg="invalid distance too far back",n.mode=30;break e}if(p>>>=y,f-=y,x>(y=s-o)){if((y=x-y)>c&&n.sane){e.msg="invalid distance too far back",n.mode=30;break e}if(E=0,A=d,0===h){if(E+=l-y,y2;)k[s++]=A[E++],k[s++]=A[E++],k[s++]=A[E++],v-=3;v&&(k[s++]=A[E++],v>1&&(k[s++]=A[E++]))}else{E=s-x;do{k[s++]=k[E++],k[s++]=k[E++],k[s++]=k[E++],v-=3}while(v>2);v&&(k[s++]=k[E++],v>1&&(k[s++]=k[E++]))}break}}break}}while(r>3,p&=(1<<(f-=v<<3))-1,e.next_in=r,e.next_out=s,e.avail_in=r=1&&0===P[k];k--);if(T>k&&(T=k),0===k)return l[c++]=20971520,l[c++]=20971520,d.bits=1,0;for(S=1;S0&&(0===e||1!==k))return-1;for(L[1]=0,E=1;E<15;E++)L[E+1]=L[E]+P[E];for(A=0;A852||2===e&&O>592)return 1;for(;;){_=E-D,h[A]b?(y=B[U+h[A]],v=N[F+h[A]]):(y=96,v=0),p=1<>D)+(f-=p)]=_<<24|y<<16|v|0}while(0!==f);for(p=1<>=1;if(0!==p?(I&=p-1,I+=p):I=0,A++,0==--P[E]){if(E===k)break;E=t[n+h[A]]}if(E>T&&(I&w)!==m){for(0===D&&(D=T),g+=S,R=1<<(C=E-D);C+D852||2===e&&O>592)return 1;l[m=I&w]=T<<24|C<<16|g-c|0}}return 0!==I&&(l[g+I]=E-D<<24|64<<16|0),d.bits=T,0}},function(e,t,n){"use strict";e.exports={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8}},function(e,t,n){"use strict";e.exports=function(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1}},function(e,t){},function(e,t){(function(t){e.exports=t}).call(this,{})},function(e,t,n){"use strict";var r,i=n(11),s=n(136),o=n(73),a=n(74),u=n(44),l=0,c=1,h=3,d=4,p=5,f=0,m=1,w=-2,g=-3,b=-5,_=-1,y=1,v=2,x=3,E=4,A=0,S=2,k=8,T=9,C=15,D=8,R=286,O=30,I=19,N=2*R+1,F=15,P=3,L=258,B=L+P+1,U=32,M=42,j=69,W=73,z=91,H=103,G=113,q=666,V=1,K=2,X=3,Y=4,J=3;function Z(e,t){return e.msg=u[t],t}function Q(e){return(e<<1)-(e>4?9:0)}function $(e){for(var t=e.length;--t>=0;)e[t]=0}function ee(e){var t=e.state,n=t.pending;n>e.avail_out&&(n=e.avail_out),0!==n&&(i.arraySet(e.output,t.pending_buf,t.pending_out,n,e.next_out),e.next_out+=n,t.pending_out+=n,e.total_out+=n,e.avail_out-=n,t.pending-=n,0===t.pending&&(t.pending_out=0))}function te(e,t){s._tr_flush_block(e,e.block_start>=0?e.block_start:-1,e.strstart-e.block_start,t),e.block_start=e.strstart,ee(e.strm)}function ne(e,t){e.pending_buf[e.pending++]=t}function re(e,t){e.pending_buf[e.pending++]=t>>>8&255,e.pending_buf[e.pending++]=255&t}function ie(e,t){var n,r,i=e.max_chain_length,s=e.strstart,o=e.prev_length,a=e.nice_match,u=e.strstart>e.w_size-B?e.strstart-(e.w_size-B):0,l=e.window,c=e.w_mask,h=e.prev,d=e.strstart+L,p=l[s+o-1],f=l[s+o];e.prev_length>=e.good_match&&(i>>=2),a>e.lookahead&&(a=e.lookahead);do{if(l[(n=t)+o]===f&&l[n+o-1]===p&&l[n]===l[s]&&l[++n]===l[s+1]){s+=2,n++;do{}while(l[++s]===l[++n]&&l[++s]===l[++n]&&l[++s]===l[++n]&&l[++s]===l[++n]&&l[++s]===l[++n]&&l[++s]===l[++n]&&l[++s]===l[++n]&&l[++s]===l[++n]&&so){if(e.match_start=t,o=r,r>=a)break;p=l[s+o-1],f=l[s+o]}}}while((t=h[t&c])>u&&0!=--i);return o<=e.lookahead?o:e.lookahead}function se(e){var t,n,r,s,u,l,c,h,d,p,f=e.w_size;do{if(s=e.window_size-e.lookahead-e.strstart,e.strstart>=f+(f-B)){i.arraySet(e.window,e.window,f,f,0),e.match_start-=f,e.strstart-=f,e.block_start-=f,t=n=e.hash_size;do{r=e.head[--t],e.head[t]=r>=f?r-f:0}while(--n);t=n=f;do{r=e.prev[--t],e.prev[t]=r>=f?r-f:0}while(--n);s+=f}if(0===e.strm.avail_in)break;if(l=e.strm,c=e.window,h=e.strstart+e.lookahead,d=s,p=void 0,(p=l.avail_in)>d&&(p=d),n=0===p?0:(l.avail_in-=p,i.arraySet(c,l.input,l.next_in,p,h),1===l.state.wrap?l.adler=o(l.adler,c,p,h):2===l.state.wrap&&(l.adler=a(l.adler,c,p,h)),l.next_in+=p,l.total_in+=p,p),e.lookahead+=n,e.lookahead+e.insert>=P)for(u=e.strstart-e.insert,e.ins_h=e.window[u],e.ins_h=(e.ins_h<=P&&(e.ins_h=(e.ins_h<=P)if(r=s._tr_tally(e,e.strstart-e.match_start,e.match_length-P),e.lookahead-=e.match_length,e.match_length<=e.max_lazy_match&&e.lookahead>=P){e.match_length--;do{e.strstart++,e.ins_h=(e.ins_h<=P&&(e.ins_h=(e.ins_h<4096)&&(e.match_length=P-1)),e.prev_length>=P&&e.match_length<=e.prev_length){i=e.strstart+e.lookahead-P,r=s._tr_tally(e,e.strstart-1-e.prev_match,e.prev_length-P),e.lookahead-=e.prev_length-1,e.prev_length-=2;do{++e.strstart<=i&&(e.ins_h=(e.ins_h<15&&(a=2,r-=16),s<1||s>T||n!==k||r<8||r>15||t<0||t>9||o<0||o>E)return Z(e,w);8===r&&(r=9);var u=new le;return e.state=u,u.strm=e,u.wrap=a,u.gzhead=null,u.w_bits=r,u.w_size=1<e.pending_buf_size-5&&(n=e.pending_buf_size-5);;){if(e.lookahead<=1){if(se(e),0===e.lookahead&&t===l)return V;if(0===e.lookahead)break}e.strstart+=e.lookahead,e.lookahead=0;var r=e.block_start+n;if((0===e.strstart||e.strstart>=r)&&(e.lookahead=e.strstart-r,e.strstart=r,te(e,!1),0===e.strm.avail_out))return V;if(e.strstart-e.block_start>=e.w_size-B&&(te(e,!1),0===e.strm.avail_out))return V}return e.insert=0,t===d?(te(e,!0),0===e.strm.avail_out?X:Y):(e.strstart>e.block_start&&(te(e,!1),e.strm.avail_out),V)})),new ue(4,4,8,4,oe),new ue(4,5,16,8,oe),new ue(4,6,32,32,oe),new ue(4,4,16,16,ae),new ue(8,16,32,32,ae),new ue(8,16,128,128,ae),new ue(8,32,128,256,ae),new ue(32,128,258,1024,ae),new ue(32,258,258,4096,ae)],t.deflateInit=function(e,t){return de(e,t,k,C,D,A)},t.deflateInit2=de,t.deflateReset=he,t.deflateResetKeep=ce,t.deflateSetHeader=function(e,t){return e&&e.state?2!==e.state.wrap?w:(e.state.gzhead=t,f):w},t.deflate=function(e,t){var n,i,o,u;if(!e||!e.state||t>p||t<0)return e?Z(e,w):w;if(i=e.state,!e.output||!e.input&&0!==e.avail_in||i.status===q&&t!==d)return Z(e,0===e.avail_out?b:w);if(i.strm=e,n=i.last_flush,i.last_flush=t,i.status===M)if(2===i.wrap)e.adler=0,ne(i,31),ne(i,139),ne(i,8),i.gzhead?(ne(i,(i.gzhead.text?1:0)+(i.gzhead.hcrc?2:0)+(i.gzhead.extra?4:0)+(i.gzhead.name?8:0)+(i.gzhead.comment?16:0)),ne(i,255&i.gzhead.time),ne(i,i.gzhead.time>>8&255),ne(i,i.gzhead.time>>16&255),ne(i,i.gzhead.time>>24&255),ne(i,9===i.level?2:i.strategy>=v||i.level<2?4:0),ne(i,255&i.gzhead.os),i.gzhead.extra&&i.gzhead.extra.length&&(ne(i,255&i.gzhead.extra.length),ne(i,i.gzhead.extra.length>>8&255)),i.gzhead.hcrc&&(e.adler=a(e.adler,i.pending_buf,i.pending,0)),i.gzindex=0,i.status=j):(ne(i,0),ne(i,0),ne(i,0),ne(i,0),ne(i,0),ne(i,9===i.level?2:i.strategy>=v||i.level<2?4:0),ne(i,J),i.status=G);else{var g=k+(i.w_bits-8<<4)<<8;g|=(i.strategy>=v||i.level<2?0:i.level<6?1:6===i.level?2:3)<<6,0!==i.strstart&&(g|=U),g+=31-g%31,i.status=G,re(i,g),0!==i.strstart&&(re(i,e.adler>>>16),re(i,65535&e.adler)),e.adler=1}if(i.status===j)if(i.gzhead.extra){for(o=i.pending;i.gzindex<(65535&i.gzhead.extra.length)&&(i.pending!==i.pending_buf_size||(i.gzhead.hcrc&&i.pending>o&&(e.adler=a(e.adler,i.pending_buf,i.pending-o,o)),ee(e),o=i.pending,i.pending!==i.pending_buf_size));)ne(i,255&i.gzhead.extra[i.gzindex]),i.gzindex++;i.gzhead.hcrc&&i.pending>o&&(e.adler=a(e.adler,i.pending_buf,i.pending-o,o)),i.gzindex===i.gzhead.extra.length&&(i.gzindex=0,i.status=W)}else i.status=W;if(i.status===W)if(i.gzhead.name){o=i.pending;do{if(i.pending===i.pending_buf_size&&(i.gzhead.hcrc&&i.pending>o&&(e.adler=a(e.adler,i.pending_buf,i.pending-o,o)),ee(e),o=i.pending,i.pending===i.pending_buf_size)){u=1;break}u=i.gzindexo&&(e.adler=a(e.adler,i.pending_buf,i.pending-o,o)),0===u&&(i.gzindex=0,i.status=z)}else i.status=z;if(i.status===z)if(i.gzhead.comment){o=i.pending;do{if(i.pending===i.pending_buf_size&&(i.gzhead.hcrc&&i.pending>o&&(e.adler=a(e.adler,i.pending_buf,i.pending-o,o)),ee(e),o=i.pending,i.pending===i.pending_buf_size)){u=1;break}u=i.gzindexo&&(e.adler=a(e.adler,i.pending_buf,i.pending-o,o)),0===u&&(i.status=H)}else i.status=H;if(i.status===H&&(i.gzhead.hcrc?(i.pending+2>i.pending_buf_size&&ee(e),i.pending+2<=i.pending_buf_size&&(ne(i,255&e.adler),ne(i,e.adler>>8&255),e.adler=0,i.status=G)):i.status=G),0!==i.pending){if(ee(e),0===e.avail_out)return i.last_flush=-1,f}else if(0===e.avail_in&&Q(t)<=Q(n)&&t!==d)return Z(e,b);if(i.status===q&&0!==e.avail_in)return Z(e,b);if(0!==e.avail_in||0!==i.lookahead||t!==l&&i.status!==q){var _=i.strategy===v?function(e,t){for(var n;;){if(0===e.lookahead&&(se(e),0===e.lookahead)){if(t===l)return V;break}if(e.match_length=0,n=s._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,n&&(te(e,!1),0===e.strm.avail_out))return V}return e.insert=0,t===d?(te(e,!0),0===e.strm.avail_out?X:Y):e.last_lit&&(te(e,!1),0===e.strm.avail_out)?V:K}(i,t):i.strategy===x?function(e,t){for(var n,r,i,o,a=e.window;;){if(e.lookahead<=L){if(se(e),e.lookahead<=L&&t===l)return V;if(0===e.lookahead)break}if(e.match_length=0,e.lookahead>=P&&e.strstart>0&&(r=a[i=e.strstart-1])===a[++i]&&r===a[++i]&&r===a[++i]){o=e.strstart+L;do{}while(r===a[++i]&&r===a[++i]&&r===a[++i]&&r===a[++i]&&r===a[++i]&&r===a[++i]&&r===a[++i]&&r===a[++i]&&ie.lookahead&&(e.match_length=e.lookahead)}if(e.match_length>=P?(n=s._tr_tally(e,1,e.match_length-P),e.lookahead-=e.match_length,e.strstart+=e.match_length,e.match_length=0):(n=s._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++),n&&(te(e,!1),0===e.strm.avail_out))return V}return e.insert=0,t===d?(te(e,!0),0===e.strm.avail_out?X:Y):e.last_lit&&(te(e,!1),0===e.strm.avail_out)?V:K}(i,t):r[i.level].func(i,t);if(_!==X&&_!==Y||(i.status=q),_===V||_===X)return 0===e.avail_out&&(i.last_flush=-1),f;if(_===K&&(t===c?s._tr_align(i):t!==p&&(s._tr_stored_block(i,0,0,!1),t===h&&($(i.head),0===i.lookahead&&(i.strstart=0,i.block_start=0,i.insert=0))),ee(e),0===e.avail_out))return i.last_flush=-1,f}return t!==d?f:i.wrap<=0?m:(2===i.wrap?(ne(i,255&e.adler),ne(i,e.adler>>8&255),ne(i,e.adler>>16&255),ne(i,e.adler>>24&255),ne(i,255&e.total_in),ne(i,e.total_in>>8&255),ne(i,e.total_in>>16&255),ne(i,e.total_in>>24&255)):(re(i,e.adler>>>16),re(i,65535&e.adler)),ee(e),i.wrap>0&&(i.wrap=-i.wrap),0!==i.pending?f:m)},t.deflateEnd=function(e){var t;return e&&e.state?(t=e.state.status)!==M&&t!==j&&t!==W&&t!==z&&t!==H&&t!==G&&t!==q?Z(e,w):(e.state=null,t===G?Z(e,g):f):w},t.deflateSetDictionary=function(e,t){var n,r,s,a,u,l,c,h,d=t.length;if(!e||!e.state)return w;if(2===(a=(n=e.state).wrap)||1===a&&n.status!==M||n.lookahead)return w;for(1===a&&(e.adler=o(e.adler,t,d,0)),n.wrap=0,d>=n.w_size&&(0===a&&($(n.head),n.strstart=0,n.block_start=0,n.insert=0),h=new i.Buf8(n.w_size),i.arraySet(h,t,d-n.w_size,n.w_size,0),t=h,d=n.w_size),u=e.avail_in,l=e.next_in,c=e.input,e.avail_in=d,e.next_in=0,e.input=t,se(n);n.lookahead>=P;){r=n.strstart,s=n.lookahead-(P-1);do{n.ins_h=(n.ins_h<=0;)e[t]=0}var l=0,c=1,h=2,d=29,p=256,f=p+1+d,m=30,w=19,g=2*f+1,b=15,_=16,y=7,v=256,x=16,E=17,A=18,S=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],k=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],T=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],C=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],D=new Array(2*(f+2));u(D);var R=new Array(2*m);u(R);var O=new Array(512);u(O);var I=new Array(256);u(I);var N=new Array(d);u(N);var F,P,L,B=new Array(m);function U(e,t,n,r,i){this.static_tree=e,this.extra_bits=t,this.extra_base=n,this.elems=r,this.max_length=i,this.has_stree=e&&e.length}function M(e,t){this.dyn_tree=e,this.max_code=0,this.stat_desc=t}function j(e){return e<256?O[e]:O[256+(e>>>7)]}function W(e,t){e.pending_buf[e.pending++]=255&t,e.pending_buf[e.pending++]=t>>>8&255}function z(e,t,n){e.bi_valid>_-n?(e.bi_buf|=t<>_-e.bi_valid,e.bi_valid+=n-_):(e.bi_buf|=t<>>=1,n<<=1}while(--t>0);return n>>>1}function q(e,t,n){var r,i,s=new Array(b+1),o=0;for(r=1;r<=b;r++)s[r]=o=o+n[r-1]<<1;for(i=0;i<=t;i++){var a=e[2*i+1];0!==a&&(e[2*i]=G(s[a]++,a))}}function V(e){var t;for(t=0;t8?W(e,e.bi_buf):e.bi_valid>0&&(e.pending_buf[e.pending++]=e.bi_buf),e.bi_buf=0,e.bi_valid=0}function X(e,t,n,r){var i=2*t,s=2*n;return e[i]>1;n>=1;n--)Y(e,s,n);i=u;do{n=e.heap[1],e.heap[1]=e.heap[e.heap_len--],Y(e,s,1),r=e.heap[1],e.heap[--e.heap_max]=n,e.heap[--e.heap_max]=r,s[2*i]=s[2*n]+s[2*r],e.depth[i]=(e.depth[n]>=e.depth[r]?e.depth[n]:e.depth[r])+1,s[2*n+1]=s[2*r+1]=i,e.heap[1]=i++,Y(e,s,1)}while(e.heap_len>=2);e.heap[--e.heap_max]=e.heap[1],function(e,t){var n,r,i,s,o,a,u=t.dyn_tree,l=t.max_code,c=t.stat_desc.static_tree,h=t.stat_desc.has_stree,d=t.stat_desc.extra_bits,p=t.stat_desc.extra_base,f=t.stat_desc.max_length,m=0;for(s=0;s<=b;s++)e.bl_count[s]=0;for(u[2*e.heap[e.heap_max]+1]=0,n=e.heap_max+1;nf&&(s=f,m++),u[2*r+1]=s,r>l||(e.bl_count[s]++,o=0,r>=p&&(o=d[r-p]),a=u[2*r],e.opt_len+=a*(s+o),h&&(e.static_len+=a*(c[2*r+1]+o)));if(0!==m){do{for(s=f-1;0===e.bl_count[s];)s--;e.bl_count[s]--,e.bl_count[s+1]+=2,e.bl_count[f]--,m-=2}while(m>0);for(s=f;0!==s;s--)for(r=e.bl_count[s];0!==r;)(i=e.heap[--n])>l||(u[2*i+1]!==s&&(e.opt_len+=(s-u[2*i+1])*u[2*i],u[2*i+1]=s),r--)}}(e,t),q(s,l,e.bl_count)}function Q(e,t,n){var r,i,s=-1,o=t[1],a=0,u=7,l=4;for(0===o&&(u=138,l=3),t[2*(n+1)+1]=65535,r=0;r<=n;r++)i=o,o=t[2*(r+1)+1],++a>=7;r0?(e.strm.data_type===a&&(e.strm.data_type=function(e){var t,n=4093624447;for(t=0;t<=31;t++,n>>>=1)if(1&n&&0!==e.dyn_ltree[2*t])return s;if(0!==e.dyn_ltree[18]||0!==e.dyn_ltree[20]||0!==e.dyn_ltree[26])return o;for(t=32;t=3&&0===e.bl_tree[2*C[t]+1];t--);return e.opt_len+=3*(t+1)+5+5+4,t}(e),u=e.opt_len+3+7>>>3,(l=e.static_len+3+7>>>3)<=u&&(u=l)):u=l=n+5,n+4<=u&&-1!==t?te(e,t,n,r):e.strategy===i||l===u?(z(e,(c<<1)+(r?1:0),3),J(e,D,R)):(z(e,(h<<1)+(r?1:0),3),function(e,t,n,r){var i;for(z(e,t-257,5),z(e,n-1,5),z(e,r-4,4),i=0;i>>8&255,e.pending_buf[e.d_buf+2*e.last_lit+1]=255&t,e.pending_buf[e.l_buf+e.last_lit]=255&n,e.last_lit++,0===t?e.dyn_ltree[2*n]++:(e.matches++,t--,e.dyn_ltree[2*(I[n]+p+1)]++,e.dyn_dtree[2*j(t)]++),e.last_lit===e.lit_bufsize-1},t._tr_align=function(e){z(e,c<<1,3),H(e,v,D),function(e){16===e.bi_valid?(W(e,e.bi_buf),e.bi_buf=0,e.bi_valid=0):e.bi_valid>=8&&(e.pending_buf[e.pending++]=255&e.bi_buf,e.bi_buf>>=8,e.bi_valid-=8)}(e)}},function(e,t,n){"use strict";const r=n(7),i=function(e,t){const n={};if(!(e.child&&!r.isEmptyObject(e.child)||e.attrsMap&&!r.isEmptyObject(e.attrsMap)))return r.isExist(e.val)?e.val:"";r.isExist(e.val)&&("string"!=typeof e.val||""!==e.val&&e.val!==t.cdataPositionChar)&&("strict"===t.arrayMode?n[t.textNodeName]=[e.val]:n[t.textNodeName]=e.val),r.merge(n,e.attrsMap,t.arrayMode);const s=Object.keys(e.child);for(let r=0;r1)for(var a in n[o]=[],e.child[o])n[o].push(i(e.child[o][a],t));else if(!0===t.arrayMode){const r=i(e.child[o][0],t);n[o]="object"==typeof r?[r]:r}else"strict"===t.arrayMode?n[o]=[i(e.child[o][0],t)]:n[o]=i(e.child[o][0],t)}return n};t.convertToJson=i},function(e,t,n){"use strict";e.exports=function(e,t,n){this.tagname=e,this.parent=t,this.child={},this.attrsMap={},this.val=n,this.addChild=function(e){Array.isArray(this.child[e.tagname])?this.child[e.tagname].push(e):this.child[e.tagname]=[e]}}},function(e,t,n){"use strict";const r=n(7),i={allowBooleanAttributes:!1,localeRange:"a-zA-Z"},s=["allowBooleanAttributes","localeRange"];function o(e,t){for(var n=t;t5&&"xml"===r)return p("InvalidXml","XML declaration allowed only at the start of the document.",w(e,t));if("?"==e[t]&&">"==e[t+1]){t++;break}}return t}function a(e,t){if(e.length>t+5&&"-"===e[t+1]&&"-"===e[t+2]){for(t+=3;t"===e[t+2]){t+=2;break}}else if(e.length>t+8&&"D"===e[t+1]&&"O"===e[t+2]&&"C"===e[t+3]&&"T"===e[t+4]&&"Y"===e[t+5]&&"P"===e[t+6]&&"E"===e[t+7]){let n=1;for(t+=8;t"===e[t]&&0===--n)break}else if(e.length>t+9&&"["===e[t+1]&&"C"===e[t+2]&&"D"===e[t+3]&&"A"===e[t+4]&&"T"===e[t+5]&&"A"===e[t+6]&&"["===e[t+7])for(t+=8;t"===e[t+2]){t+=2;break}return t}t.validate=function(e,t){if(t=r.buildOptions(t,i,s),new RegExp(`[${t.localeRange}]`).test("<#$'\"\\/:0"))return p("InvalidOptions","Invalid localeRange",1);const n=[];let u=!1,l=!1;"\ufeff"===e[0]&&(e=e.substr(1));const h=new RegExp(`^[${t.localeRange}_][${t.localeRange}0-9\\-\\.:]*$`),f=new RegExp(`^([${t.localeRange}_])[${t.localeRange}0-9\\.\\-_:]*$`);for(let r=0;r"!==e[r]&&" "!==e[r]&&"\t"!==e[r]&&"\n"!==e[r]&&"\r"!==e[r];r++)s+=e[r];if("/"===(s=s.trim())[s.length-1]&&(s=s.substring(0,s.length-1),r--),!m(s,f)){let t;return p("InvalidTag",t=0===s.trim().length?"There is an unnecessary space between tag name and backward slash '0)return p("InvalidTag",`Closing tag '${s}' can't have attributes or invalid starting.`,w(e,r));{const t=n.pop();if(s!==t)return p("InvalidTag",`Closing tag '${t}' is expected inplace of '${s}'.`,w(e,r));0==n.length&&(l=!0)}}else{const i=d(g,t,h);if(!0!==i)return p(i.err.code,i.err.msg,w(e,r-g.length+i.err.line));if(!0===l)return p("InvalidXml","Multiple possible root nodes found.",w(e,r));n.push(s),u=!0}for(r++;r0)||p("InvalidXml",`Invalid '${JSON.stringify(n,null,4).replace(/\r?\n/g,"")}' found.`,1):p("InvalidXml","Start tag expected.",1)};var u='"',l="'";function c(e,t){let n="",r="",i=!1;for(;t"===e[t]&&""===r){i=!0;break}n+=e[t]}return""===r&&{value:n,index:t,tagClosed:i}}const h=new RegExp("(\\s*)([^\\s=]+)(\\s*=)?(\\s*(['\"])(([\\s\\S])*?)\\5)?","g");function d(e,t,n){const i=r.getAllMatches(e,h),s={};for(let r=0;r1){for(var u in i+='"'+a+'" : [ ',e.child[a])i+=o(e.child[a][u],t)+" , ";i=i.substr(0,i.length-1)+" ] "}else i+='"'+a+'" : '+o(e.child[a][0],t)+" ,"}return r.merge(i,e.attrsMap),r.isEmptyObject(i)?r.isExist(e.val)?e.val:"":(r.isExist(e.val)&&("string"!=typeof e.val||""!==e.val&&e.val!==t.cdataPositionChar)&&(i+='"'+t.textNodeName+'" : '+(!0!==(l=e.val)&&!1!==l&&isNaN(l)?'"'+l+'"':l)),","===i[i.length-1]&&(i=i.substr(0,i.length-2)),i+"}");var l};t.convertToJsonString=function(e,t){return(t=i(t,s.defaultOptions,s.props)).indentBy=t.indentBy||"",o(e,t,0)}},function(e,t,n){"use strict";const r=n(7).buildOptions,i={attributeNamePrefix:"@_",attrNodeName:!1,textNodeName:"#text",ignoreAttributes:!0,cdataTagName:!1,cdataPositionChar:"\\c",format:!1,indentBy:" ",supressEmptyNode:!1,tagValueProcessor:function(e){return e},attrValueProcessor:function(e){return e}},s=["attributeNamePrefix","attrNodeName","textNodeName","ignoreAttributes","cdataTagName","cdataPositionChar","format","indentBy","supressEmptyNode","tagValueProcessor","attrValueProcessor"];function o(e){this.options=r(e,i,s),this.options.ignoreAttributes||this.options.attrNodeName?this.isAttribute=function(){return!1}:(this.attrPrefixLen=this.options.attributeNamePrefix.length,this.isAttribute=f),this.options.cdataTagName?this.isCDATA=m:this.isCDATA=function(){return!1},this.replaceCDATAstr=a,this.replaceCDATAarr=u,this.options.format?(this.indentate=p,this.tagEndChar=">\n",this.newLine="\n"):(this.indentate=function(){return""},this.tagEndChar=">",this.newLine=""),this.options.supressEmptyNode?(this.buildTextNode=d,this.buildObjNode=c):(this.buildTextNode=h,this.buildObjNode=l),this.buildTextValNode=h,this.buildObjectNode=l}function a(e,t){return e=this.options.tagValueProcessor(""+e),""===this.options.cdataPositionChar||""===e?e+"");return e+this.newLine}function l(e,t,n,r){return n&&!e.includes("<")?this.indentate(r)+"<"+t+n+">"+e+""+this.options.tagValueProcessor(e)+"1114111||i(c)!=c)throw RangeError("Invalid code point: "+c);c<=65535?o.push(c):(t=55296+((c-=65536)>>10),n=c%1024+56320,o.push(t,n)),(a+1==u||o.length>s)&&(l+=r.apply(null,o),o.length=0)}return l},n?n(String,"fromCodePoint",{value:s,configurable:!0,writable:!0}):String.fromCodePoint=s)},function(e,t,n){"use strict";var r=n(145),i=n(164);function s(e){return function(){throw new Error("Function "+e+" is deprecated and cannot be used.")}}e.exports.Type=n(2),e.exports.Schema=n(15),e.exports.FAILSAFE_SCHEMA=n(45),e.exports.JSON_SCHEMA=n(78),e.exports.CORE_SCHEMA=n(77),e.exports.DEFAULT_SAFE_SCHEMA=n(22),e.exports.DEFAULT_FULL_SCHEMA=n(31),e.exports.load=r.load,e.exports.loadAll=r.loadAll,e.exports.safeLoad=r.safeLoad,e.exports.safeLoadAll=r.safeLoadAll,e.exports.dump=i.dump,e.exports.safeDump=i.safeDump,e.exports.YAMLException=n(21),e.exports.MINIMAL_SCHEMA=n(45),e.exports.SAFE_SCHEMA=n(22),e.exports.DEFAULT_SCHEMA=n(31),e.exports.scan=s("scan"),e.exports.parse=s("parse"),e.exports.compose=s("compose"),e.exports.addConstructor=s("addConstructor")},function(e,t,n){"use strict";var r=n(14),i=n(21),s=n(146),o=n(22),a=n(31),u=Object.prototype.hasOwnProperty,l=1,c=2,h=3,d=4,p=1,f=2,m=3,w=/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\x84\x86-\x9F\uFFFE\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/,g=/[\x85\u2028\u2029]/,b=/[,\[\]\{\}]/,_=/^(?:!|!!|![a-z\-]+!)$/i,y=/^(?:!|[^,\[\]\{\}])(?:%[0-9a-f]{2}|[0-9a-z\-#;\/\?:@&=\+\$,_\.!~\*'\(\)\[\]])*$/i;function v(e){return Object.prototype.toString.call(e)}function x(e){return 10===e||13===e}function E(e){return 9===e||32===e}function A(e){return 9===e||32===e||10===e||13===e}function S(e){return 44===e||91===e||93===e||123===e||125===e}function k(e){var t;return 48<=e&&e<=57?e-48:97<=(t=32|e)&&t<=102?t-97+10:-1}function T(e){return 48===e?"\0":97===e?"":98===e?"\b":116===e?"\t":9===e?"\t":110===e?"\n":118===e?"\v":102===e?"\f":114===e?"\r":101===e?"":32===e?" ":34===e?'"':47===e?"/":92===e?"\\":78===e?"…":95===e?" ":76===e?"\u2028":80===e?"\u2029":""}function C(e){return e<=65535?String.fromCharCode(e):String.fromCharCode(55296+(e-65536>>10),56320+(e-65536&1023))}for(var D=new Array(256),R=new Array(256),O=0;O<256;O++)D[O]=T(O)?1:0,R[O]=T(O);function I(e,t){this.input=e,this.filename=t.filename||null,this.schema=t.schema||a,this.onWarning=t.onWarning||null,this.legacy=t.legacy||!1,this.json=t.json||!1,this.listener=t.listener||null,this.implicitTypes=this.schema.compiledImplicit,this.typeMap=this.schema.compiledTypeMap,this.length=e.length,this.position=0,this.line=0,this.lineStart=0,this.lineIndent=0,this.documents=[]}function N(e,t){return new i(t,new s(e.filename,e.input,e.position,e.line,e.position-e.lineStart))}function F(e,t){throw N(e,t)}function P(e,t){e.onWarning&&e.onWarning.call(null,N(e,t))}var L={YAML:function(e,t,n){var r,i,s;null!==e.version&&F(e,"duplication of %YAML directive"),1!==n.length&&F(e,"YAML directive accepts exactly one argument"),null===(r=/^([0-9]+)\.([0-9]+)$/.exec(n[0]))&&F(e,"ill-formed argument of the YAML directive"),i=parseInt(r[1],10),s=parseInt(r[2],10),1!==i&&F(e,"unacceptable YAML version of the document"),e.version=n[0],e.checkLineBreaks=s<2,1!==s&&2!==s&&P(e,"unsupported YAML version of the document")},TAG:function(e,t,n){var r,i;2!==n.length&&F(e,"TAG directive accepts exactly two arguments"),r=n[0],i=n[1],_.test(r)||F(e,"ill-formed tag handle (first argument) of the TAG directive"),u.call(e.tagMap,r)&&F(e,'there is a previously declared suffix for "'+r+'" tag handle'),y.test(i)||F(e,"ill-formed tag prefix (second argument) of the TAG directive"),e.tagMap[r]=i}};function B(e,t,n,r){var i,s,o,a;if(t1&&(e.result+=r.repeat("\n",t-1))}function G(e,t){var n,r,i=e.tag,s=e.anchor,o=[],a=!1;for(null!==e.anchor&&(e.anchorMap[e.anchor]=o),r=e.input.charCodeAt(e.position);0!==r&&45===r&&A(e.input.charCodeAt(e.position+1));)if(a=!0,e.position++,W(e,!0,-1)&&e.lineIndent<=t)o.push(null),r=e.input.charCodeAt(e.position);else if(n=e.line,K(e,t,h,!1,!0),o.push(e.result),W(e,!0,-1),r=e.input.charCodeAt(e.position),(e.line===n||e.lineIndent>t)&&0!==r)F(e,"bad indentation of a sequence entry");else if(e.lineIndentt?T=1:e.lineIndent===t?T=0:e.lineIndentt?T=1:e.lineIndent===t?T=0:e.lineIndentt)&&(K(e,t,d,!0,i)&&(g?m=e.result:w=e.result),g||(M(e,h,p,f,m,w,s,o),f=m=w=null),W(e,!0,-1),a=e.input.charCodeAt(e.position)),e.lineIndent>t&&0!==a)F(e,"bad indentation of a mapping entry");else if(e.lineIndent=0))break;0===s?F(e,"bad explicit indentation width of a block scalar; it cannot be less than one"):c?F(e,"repeat of an indentation width identifier"):(h=t+s-1,c=!0)}if(E(o)){do{o=e.input.charCodeAt(++e.position)}while(E(o));if(35===o)do{o=e.input.charCodeAt(++e.position)}while(!x(o)&&0!==o)}for(;0!==o;){for(j(e),e.lineIndent=0,o=e.input.charCodeAt(e.position);(!c||e.lineIndenth&&(h=e.lineIndent),x(o))d++;else{if(e.lineIndent0){for(i=o,s=0;i>0;i--)(o=k(a=e.input.charCodeAt(++e.position)))>=0?s=(s<<4)+o:F(e,"expected hexadecimal character");e.result+=C(s),e.position++}else F(e,"unknown escape sequence");n=r=e.position}else x(a)?(B(e,n,r,!0),H(e,W(e,!1,t)),n=r=e.position):e.position===e.lineStart&&z(e)?F(e,"unexpected end of the document within a double quoted scalar"):(e.position++,r=e.position)}F(e,"unexpected end of the stream within a double quoted scalar")}(e,y)?I=!0:!function(e){var t,n,r;if(42!==(r=e.input.charCodeAt(e.position)))return!1;for(r=e.input.charCodeAt(++e.position),t=e.position;0!==r&&!A(r)&&!S(r);)r=e.input.charCodeAt(++e.position);return e.position===t&&F(e,"name of an alias node must contain at least one character"),n=e.input.slice(t,e.position),e.anchorMap.hasOwnProperty(n)||F(e,'unidentified alias "'+n+'"'),e.result=e.anchorMap[n],W(e,!0,-1),!0}(e)?function(e,t,n){var r,i,s,o,a,u,l,c,h=e.kind,d=e.result;if(A(c=e.input.charCodeAt(e.position))||S(c)||35===c||38===c||42===c||33===c||124===c||62===c||39===c||34===c||37===c||64===c||96===c)return!1;if((63===c||45===c)&&(A(r=e.input.charCodeAt(e.position+1))||n&&S(r)))return!1;for(e.kind="scalar",e.result="",i=s=e.position,o=!1;0!==c;){if(58===c){if(A(r=e.input.charCodeAt(e.position+1))||n&&S(r))break}else if(35===c){if(A(e.input.charCodeAt(e.position-1)))break}else{if(e.position===e.lineStart&&z(e)||n&&S(c))break;if(x(c)){if(a=e.line,u=e.lineStart,l=e.lineIndent,W(e,!1,-1),e.lineIndent>=t){o=!0,c=e.input.charCodeAt(e.position);continue}e.position=s,e.line=a,e.lineStart=u,e.lineIndent=l;break}}o&&(B(e,i,s,!1),H(e,e.line-a),i=s=e.position,o=!1),E(c)||(s=e.position+1),c=e.input.charCodeAt(++e.position)}return B(e,i,s,!1),!!e.result||(e.kind=h,e.result=d,!1)}(e,y,l===n)&&(I=!0,null===e.tag&&(e.tag="?")):(I=!0,null===e.tag&&null===e.anchor||F(e,"alias node should not have any properties")),null!==e.anchor&&(e.anchorMap[e.anchor]=e.result)):0===T&&(I=w&&G(e,v))),null!==e.tag&&"!"!==e.tag)if("?"===e.tag){for(g=0,b=e.implicitTypes.length;g tag; it should be "'+_.kind+'", not "'+e.kind+'"'),_.resolve(e.result)?(e.result=_.construct(e.result),null!==e.anchor&&(e.anchorMap[e.anchor]=e.result)):F(e,"cannot resolve a node with !<"+e.tag+"> explicit tag")):F(e,"unknown tag !<"+e.tag+">");return null!==e.listener&&e.listener("close",e),null!==e.tag||null!==e.anchor||I}function X(e){var t,n,r,i,s=e.position,o=!1;for(e.version=null,e.checkLineBreaks=e.legacy,e.tagMap={},e.anchorMap={};0!==(i=e.input.charCodeAt(e.position))&&(W(e,!0,-1),i=e.input.charCodeAt(e.position),!(e.lineIndent>0||37!==i));){for(o=!0,i=e.input.charCodeAt(++e.position),t=e.position;0!==i&&!A(i);)i=e.input.charCodeAt(++e.position);for(r=[],(n=e.input.slice(t,e.position)).length<1&&F(e,"directive name must not be less than one character in length");0!==i;){for(;E(i);)i=e.input.charCodeAt(++e.position);if(35===i){do{i=e.input.charCodeAt(++e.position)}while(0!==i&&!x(i));break}if(x(i))break;for(t=e.position;0!==i&&!A(i);)i=e.input.charCodeAt(++e.position);r.push(e.input.slice(t,e.position))}0!==i&&j(e),u.call(L,n)?L[n](e,n,r):P(e,'unknown document directive "'+n+'"')}W(e,!0,-1),0===e.lineIndent&&45===e.input.charCodeAt(e.position)&&45===e.input.charCodeAt(e.position+1)&&45===e.input.charCodeAt(e.position+2)?(e.position+=3,W(e,!0,-1)):o&&F(e,"directives end mark is expected"),K(e,e.lineIndent-1,d,!1,!0),W(e,!0,-1),e.checkLineBreaks&&g.test(e.input.slice(s,e.position))&&P(e,"non-ASCII line breaks are interpreted as content"),e.documents.push(e.result),e.position===e.lineStart&&z(e)?46===e.input.charCodeAt(e.position)&&(e.position+=3,W(e,!0,-1)):e.position0&&-1==="\0\r\n…\u2028\u2029".indexOf(this.buffer.charAt(i-1));)if(i-=1,this.position-i>t/2-1){n=" ... ",i+=5;break}for(s="",o=this.position;ot/2-1){s=" ... ",o-=5;break}return a=this.buffer.slice(i,o),r.repeat(" ",e)+n+a+s+"\n"+r.repeat(" ",e+this.position-i+n.length)+"^"},i.prototype.toString=function(e){var t,n="";return this.name&&(n+='in "'+this.name+'" '),n+="at line "+(this.line+1)+", column "+(this.column+1),e||(t=this.getSnippet())&&(n+=":\n"+t),n},e.exports=i},function(e,t,n){"use strict";var r=n(2);e.exports=new r("tag:yaml.org,2002:str",{kind:"scalar",construct:function(e){return null!==e?e:""}})},function(e,t,n){"use strict";var r=n(2);e.exports=new r("tag:yaml.org,2002:seq",{kind:"sequence",construct:function(e){return null!==e?e:[]}})},function(e,t,n){"use strict";var r=n(2);e.exports=new r("tag:yaml.org,2002:map",{kind:"mapping",construct:function(e){return null!==e?e:{}}})},function(e,t,n){"use strict";var r=n(2);e.exports=new r("tag:yaml.org,2002:null",{kind:"scalar",resolve:function(e){if(null===e)return!0;var t=e.length;return 1===t&&"~"===e||4===t&&("null"===e||"Null"===e||"NULL"===e)},construct:function(){return null},predicate:function(e){return null===e},represent:{canonical:function(){return"~"},lowercase:function(){return"null"},uppercase:function(){return"NULL"},camelcase:function(){return"Null"}},defaultStyle:"lowercase"})},function(e,t,n){"use strict";var r=n(2);e.exports=new r("tag:yaml.org,2002:bool",{kind:"scalar",resolve:function(e){if(null===e)return!1;var t=e.length;return 4===t&&("true"===e||"True"===e||"TRUE"===e)||5===t&&("false"===e||"False"===e||"FALSE"===e)},construct:function(e){return"true"===e||"True"===e||"TRUE"===e},predicate:function(e){return"[object Boolean]"===Object.prototype.toString.call(e)},represent:{lowercase:function(e){return e?"true":"false"},uppercase:function(e){return e?"TRUE":"FALSE"},camelcase:function(e){return e?"True":"False"}},defaultStyle:"lowercase"})},function(e,t,n){"use strict";var r=n(14),i=n(2);function s(e){return 48<=e&&e<=55}function o(e){return 48<=e&&e<=57}e.exports=new i("tag:yaml.org,2002:int",{kind:"scalar",resolve:function(e){if(null===e)return!1;var t,n,r=e.length,i=0,a=!1;if(!r)return!1;if("-"!==(t=e[i])&&"+"!==t||(t=e[++i]),"0"===t){if(i+1===r)return!0;if("b"===(t=e[++i])){for(i++;i=0?"0b"+e.toString(2):"-0b"+e.toString(2).slice(1)},octal:function(e){return e>=0?"0"+e.toString(8):"-0"+e.toString(8).slice(1)},decimal:function(e){return e.toString(10)},hexadecimal:function(e){return e>=0?"0x"+e.toString(16).toUpperCase():"-0x"+e.toString(16).toUpperCase().slice(1)}},defaultStyle:"decimal",styleAliases:{binary:[2,"bin"],octal:[8,"oct"],decimal:[10,"dec"],hexadecimal:[16,"hex"]}})},function(e,t,n){"use strict";var r=n(14),i=n(2),s=new RegExp("^(?:[-+]?(?:0|[1-9][0-9_]*)(?:\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?|\\.[0-9_]+(?:[eE][-+]?[0-9]+)?|[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\.[0-9_]*|[-+]?\\.(?:inf|Inf|INF)|\\.(?:nan|NaN|NAN))$");var o=/^[-+]?[0-9]+e/;e.exports=new i("tag:yaml.org,2002:float",{kind:"scalar",resolve:function(e){return null!==e&&!(!s.test(e)||"_"===e[e.length-1])},construct:function(e){var t,n,r,i;return n="-"===(t=e.replace(/_/g,"").toLowerCase())[0]?-1:1,i=[],"+-".indexOf(t[0])>=0&&(t=t.slice(1)),".inf"===t?1===n?Number.POSITIVE_INFINITY:Number.NEGATIVE_INFINITY:".nan"===t?NaN:t.indexOf(":")>=0?(t.split(":").forEach((function(e){i.unshift(parseFloat(e,10))})),t=0,r=1,i.forEach((function(e){t+=e*r,r*=60})),n*t):n*parseFloat(t,10)},predicate:function(e){return"[object Number]"===Object.prototype.toString.call(e)&&(e%1!=0||r.isNegativeZero(e))},represent:function(e,t){var n;if(isNaN(e))switch(t){case"lowercase":return".nan";case"uppercase":return".NAN";case"camelcase":return".NaN"}else if(Number.POSITIVE_INFINITY===e)switch(t){case"lowercase":return".inf";case"uppercase":return".INF";case"camelcase":return".Inf"}else if(Number.NEGATIVE_INFINITY===e)switch(t){case"lowercase":return"-.inf";case"uppercase":return"-.INF";case"camelcase":return"-.Inf"}else if(r.isNegativeZero(e))return"-0.0";return n=e.toString(10),o.test(n)?n.replace("e",".e"):n},defaultStyle:"lowercase"})},function(e,t,n){"use strict";var r=n(2),i=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9])-([0-9][0-9])$"),s=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9]?)-([0-9][0-9]?)(?:[Tt]|[ \\t]+)([0-9][0-9]?):([0-9][0-9]):([0-9][0-9])(?:\\.([0-9]*))?(?:[ \\t]*(Z|([-+])([0-9][0-9]?)(?::([0-9][0-9]))?))?$");e.exports=new r("tag:yaml.org,2002:timestamp",{kind:"scalar",resolve:function(e){return null!==e&&(null!==i.exec(e)||null!==s.exec(e))},construct:function(e){var t,n,r,o,a,u,l,c,h=0,d=null;if(null===(t=i.exec(e))&&(t=s.exec(e)),null===t)throw new Error("Date resolve error");if(n=+t[1],r=+t[2]-1,o=+t[3],!t[4])return new Date(Date.UTC(n,r,o));if(a=+t[4],u=+t[5],l=+t[6],t[7]){for(h=t[7].slice(0,3);h.length<3;)h+="0";h=+h}return t[9]&&(d=6e4*(60*+t[10]+ +(t[11]||0)),"-"===t[9]&&(d=-d)),c=new Date(Date.UTC(n,r,o,a,u,l,h)),d&&c.setTime(c.getTime()-d),c},instanceOf:Date,represent:function(e){return e.toISOString()}})},function(e,t,n){"use strict";var r=n(2);e.exports=new r("tag:yaml.org,2002:merge",{kind:"scalar",resolve:function(e){return"<<"===e||null===e}})},function(e,t,n){"use strict";var r;try{r=n(3).Buffer}catch(e){}var i=n(2),s="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\n\r";e.exports=new i("tag:yaml.org,2002:binary",{kind:"scalar",resolve:function(e){if(null===e)return!1;var t,n,r=0,i=e.length,o=s;for(n=0;n64)){if(t<0)return!1;r+=6}return r%8==0},construct:function(e){var t,n,i=e.replace(/[\r\n=]/g,""),o=i.length,a=s,u=0,l=[];for(t=0;t>16&255),l.push(u>>8&255),l.push(255&u)),u=u<<6|a.indexOf(i.charAt(t));return 0===(n=o%4*6)?(l.push(u>>16&255),l.push(u>>8&255),l.push(255&u)):18===n?(l.push(u>>10&255),l.push(u>>2&255)):12===n&&l.push(u>>4&255),r?r.from?r.from(l):new r(l):l},predicate:function(e){return r&&r.isBuffer(e)},represent:function(e){var t,n,r="",i=0,o=e.length,a=s;for(t=0;t>18&63],r+=a[i>>12&63],r+=a[i>>6&63],r+=a[63&i]),i=(i<<8)+e[t];return 0===(n=o%3)?(r+=a[i>>18&63],r+=a[i>>12&63],r+=a[i>>6&63],r+=a[63&i]):2===n?(r+=a[i>>10&63],r+=a[i>>4&63],r+=a[i<<2&63],r+=a[64]):1===n&&(r+=a[i>>2&63],r+=a[i<<4&63],r+=a[64],r+=a[64]),r}})},function(e,t,n){"use strict";var r=n(2),i=Object.prototype.hasOwnProperty,s=Object.prototype.toString;e.exports=new r("tag:yaml.org,2002:omap",{kind:"sequence",resolve:function(e){if(null===e)return!0;var t,n,r,o,a,u=[],l=e;for(t=0,n=l.length;t3)return!1;if("/"!==t[t.length-r.length-1])return!1}return!0},construct:function(e){var t=e,n=/\/([gim]*)$/.exec(e),r="";return"/"===t[0]&&(n&&(r=n[1]),t=t.slice(1,t.length-r.length-1)),new RegExp(t,r)},predicate:function(e){return"[object RegExp]"===Object.prototype.toString.call(e)},represent:function(e){var t="/"+e.source+"/";return e.global&&(t+="g"),e.multiline&&(t+="m"),e.ignoreCase&&(t+="i"),t}})},function(e,t,n){"use strict";var r;try{r=n(163)}catch(e){"undefined"!=typeof window&&(r=window.esprima)}var i=n(2);e.exports=new i("tag:yaml.org,2002:js/function",{kind:"scalar",resolve:function(e){if(null===e)return!1;try{var t="("+e+")",n=r.parse(t,{range:!0});return"Program"===n.type&&1===n.body.length&&"ExpressionStatement"===n.body[0].type&&("ArrowFunctionExpression"===n.body[0].expression.type||"FunctionExpression"===n.body[0].expression.type)}catch(e){return!1}},construct:function(e){var t,n="("+e+")",i=r.parse(n,{range:!0}),s=[];if("Program"!==i.type||1!==i.body.length||"ExpressionStatement"!==i.body[0].type||"ArrowFunctionExpression"!==i.body[0].expression.type&&"FunctionExpression"!==i.body[0].expression.type)throw new Error("Failed to resolve function");return i.body[0].expression.params.forEach((function(e){s.push(e.name)})),t=i.body[0].expression.body.range,"BlockStatement"===i.body[0].expression.body.type?new Function(s,n.slice(t[0]+1,t[1]-1)):new Function(s,"return "+n.slice(t[0],t[1]))},predicate:function(e){return"[object Function]"===Object.prototype.toString.call(e)},represent:function(e){return e.toString()}})},function(e,t,n){var r;r=function(){return function(e){var t={};function n(r){if(t[r])return t[r].exports;var i=t[r]={exports:{},id:r,loaded:!1};return e[r].call(i.exports,i,i.exports,n),i.loaded=!0,i.exports}return n.m=e,n.c=t,n.p="",n(0)}([function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(1),i=n(3),s=n(8),o=n(15);function a(e,t,n){var o=null,a=function(e,t){n&&n(e,t),o&&o.visit(e,t)},u="function"==typeof n?a:null,l=!1;if(t){l="boolean"==typeof t.comment&&t.comment;var c="boolean"==typeof t.attachComment&&t.attachComment;(l||c)&&((o=new r.CommentHandler).attach=c,t.comment=!0,u=a)}var h,d=!1;t&&"string"==typeof t.sourceType&&(d="module"===t.sourceType),h=t&&"boolean"==typeof t.jsx&&t.jsx?new i.JSXParser(e,t,u):new s.Parser(e,t,u);var p=d?h.parseModule():h.parseScript();return l&&o&&(p.comments=o.comments),h.config.tokens&&(p.tokens=h.tokens),h.config.tolerant&&(p.errors=h.errorHandler.errors),p}t.parse=a,t.parseModule=function(e,t,n){var r=t||{};return r.sourceType="module",a(e,r,n)},t.parseScript=function(e,t,n){var r=t||{};return r.sourceType="script",a(e,r,n)},t.tokenize=function(e,t,n){var r,i=new o.Tokenizer(e,t);r=[];try{for(;;){var s=i.getNextToken();if(!s)break;n&&(s=n(s)),r.push(s)}}catch(e){i.errorHandler.tolerate(e)}return i.errorHandler.tolerant&&(r.errors=i.errors()),r};var u=n(2);t.Syntax=u.Syntax,t.version="4.0.1"},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(2),i=function(){function e(){this.attach=!1,this.comments=[],this.stack=[],this.leading=[],this.trailing=[]}return e.prototype.insertInnerComments=function(e,t){if(e.type===r.Syntax.BlockStatement&&0===e.body.length){for(var n=[],i=this.leading.length-1;i>=0;--i){var s=this.leading[i];t.end.offset>=s.start&&(n.unshift(s.comment),this.leading.splice(i,1),this.trailing.splice(i,1))}n.length&&(e.innerComments=n)}},e.prototype.findTrailingComments=function(e){var t=[];if(this.trailing.length>0){for(var n=this.trailing.length-1;n>=0;--n){var r=this.trailing[n];r.start>=e.end.offset&&t.unshift(r.comment)}return this.trailing.length=0,t}var i=this.stack[this.stack.length-1];if(i&&i.node.trailingComments){var s=i.node.trailingComments[0];s&&s.range[0]>=e.end.offset&&(t=i.node.trailingComments,delete i.node.trailingComments)}return t},e.prototype.findLeadingComments=function(e){for(var t,n=[];this.stack.length>0&&((s=this.stack[this.stack.length-1])&&s.start>=e.start.offset);)t=s.node,this.stack.pop();if(t){for(var r=(t.leadingComments?t.leadingComments.length:0)-1;r>=0;--r){var i=t.leadingComments[r];i.range[1]<=e.start.offset&&(n.unshift(i),t.leadingComments.splice(r,1))}return t.leadingComments&&0===t.leadingComments.length&&delete t.leadingComments,n}for(r=this.leading.length-1;r>=0;--r){var s;(s=this.leading[r]).start<=e.start.offset&&(n.unshift(s.comment),this.leading.splice(r,1))}return n},e.prototype.visitNode=function(e,t){if(!(e.type===r.Syntax.Program&&e.body.length>0)){this.insertInnerComments(e,t);var n=this.findTrailingComments(t),i=this.findLeadingComments(t);i.length>0&&(e.leadingComments=i),n.length>0&&(e.trailingComments=n),this.stack.push({node:e,start:t.start.offset})}},e.prototype.visitComment=function(e,t){var n="L"===e.type[0]?"Line":"Block",r={type:n,value:e.value};if(e.range&&(r.range=e.range),e.loc&&(r.loc=e.loc),this.comments.push(r),this.attach){var i={comment:{type:n,value:e.value,range:[t.start.offset,t.end.offset]},start:t.start.offset};e.loc&&(i.comment.loc=e.loc),e.type=n,this.leading.push(i),this.trailing.push(i)}},e.prototype.visit=function(e,t){"LineComment"===e.type?this.visitComment(e,t):"BlockComment"===e.type?this.visitComment(e,t):this.attach&&this.visitNode(e,t)},e}();t.CommentHandler=i},function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Syntax={AssignmentExpression:"AssignmentExpression",AssignmentPattern:"AssignmentPattern",ArrayExpression:"ArrayExpression",ArrayPattern:"ArrayPattern",ArrowFunctionExpression:"ArrowFunctionExpression",AwaitExpression:"AwaitExpression",BlockStatement:"BlockStatement",BinaryExpression:"BinaryExpression",BreakStatement:"BreakStatement",CallExpression:"CallExpression",CatchClause:"CatchClause",ClassBody:"ClassBody",ClassDeclaration:"ClassDeclaration",ClassExpression:"ClassExpression",ConditionalExpression:"ConditionalExpression",ContinueStatement:"ContinueStatement",DoWhileStatement:"DoWhileStatement",DebuggerStatement:"DebuggerStatement",EmptyStatement:"EmptyStatement",ExportAllDeclaration:"ExportAllDeclaration",ExportDefaultDeclaration:"ExportDefaultDeclaration",ExportNamedDeclaration:"ExportNamedDeclaration",ExportSpecifier:"ExportSpecifier",ExpressionStatement:"ExpressionStatement",ForStatement:"ForStatement",ForOfStatement:"ForOfStatement",ForInStatement:"ForInStatement",FunctionDeclaration:"FunctionDeclaration",FunctionExpression:"FunctionExpression",Identifier:"Identifier",IfStatement:"IfStatement",ImportDeclaration:"ImportDeclaration",ImportDefaultSpecifier:"ImportDefaultSpecifier",ImportNamespaceSpecifier:"ImportNamespaceSpecifier",ImportSpecifier:"ImportSpecifier",Literal:"Literal",LabeledStatement:"LabeledStatement",LogicalExpression:"LogicalExpression",MemberExpression:"MemberExpression",MetaProperty:"MetaProperty",MethodDefinition:"MethodDefinition",NewExpression:"NewExpression",ObjectExpression:"ObjectExpression",ObjectPattern:"ObjectPattern",Program:"Program",Property:"Property",RestElement:"RestElement",ReturnStatement:"ReturnStatement",SequenceExpression:"SequenceExpression",SpreadElement:"SpreadElement",Super:"Super",SwitchCase:"SwitchCase",SwitchStatement:"SwitchStatement",TaggedTemplateExpression:"TaggedTemplateExpression",TemplateElement:"TemplateElement",TemplateLiteral:"TemplateLiteral",ThisExpression:"ThisExpression",ThrowStatement:"ThrowStatement",TryStatement:"TryStatement",UnaryExpression:"UnaryExpression",UpdateExpression:"UpdateExpression",VariableDeclaration:"VariableDeclaration",VariableDeclarator:"VariableDeclarator",WhileStatement:"WhileStatement",WithStatement:"WithStatement",YieldExpression:"YieldExpression"}},function(e,t,n){"use strict";var r,i=this&&this.__extends||(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},function(e,t){function n(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)});Object.defineProperty(t,"__esModule",{value:!0});var s=n(4),o=n(5),a=n(6),u=n(7),l=n(8),c=n(13),h=n(14);function d(e){var t;switch(e.type){case a.JSXSyntax.JSXIdentifier:t=e.name;break;case a.JSXSyntax.JSXNamespacedName:var n=e;t=d(n.namespace)+":"+d(n.name);break;case a.JSXSyntax.JSXMemberExpression:var r=e;t=d(r.object)+"."+d(r.property)}return t}c.TokenName[100]="JSXIdentifier",c.TokenName[101]="JSXText";var p=function(e){function t(t,n,r){return e.call(this,t,n,r)||this}return i(t,e),t.prototype.parsePrimaryExpression=function(){return this.match("<")?this.parseJSXRoot():e.prototype.parsePrimaryExpression.call(this)},t.prototype.startJSX=function(){this.scanner.index=this.startMarker.index,this.scanner.lineNumber=this.startMarker.line,this.scanner.lineStart=this.startMarker.index-this.startMarker.column},t.prototype.finishJSX=function(){this.nextToken()},t.prototype.reenterJSX=function(){this.startJSX(),this.expectJSX("}"),this.config.tokens&&this.tokens.pop()},t.prototype.createJSXNode=function(){return this.collectComments(),{index:this.scanner.index,line:this.scanner.lineNumber,column:this.scanner.index-this.scanner.lineStart}},t.prototype.createJSXChildNode=function(){return{index:this.scanner.index,line:this.scanner.lineNumber,column:this.scanner.index-this.scanner.lineStart}},t.prototype.scanXHTMLEntity=function(e){for(var t="&",n=!0,r=!1,i=!1,o=!1;!this.scanner.eof()&&n&&!r;){var a=this.scanner.source[this.scanner.index];if(a===e)break;if(r=";"===a,t+=a,++this.scanner.index,!r)switch(t.length){case 2:i="#"===a;break;case 3:i&&(n=(o="x"===a)||s.Character.isDecimalDigit(a.charCodeAt(0)),i=i&&!o);break;default:n=(n=n&&!(i&&!s.Character.isDecimalDigit(a.charCodeAt(0))))&&!(o&&!s.Character.isHexDigit(a.charCodeAt(0)))}}if(n&&r&&t.length>2){var u=t.substr(1,t.length-2);i&&u.length>1?t=String.fromCharCode(parseInt(u.substr(1),10)):o&&u.length>2?t=String.fromCharCode(parseInt("0"+u.substr(1),16)):i||o||!h.XHTMLEntities[u]||(t=h.XHTMLEntities[u])}return t},t.prototype.lexJSX=function(){var e=this.scanner.source.charCodeAt(this.scanner.index);if(60===e||62===e||47===e||58===e||61===e||123===e||125===e)return{type:7,value:a=this.scanner.source[this.scanner.index++],lineNumber:this.scanner.lineNumber,lineStart:this.scanner.lineStart,start:this.scanner.index-1,end:this.scanner.index};if(34===e||39===e){for(var t=this.scanner.index,n=this.scanner.source[this.scanner.index++],r="";!this.scanner.eof()&&(u=this.scanner.source[this.scanner.index++])!==n;)r+="&"===u?this.scanXHTMLEntity(n):u;return{type:8,value:r,lineNumber:this.scanner.lineNumber,lineStart:this.scanner.lineStart,start:t,end:this.scanner.index}}if(46===e){var i=this.scanner.source.charCodeAt(this.scanner.index+1),o=this.scanner.source.charCodeAt(this.scanner.index+2),a=46===i&&46===o?"...":".";return t=this.scanner.index,this.scanner.index+=a.length,{type:7,value:a,lineNumber:this.scanner.lineNumber,lineStart:this.scanner.lineStart,start:t,end:this.scanner.index}}if(96===e)return{type:10,value:"",lineNumber:this.scanner.lineNumber,lineStart:this.scanner.lineStart,start:this.scanner.index,end:this.scanner.index};if(s.Character.isIdentifierStart(e)&&92!==e){for(t=this.scanner.index,++this.scanner.index;!this.scanner.eof();){var u=this.scanner.source.charCodeAt(this.scanner.index);if(s.Character.isIdentifierPart(u)&&92!==u)++this.scanner.index;else{if(45!==u)break;++this.scanner.index}}return{type:100,value:this.scanner.source.slice(t,this.scanner.index),lineNumber:this.scanner.lineNumber,lineStart:this.scanner.lineStart,start:t,end:this.scanner.index}}return this.scanner.lex()},t.prototype.nextJSXToken=function(){this.collectComments(),this.startMarker.index=this.scanner.index,this.startMarker.line=this.scanner.lineNumber,this.startMarker.column=this.scanner.index-this.scanner.lineStart;var e=this.lexJSX();return this.lastMarker.index=this.scanner.index,this.lastMarker.line=this.scanner.lineNumber,this.lastMarker.column=this.scanner.index-this.scanner.lineStart,this.config.tokens&&this.tokens.push(this.convertToken(e)),e},t.prototype.nextJSXText=function(){this.startMarker.index=this.scanner.index,this.startMarker.line=this.scanner.lineNumber,this.startMarker.column=this.scanner.index-this.scanner.lineStart;for(var e=this.scanner.index,t="";!this.scanner.eof();){var n=this.scanner.source[this.scanner.index];if("{"===n||"<"===n)break;++this.scanner.index,t+=n,s.Character.isLineTerminator(n.charCodeAt(0))&&(++this.scanner.lineNumber,"\r"===n&&"\n"===this.scanner.source[this.scanner.index]&&++this.scanner.index,this.scanner.lineStart=this.scanner.index)}this.lastMarker.index=this.scanner.index,this.lastMarker.line=this.scanner.lineNumber,this.lastMarker.column=this.scanner.index-this.scanner.lineStart;var r={type:101,value:t,lineNumber:this.scanner.lineNumber,lineStart:this.scanner.lineStart,start:e,end:this.scanner.index};return t.length>0&&this.config.tokens&&this.tokens.push(this.convertToken(r)),r},t.prototype.peekJSXToken=function(){var e=this.scanner.saveState();this.scanner.scanComments();var t=this.lexJSX();return this.scanner.restoreState(e),t},t.prototype.expectJSX=function(e){var t=this.nextJSXToken();7===t.type&&t.value===e||this.throwUnexpectedToken(t)},t.prototype.matchJSX=function(e){var t=this.peekJSXToken();return 7===t.type&&t.value===e},t.prototype.parseJSXIdentifier=function(){var e=this.createJSXNode(),t=this.nextJSXToken();return 100!==t.type&&this.throwUnexpectedToken(t),this.finalize(e,new o.JSXIdentifier(t.value))},t.prototype.parseJSXElementName=function(){var e=this.createJSXNode(),t=this.parseJSXIdentifier();if(this.matchJSX(":")){var n=t;this.expectJSX(":");var r=this.parseJSXIdentifier();t=this.finalize(e,new o.JSXNamespacedName(n,r))}else if(this.matchJSX("."))for(;this.matchJSX(".");){var i=t;this.expectJSX(".");var s=this.parseJSXIdentifier();t=this.finalize(e,new o.JSXMemberExpression(i,s))}return t},t.prototype.parseJSXAttributeName=function(){var e,t=this.createJSXNode(),n=this.parseJSXIdentifier();if(this.matchJSX(":")){var r=n;this.expectJSX(":");var i=this.parseJSXIdentifier();e=this.finalize(t,new o.JSXNamespacedName(r,i))}else e=n;return e},t.prototype.parseJSXStringLiteralAttribute=function(){var e=this.createJSXNode(),t=this.nextJSXToken();8!==t.type&&this.throwUnexpectedToken(t);var n=this.getTokenRaw(t);return this.finalize(e,new u.Literal(t.value,n))},t.prototype.parseJSXExpressionAttribute=function(){var e=this.createJSXNode();this.expectJSX("{"),this.finishJSX(),this.match("}")&&this.tolerateError("JSX attributes must only be assigned a non-empty expression");var t=this.parseAssignmentExpression();return this.reenterJSX(),this.finalize(e,new o.JSXExpressionContainer(t))},t.prototype.parseJSXAttributeValue=function(){return this.matchJSX("{")?this.parseJSXExpressionAttribute():this.matchJSX("<")?this.parseJSXElement():this.parseJSXStringLiteralAttribute()},t.prototype.parseJSXNameValueAttribute=function(){var e=this.createJSXNode(),t=this.parseJSXAttributeName(),n=null;return this.matchJSX("=")&&(this.expectJSX("="),n=this.parseJSXAttributeValue()),this.finalize(e,new o.JSXAttribute(t,n))},t.prototype.parseJSXSpreadAttribute=function(){var e=this.createJSXNode();this.expectJSX("{"),this.expectJSX("..."),this.finishJSX();var t=this.parseAssignmentExpression();return this.reenterJSX(),this.finalize(e,new o.JSXSpreadAttribute(t))},t.prototype.parseJSXAttributes=function(){for(var e=[];!this.matchJSX("/")&&!this.matchJSX(">");){var t=this.matchJSX("{")?this.parseJSXSpreadAttribute():this.parseJSXNameValueAttribute();e.push(t)}return e},t.prototype.parseJSXOpeningElement=function(){var e=this.createJSXNode();this.expectJSX("<");var t=this.parseJSXElementName(),n=this.parseJSXAttributes(),r=this.matchJSX("/");return r&&this.expectJSX("/"),this.expectJSX(">"),this.finalize(e,new o.JSXOpeningElement(t,r,n))},t.prototype.parseJSXBoundaryElement=function(){var e=this.createJSXNode();if(this.expectJSX("<"),this.matchJSX("/")){this.expectJSX("/");var t=this.parseJSXElementName();return this.expectJSX(">"),this.finalize(e,new o.JSXClosingElement(t))}var n=this.parseJSXElementName(),r=this.parseJSXAttributes(),i=this.matchJSX("/");return i&&this.expectJSX("/"),this.expectJSX(">"),this.finalize(e,new o.JSXOpeningElement(n,i,r))},t.prototype.parseJSXEmptyExpression=function(){var e=this.createJSXChildNode();return this.collectComments(),this.lastMarker.index=this.scanner.index,this.lastMarker.line=this.scanner.lineNumber,this.lastMarker.column=this.scanner.index-this.scanner.lineStart,this.finalize(e,new o.JSXEmptyExpression)},t.prototype.parseJSXExpressionContainer=function(){var e,t=this.createJSXNode();return this.expectJSX("{"),this.matchJSX("}")?(e=this.parseJSXEmptyExpression(),this.expectJSX("}")):(this.finishJSX(),e=this.parseAssignmentExpression(),this.reenterJSX()),this.finalize(t,new o.JSXExpressionContainer(e))},t.prototype.parseJSXChildren=function(){for(var e=[];!this.scanner.eof();){var t=this.createJSXChildNode(),n=this.nextJSXText();if(n.start0))break;s=this.finalize(e.node,new o.JSXElement(e.opening,e.children,e.closing)),(e=t[t.length-1]).children.push(s),t.pop()}}return e},t.prototype.parseJSXElement=function(){var e=this.createJSXNode(),t=this.parseJSXOpeningElement(),n=[],r=null;if(!t.selfClosing){var i=this.parseComplexJSXElement({node:e,opening:t,closing:r,children:n});n=i.children,r=i.closing}return this.finalize(e,new o.JSXElement(t,n,r))},t.prototype.parseJSXRoot=function(){this.config.tokens&&this.tokens.pop(),this.startJSX();var e=this.parseJSXElement();return this.finishJSX(),e},t.prototype.isStartOfExpression=function(){return e.prototype.isStartOfExpression.call(this)||this.match("<")},t}(l.Parser);t.JSXParser=p},function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n={NonAsciiIdentifierStart:/[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0-\u08B4\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2118-\u211D\u2124\u2126\u2128\u212A-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309B-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FD5\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AD\uA7B0-\uA7B7\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF30-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC03-\uDC37\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDF00-\uDF19]|\uD806[\uDCA0-\uDCDF\uDCFF\uDEC0-\uDEF8]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50\uDF93-\uDF9F]|\uD82C[\uDC00\uDC01]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD83A[\uDC00-\uDCC4]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1]|\uD87E[\uDC00-\uDE1D]/,NonAsciiIdentifierPart:/[\xAA\xB5\xB7\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u08A0-\u08B4\u08E3-\u0963\u0966-\u096F\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0AF9\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C00-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58-\u0C5A\u0C60-\u0C63\u0C66-\u0C6F\u0C81-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D01-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D57\u0D5F-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1369-\u1371\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19DA\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1AB0-\u1ABD\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1CD0-\u1CD2\u1CD4-\u1CF6\u1CF8\u1CF9\u1D00-\u1DF5\u1DFC-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u200C\u200D\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2118-\u211D\u2124\u2126\u2128\u212A-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FD5\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AD\uA7B0-\uA7B7\uA7F7-\uA827\uA840-\uA873\uA880-\uA8C4\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA8FD\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE2F\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDDFD\uDE80-\uDE9C\uDEA0-\uDED0\uDEE0\uDF00-\uDF1F\uDF30-\uDF4A\uDF50-\uDF7A\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00-\uDE03\uDE05\uDE06\uDE0C-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE38-\uDE3A\uDE3F\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE6\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC00-\uDC46\uDC66-\uDC6F\uDC7F-\uDCBA\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD00-\uDD34\uDD36-\uDD3F\uDD50-\uDD73\uDD76\uDD80-\uDDC4\uDDCA-\uDDCC\uDDD0-\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE37\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEEA\uDEF0-\uDEF9\uDF00-\uDF03\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3C-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF50\uDF57\uDF5D-\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDC80-\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDB5\uDDB8-\uDDC0\uDDD8-\uDDDD\uDE00-\uDE40\uDE44\uDE50-\uDE59\uDE80-\uDEB7\uDEC0-\uDEC9\uDF00-\uDF19\uDF1D-\uDF2B\uDF30-\uDF39]|\uD806[\uDCA0-\uDCE9\uDCFF\uDEC0-\uDEF8]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE60-\uDE69\uDED0-\uDEED\uDEF0-\uDEF4\uDF00-\uDF36\uDF40-\uDF43\uDF50-\uDF59\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50-\uDF7E\uDF8F-\uDF9F]|\uD82C[\uDC00\uDC01]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99\uDC9D\uDC9E]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB\uDFCE-\uDFFF]|\uD836[\uDE00-\uDE36\uDE3B-\uDE6C\uDE75\uDE84\uDE9B-\uDE9F\uDEA1-\uDEAF]|\uD83A[\uDC00-\uDCC4\uDCD0-\uDCD6]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1]|\uD87E[\uDC00-\uDE1D]|\uDB40[\uDD00-\uDDEF]/};t.Character={fromCodePoint:function(e){return e<65536?String.fromCharCode(e):String.fromCharCode(55296+(e-65536>>10))+String.fromCharCode(56320+(e-65536&1023))},isWhiteSpace:function(e){return 32===e||9===e||11===e||12===e||160===e||e>=5760&&[5760,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8239,8287,12288,65279].indexOf(e)>=0},isLineTerminator:function(e){return 10===e||13===e||8232===e||8233===e},isIdentifierStart:function(e){return 36===e||95===e||e>=65&&e<=90||e>=97&&e<=122||92===e||e>=128&&n.NonAsciiIdentifierStart.test(t.Character.fromCodePoint(e))},isIdentifierPart:function(e){return 36===e||95===e||e>=65&&e<=90||e>=97&&e<=122||e>=48&&e<=57||92===e||e>=128&&n.NonAsciiIdentifierPart.test(t.Character.fromCodePoint(e))},isDecimalDigit:function(e){return e>=48&&e<=57},isHexDigit:function(e){return e>=48&&e<=57||e>=65&&e<=70||e>=97&&e<=102},isOctalDigit:function(e){return e>=48&&e<=55}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(6),i=function(e){this.type=r.JSXSyntax.JSXClosingElement,this.name=e};t.JSXClosingElement=i;var s=function(e,t,n){this.type=r.JSXSyntax.JSXElement,this.openingElement=e,this.children=t,this.closingElement=n};t.JSXElement=s;var o=function(){this.type=r.JSXSyntax.JSXEmptyExpression};t.JSXEmptyExpression=o;var a=function(e){this.type=r.JSXSyntax.JSXExpressionContainer,this.expression=e};t.JSXExpressionContainer=a;var u=function(e){this.type=r.JSXSyntax.JSXIdentifier,this.name=e};t.JSXIdentifier=u;var l=function(e,t){this.type=r.JSXSyntax.JSXMemberExpression,this.object=e,this.property=t};t.JSXMemberExpression=l;var c=function(e,t){this.type=r.JSXSyntax.JSXAttribute,this.name=e,this.value=t};t.JSXAttribute=c;var h=function(e,t){this.type=r.JSXSyntax.JSXNamespacedName,this.namespace=e,this.name=t};t.JSXNamespacedName=h;var d=function(e,t,n){this.type=r.JSXSyntax.JSXOpeningElement,this.name=e,this.selfClosing=t,this.attributes=n};t.JSXOpeningElement=d;var p=function(e){this.type=r.JSXSyntax.JSXSpreadAttribute,this.argument=e};t.JSXSpreadAttribute=p;var f=function(e,t){this.type=r.JSXSyntax.JSXText,this.value=e,this.raw=t};t.JSXText=f},function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.JSXSyntax={JSXAttribute:"JSXAttribute",JSXClosingElement:"JSXClosingElement",JSXElement:"JSXElement",JSXEmptyExpression:"JSXEmptyExpression",JSXExpressionContainer:"JSXExpressionContainer",JSXIdentifier:"JSXIdentifier",JSXMemberExpression:"JSXMemberExpression",JSXNamespacedName:"JSXNamespacedName",JSXOpeningElement:"JSXOpeningElement",JSXSpreadAttribute:"JSXSpreadAttribute",JSXText:"JSXText"}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(2),i=function(e){this.type=r.Syntax.ArrayExpression,this.elements=e};t.ArrayExpression=i;var s=function(e){this.type=r.Syntax.ArrayPattern,this.elements=e};t.ArrayPattern=s;var o=function(e,t,n){this.type=r.Syntax.ArrowFunctionExpression,this.id=null,this.params=e,this.body=t,this.generator=!1,this.expression=n,this.async=!1};t.ArrowFunctionExpression=o;var a=function(e,t,n){this.type=r.Syntax.AssignmentExpression,this.operator=e,this.left=t,this.right=n};t.AssignmentExpression=a;var u=function(e,t){this.type=r.Syntax.AssignmentPattern,this.left=e,this.right=t};t.AssignmentPattern=u;var l=function(e,t,n){this.type=r.Syntax.ArrowFunctionExpression,this.id=null,this.params=e,this.body=t,this.generator=!1,this.expression=n,this.async=!0};t.AsyncArrowFunctionExpression=l;var c=function(e,t,n){this.type=r.Syntax.FunctionDeclaration,this.id=e,this.params=t,this.body=n,this.generator=!1,this.expression=!1,this.async=!0};t.AsyncFunctionDeclaration=c;var h=function(e,t,n){this.type=r.Syntax.FunctionExpression,this.id=e,this.params=t,this.body=n,this.generator=!1,this.expression=!1,this.async=!0};t.AsyncFunctionExpression=h;var d=function(e){this.type=r.Syntax.AwaitExpression,this.argument=e};t.AwaitExpression=d;var p=function(e,t,n){var i="||"===e||"&&"===e;this.type=i?r.Syntax.LogicalExpression:r.Syntax.BinaryExpression,this.operator=e,this.left=t,this.right=n};t.BinaryExpression=p;var f=function(e){this.type=r.Syntax.BlockStatement,this.body=e};t.BlockStatement=f;var m=function(e){this.type=r.Syntax.BreakStatement,this.label=e};t.BreakStatement=m;var w=function(e,t){this.type=r.Syntax.CallExpression,this.callee=e,this.arguments=t};t.CallExpression=w;var g=function(e,t){this.type=r.Syntax.CatchClause,this.param=e,this.body=t};t.CatchClause=g;var b=function(e){this.type=r.Syntax.ClassBody,this.body=e};t.ClassBody=b;var _=function(e,t,n){this.type=r.Syntax.ClassDeclaration,this.id=e,this.superClass=t,this.body=n};t.ClassDeclaration=_;var y=function(e,t,n){this.type=r.Syntax.ClassExpression,this.id=e,this.superClass=t,this.body=n};t.ClassExpression=y;var v=function(e,t){this.type=r.Syntax.MemberExpression,this.computed=!0,this.object=e,this.property=t};t.ComputedMemberExpression=v;var x=function(e,t,n){this.type=r.Syntax.ConditionalExpression,this.test=e,this.consequent=t,this.alternate=n};t.ConditionalExpression=x;var E=function(e){this.type=r.Syntax.ContinueStatement,this.label=e};t.ContinueStatement=E;var A=function(){this.type=r.Syntax.DebuggerStatement};t.DebuggerStatement=A;var S=function(e,t){this.type=r.Syntax.ExpressionStatement,this.expression=e,this.directive=t};t.Directive=S;var k=function(e,t){this.type=r.Syntax.DoWhileStatement,this.body=e,this.test=t};t.DoWhileStatement=k;var T=function(){this.type=r.Syntax.EmptyStatement};t.EmptyStatement=T;var C=function(e){this.type=r.Syntax.ExportAllDeclaration,this.source=e};t.ExportAllDeclaration=C;var D=function(e){this.type=r.Syntax.ExportDefaultDeclaration,this.declaration=e};t.ExportDefaultDeclaration=D;var R=function(e,t,n){this.type=r.Syntax.ExportNamedDeclaration,this.declaration=e,this.specifiers=t,this.source=n};t.ExportNamedDeclaration=R;var O=function(e,t){this.type=r.Syntax.ExportSpecifier,this.exported=t,this.local=e};t.ExportSpecifier=O;var I=function(e){this.type=r.Syntax.ExpressionStatement,this.expression=e};t.ExpressionStatement=I;var N=function(e,t,n){this.type=r.Syntax.ForInStatement,this.left=e,this.right=t,this.body=n,this.each=!1};t.ForInStatement=N;var F=function(e,t,n){this.type=r.Syntax.ForOfStatement,this.left=e,this.right=t,this.body=n};t.ForOfStatement=F;var P=function(e,t,n,i){this.type=r.Syntax.ForStatement,this.init=e,this.test=t,this.update=n,this.body=i};t.ForStatement=P;var L=function(e,t,n,i){this.type=r.Syntax.FunctionDeclaration,this.id=e,this.params=t,this.body=n,this.generator=i,this.expression=!1,this.async=!1};t.FunctionDeclaration=L;var B=function(e,t,n,i){this.type=r.Syntax.FunctionExpression,this.id=e,this.params=t,this.body=n,this.generator=i,this.expression=!1,this.async=!1};t.FunctionExpression=B;var U=function(e){this.type=r.Syntax.Identifier,this.name=e};t.Identifier=U;var M=function(e,t,n){this.type=r.Syntax.IfStatement,this.test=e,this.consequent=t,this.alternate=n};t.IfStatement=M;var j=function(e,t){this.type=r.Syntax.ImportDeclaration,this.specifiers=e,this.source=t};t.ImportDeclaration=j;var W=function(e){this.type=r.Syntax.ImportDefaultSpecifier,this.local=e};t.ImportDefaultSpecifier=W;var z=function(e){this.type=r.Syntax.ImportNamespaceSpecifier,this.local=e};t.ImportNamespaceSpecifier=z;var H=function(e,t){this.type=r.Syntax.ImportSpecifier,this.local=e,this.imported=t};t.ImportSpecifier=H;var G=function(e,t){this.type=r.Syntax.LabeledStatement,this.label=e,this.body=t};t.LabeledStatement=G;var q=function(e,t){this.type=r.Syntax.Literal,this.value=e,this.raw=t};t.Literal=q;var V=function(e,t){this.type=r.Syntax.MetaProperty,this.meta=e,this.property=t};t.MetaProperty=V;var K=function(e,t,n,i,s){this.type=r.Syntax.MethodDefinition,this.key=e,this.computed=t,this.value=n,this.kind=i,this.static=s};t.MethodDefinition=K;var X=function(e){this.type=r.Syntax.Program,this.body=e,this.sourceType="module"};t.Module=X;var Y=function(e,t){this.type=r.Syntax.NewExpression,this.callee=e,this.arguments=t};t.NewExpression=Y;var J=function(e){this.type=r.Syntax.ObjectExpression,this.properties=e};t.ObjectExpression=J;var Z=function(e){this.type=r.Syntax.ObjectPattern,this.properties=e};t.ObjectPattern=Z;var Q=function(e,t,n,i,s,o){this.type=r.Syntax.Property,this.key=t,this.computed=n,this.value=i,this.kind=e,this.method=s,this.shorthand=o};t.Property=Q;var $=function(e,t,n,i){this.type=r.Syntax.Literal,this.value=e,this.raw=t,this.regex={pattern:n,flags:i}};t.RegexLiteral=$;var ee=function(e){this.type=r.Syntax.RestElement,this.argument=e};t.RestElement=ee;var te=function(e){this.type=r.Syntax.ReturnStatement,this.argument=e};t.ReturnStatement=te;var ne=function(e){this.type=r.Syntax.Program,this.body=e,this.sourceType="script"};t.Script=ne;var re=function(e){this.type=r.Syntax.SequenceExpression,this.expressions=e};t.SequenceExpression=re;var ie=function(e){this.type=r.Syntax.SpreadElement,this.argument=e};t.SpreadElement=ie;var se=function(e,t){this.type=r.Syntax.MemberExpression,this.computed=!1,this.object=e,this.property=t};t.StaticMemberExpression=se;var oe=function(){this.type=r.Syntax.Super};t.Super=oe;var ae=function(e,t){this.type=r.Syntax.SwitchCase,this.test=e,this.consequent=t};t.SwitchCase=ae;var ue=function(e,t){this.type=r.Syntax.SwitchStatement,this.discriminant=e,this.cases=t};t.SwitchStatement=ue;var le=function(e,t){this.type=r.Syntax.TaggedTemplateExpression,this.tag=e,this.quasi=t};t.TaggedTemplateExpression=le;var ce=function(e,t){this.type=r.Syntax.TemplateElement,this.value=e,this.tail=t};t.TemplateElement=ce;var he=function(e,t){this.type=r.Syntax.TemplateLiteral,this.quasis=e,this.expressions=t};t.TemplateLiteral=he;var de=function(){this.type=r.Syntax.ThisExpression};t.ThisExpression=de;var pe=function(e){this.type=r.Syntax.ThrowStatement,this.argument=e};t.ThrowStatement=pe;var fe=function(e,t,n){this.type=r.Syntax.TryStatement,this.block=e,this.handler=t,this.finalizer=n};t.TryStatement=fe;var me=function(e,t){this.type=r.Syntax.UnaryExpression,this.operator=e,this.argument=t,this.prefix=!0};t.UnaryExpression=me;var we=function(e,t,n){this.type=r.Syntax.UpdateExpression,this.operator=e,this.argument=t,this.prefix=n};t.UpdateExpression=we;var ge=function(e,t){this.type=r.Syntax.VariableDeclaration,this.declarations=e,this.kind=t};t.VariableDeclaration=ge;var be=function(e,t){this.type=r.Syntax.VariableDeclarator,this.id=e,this.init=t};t.VariableDeclarator=be;var _e=function(e,t){this.type=r.Syntax.WhileStatement,this.test=e,this.body=t};t.WhileStatement=_e;var ye=function(e,t){this.type=r.Syntax.WithStatement,this.object=e,this.body=t};t.WithStatement=ye;var ve=function(e,t){this.type=r.Syntax.YieldExpression,this.argument=e,this.delegate=t};t.YieldExpression=ve},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(9),i=n(10),s=n(11),o=n(7),a=n(12),u=n(2),l=n(13),c=function(){function e(e,t,n){void 0===t&&(t={}),this.config={range:"boolean"==typeof t.range&&t.range,loc:"boolean"==typeof t.loc&&t.loc,source:null,tokens:"boolean"==typeof t.tokens&&t.tokens,comment:"boolean"==typeof t.comment&&t.comment,tolerant:"boolean"==typeof t.tolerant&&t.tolerant},this.config.loc&&t.source&&null!==t.source&&(this.config.source=String(t.source)),this.delegate=n,this.errorHandler=new i.ErrorHandler,this.errorHandler.tolerant=this.config.tolerant,this.scanner=new a.Scanner(e,this.errorHandler),this.scanner.trackComment=this.config.comment,this.operatorPrecedence={")":0,";":0,",":0,"=":0,"]":0,"||":1,"&&":2,"|":3,"^":4,"&":5,"==":6,"!=":6,"===":6,"!==":6,"<":7,">":7,"<=":7,">=":7,"<<":8,">>":8,">>>":8,"+":9,"-":9,"*":11,"/":11,"%":11},this.lookahead={type:2,value:"",lineNumber:this.scanner.lineNumber,lineStart:0,start:0,end:0},this.hasLineTerminator=!1,this.context={isModule:!1,await:!1,allowIn:!0,allowStrictDirective:!0,allowYield:!0,firstCoverInitializedNameError:null,isAssignmentTarget:!1,isBindingElement:!1,inFunctionBody:!1,inIteration:!1,inSwitch:!1,labelSet:{},strict:!1},this.tokens=[],this.startMarker={index:0,line:this.scanner.lineNumber,column:0},this.lastMarker={index:0,line:this.scanner.lineNumber,column:0},this.nextToken(),this.lastMarker={index:this.scanner.index,line:this.scanner.lineNumber,column:this.scanner.index-this.scanner.lineStart}}return e.prototype.throwError=function(e){for(var t=[],n=1;n0&&this.delegate)for(var t=0;t>="===e||">>>="===e||"&="===e||"^="===e||"|="===e},e.prototype.isolateCoverGrammar=function(e){var t=this.context.isBindingElement,n=this.context.isAssignmentTarget,r=this.context.firstCoverInitializedNameError;this.context.isBindingElement=!0,this.context.isAssignmentTarget=!0,this.context.firstCoverInitializedNameError=null;var i=e.call(this);return null!==this.context.firstCoverInitializedNameError&&this.throwUnexpectedToken(this.context.firstCoverInitializedNameError),this.context.isBindingElement=t,this.context.isAssignmentTarget=n,this.context.firstCoverInitializedNameError=r,i},e.prototype.inheritCoverGrammar=function(e){var t=this.context.isBindingElement,n=this.context.isAssignmentTarget,r=this.context.firstCoverInitializedNameError;this.context.isBindingElement=!0,this.context.isAssignmentTarget=!0,this.context.firstCoverInitializedNameError=null;var i=e.call(this);return this.context.isBindingElement=this.context.isBindingElement&&t,this.context.isAssignmentTarget=this.context.isAssignmentTarget&&n,this.context.firstCoverInitializedNameError=r||this.context.firstCoverInitializedNameError,i},e.prototype.consumeSemicolon=function(){this.match(";")?this.nextToken():this.hasLineTerminator||(2===this.lookahead.type||this.match("}")||this.throwUnexpectedToken(this.lookahead),this.lastMarker.index=this.startMarker.index,this.lastMarker.line=this.startMarker.line,this.lastMarker.column=this.startMarker.column)},e.prototype.parsePrimaryExpression=function(){var e,t,n,r=this.createNode();switch(this.lookahead.type){case 3:(this.context.isModule||this.context.await)&&"await"===this.lookahead.value&&this.tolerateUnexpectedToken(this.lookahead),e=this.matchAsyncFunction()?this.parseFunctionExpression():this.finalize(r,new o.Identifier(this.nextToken().value));break;case 6:case 8:this.context.strict&&this.lookahead.octal&&this.tolerateUnexpectedToken(this.lookahead,s.Messages.StrictOctalLiteral),this.context.isAssignmentTarget=!1,this.context.isBindingElement=!1,t=this.nextToken(),n=this.getTokenRaw(t),e=this.finalize(r,new o.Literal(t.value,n));break;case 1:this.context.isAssignmentTarget=!1,this.context.isBindingElement=!1,t=this.nextToken(),n=this.getTokenRaw(t),e=this.finalize(r,new o.Literal("true"===t.value,n));break;case 5:this.context.isAssignmentTarget=!1,this.context.isBindingElement=!1,t=this.nextToken(),n=this.getTokenRaw(t),e=this.finalize(r,new o.Literal(null,n));break;case 10:e=this.parseTemplateLiteral();break;case 7:switch(this.lookahead.value){case"(":this.context.isBindingElement=!1,e=this.inheritCoverGrammar(this.parseGroupExpression);break;case"[":e=this.inheritCoverGrammar(this.parseArrayInitializer);break;case"{":e=this.inheritCoverGrammar(this.parseObjectInitializer);break;case"/":case"/=":this.context.isAssignmentTarget=!1,this.context.isBindingElement=!1,this.scanner.index=this.startMarker.index,t=this.nextRegexToken(),n=this.getTokenRaw(t),e=this.finalize(r,new o.RegexLiteral(t.regex,n,t.pattern,t.flags));break;default:e=this.throwUnexpectedToken(this.nextToken())}break;case 4:!this.context.strict&&this.context.allowYield&&this.matchKeyword("yield")?e=this.parseIdentifierName():!this.context.strict&&this.matchKeyword("let")?e=this.finalize(r,new o.Identifier(this.nextToken().value)):(this.context.isAssignmentTarget=!1,this.context.isBindingElement=!1,this.matchKeyword("function")?e=this.parseFunctionExpression():this.matchKeyword("this")?(this.nextToken(),e=this.finalize(r,new o.ThisExpression)):e=this.matchKeyword("class")?this.parseClassExpression():this.throwUnexpectedToken(this.nextToken()));break;default:e=this.throwUnexpectedToken(this.nextToken())}return e},e.prototype.parseSpreadElement=function(){var e=this.createNode();this.expect("...");var t=this.inheritCoverGrammar(this.parseAssignmentExpression);return this.finalize(e,new o.SpreadElement(t))},e.prototype.parseArrayInitializer=function(){var e=this.createNode(),t=[];for(this.expect("[");!this.match("]");)if(this.match(","))this.nextToken(),t.push(null);else if(this.match("...")){var n=this.parseSpreadElement();this.match("]")||(this.context.isAssignmentTarget=!1,this.context.isBindingElement=!1,this.expect(",")),t.push(n)}else t.push(this.inheritCoverGrammar(this.parseAssignmentExpression)),this.match("]")||this.expect(",");return this.expect("]"),this.finalize(e,new o.ArrayExpression(t))},e.prototype.parsePropertyMethod=function(e){this.context.isAssignmentTarget=!1,this.context.isBindingElement=!1;var t=this.context.strict,n=this.context.allowStrictDirective;this.context.allowStrictDirective=e.simple;var r=this.isolateCoverGrammar(this.parseFunctionSourceElements);return this.context.strict&&e.firstRestricted&&this.tolerateUnexpectedToken(e.firstRestricted,e.message),this.context.strict&&e.stricted&&this.tolerateUnexpectedToken(e.stricted,e.message),this.context.strict=t,this.context.allowStrictDirective=n,r},e.prototype.parsePropertyMethodFunction=function(){var e=this.createNode(),t=this.context.allowYield;this.context.allowYield=!0;var n=this.parseFormalParameters(),r=this.parsePropertyMethod(n);return this.context.allowYield=t,this.finalize(e,new o.FunctionExpression(null,n.params,r,!1))},e.prototype.parsePropertyMethodAsyncFunction=function(){var e=this.createNode(),t=this.context.allowYield,n=this.context.await;this.context.allowYield=!1,this.context.await=!0;var r=this.parseFormalParameters(),i=this.parsePropertyMethod(r);return this.context.allowYield=t,this.context.await=n,this.finalize(e,new o.AsyncFunctionExpression(null,r.params,i))},e.prototype.parseObjectPropertyKey=function(){var e,t=this.createNode(),n=this.nextToken();switch(n.type){case 8:case 6:this.context.strict&&n.octal&&this.tolerateUnexpectedToken(n,s.Messages.StrictOctalLiteral);var r=this.getTokenRaw(n);e=this.finalize(t,new o.Literal(n.value,r));break;case 3:case 1:case 5:case 4:e=this.finalize(t,new o.Identifier(n.value));break;case 7:"["===n.value?(e=this.isolateCoverGrammar(this.parseAssignmentExpression),this.expect("]")):e=this.throwUnexpectedToken(n);break;default:e=this.throwUnexpectedToken(n)}return e},e.prototype.isPropertyKey=function(e,t){return e.type===u.Syntax.Identifier&&e.name===t||e.type===u.Syntax.Literal&&e.value===t},e.prototype.parseObjectProperty=function(e){var t,n=this.createNode(),r=this.lookahead,i=null,a=null,u=!1,l=!1,c=!1,h=!1;if(3===r.type){var d=r.value;this.nextToken(),u=this.match("["),i=(h=!(this.hasLineTerminator||"async"!==d||this.match(":")||this.match("(")||this.match("*")||this.match(",")))?this.parseObjectPropertyKey():this.finalize(n,new o.Identifier(d))}else this.match("*")?this.nextToken():(u=this.match("["),i=this.parseObjectPropertyKey());var p=this.qualifiedPropertyName(this.lookahead);if(3===r.type&&!h&&"get"===r.value&&p)t="get",u=this.match("["),i=this.parseObjectPropertyKey(),this.context.allowYield=!1,a=this.parseGetterMethod();else if(3===r.type&&!h&&"set"===r.value&&p)t="set",u=this.match("["),i=this.parseObjectPropertyKey(),a=this.parseSetterMethod();else if(7===r.type&&"*"===r.value&&p)t="init",u=this.match("["),i=this.parseObjectPropertyKey(),a=this.parseGeneratorMethod(),l=!0;else if(i||this.throwUnexpectedToken(this.lookahead),t="init",this.match(":")&&!h)!u&&this.isPropertyKey(i,"__proto__")&&(e.value&&this.tolerateError(s.Messages.DuplicateProtoProperty),e.value=!0),this.nextToken(),a=this.inheritCoverGrammar(this.parseAssignmentExpression);else if(this.match("("))a=h?this.parsePropertyMethodAsyncFunction():this.parsePropertyMethodFunction(),l=!0;else if(3===r.type)if(d=this.finalize(n,new o.Identifier(r.value)),this.match("=")){this.context.firstCoverInitializedNameError=this.lookahead,this.nextToken(),c=!0;var f=this.isolateCoverGrammar(this.parseAssignmentExpression);a=this.finalize(n,new o.AssignmentPattern(d,f))}else c=!0,a=d;else this.throwUnexpectedToken(this.nextToken());return this.finalize(n,new o.Property(t,i,u,a,l,c))},e.prototype.parseObjectInitializer=function(){var e=this.createNode();this.expect("{");for(var t=[],n={value:!1};!this.match("}");)t.push(this.parseObjectProperty(n)),this.match("}")||this.expectCommaSeparator();return this.expect("}"),this.finalize(e,new o.ObjectExpression(t))},e.prototype.parseTemplateHead=function(){r.assert(this.lookahead.head,"Template literal must start with a template head");var e=this.createNode(),t=this.nextToken(),n=t.value,i=t.cooked;return this.finalize(e,new o.TemplateElement({raw:n,cooked:i},t.tail))},e.prototype.parseTemplateElement=function(){10!==this.lookahead.type&&this.throwUnexpectedToken();var e=this.createNode(),t=this.nextToken(),n=t.value,r=t.cooked;return this.finalize(e,new o.TemplateElement({raw:n,cooked:r},t.tail))},e.prototype.parseTemplateLiteral=function(){var e=this.createNode(),t=[],n=[],r=this.parseTemplateHead();for(n.push(r);!r.tail;)t.push(this.parseExpression()),r=this.parseTemplateElement(),n.push(r);return this.finalize(e,new o.TemplateLiteral(n,t))},e.prototype.reinterpretExpressionAsPattern=function(e){switch(e.type){case u.Syntax.Identifier:case u.Syntax.MemberExpression:case u.Syntax.RestElement:case u.Syntax.AssignmentPattern:break;case u.Syntax.SpreadElement:e.type=u.Syntax.RestElement,this.reinterpretExpressionAsPattern(e.argument);break;case u.Syntax.ArrayExpression:e.type=u.Syntax.ArrayPattern;for(var t=0;t")||this.expect("=>"),e={type:"ArrowParameterPlaceHolder",params:[],async:!1};else{var t=this.lookahead,n=[];if(this.match("..."))e=this.parseRestElement(n),this.expect(")"),this.match("=>")||this.expect("=>"),e={type:"ArrowParameterPlaceHolder",params:[e],async:!1};else{var r=!1;if(this.context.isBindingElement=!0,e=this.inheritCoverGrammar(this.parseAssignmentExpression),this.match(",")){var i=[];for(this.context.isAssignmentTarget=!1,i.push(e);2!==this.lookahead.type&&this.match(",");){if(this.nextToken(),this.match(")")){this.nextToken();for(var s=0;s")||this.expect("=>"),this.context.isBindingElement=!1,s=0;s")&&(e.type===u.Syntax.Identifier&&"yield"===e.name&&(r=!0,e={type:"ArrowParameterPlaceHolder",params:[e],async:!1}),!r)){if(this.context.isBindingElement||this.throwUnexpectedToken(this.lookahead),e.type===u.Syntax.SequenceExpression)for(s=0;s")){for(var u=0;u0){this.nextToken(),this.context.isAssignmentTarget=!1,this.context.isBindingElement=!1;for(var i=[e,this.lookahead],s=t,a=this.isolateCoverGrammar(this.parseExponentiationExpression),u=[s,n.value,a],l=[r];!((r=this.binaryPrecedence(this.lookahead))<=0);){for(;u.length>2&&r<=l[l.length-1];){a=u.pop();var c=u.pop();l.pop(),s=u.pop(),i.pop();var h=this.startNode(i[i.length-1]);u.push(this.finalize(h,new o.BinaryExpression(c,s,a)))}u.push(this.nextToken().value),l.push(r),i.push(this.lookahead),u.push(this.isolateCoverGrammar(this.parseExponentiationExpression))}var d=u.length-1;t=u[d];for(var p=i.pop();d>1;){var f=i.pop(),m=p&&p.lineStart;h=this.startNode(f,m),c=u[d-1],t=this.finalize(h,new o.BinaryExpression(c,u[d-2],t)),d-=2,p=f}}return t},e.prototype.parseConditionalExpression=function(){var e=this.lookahead,t=this.inheritCoverGrammar(this.parseBinaryExpression);if(this.match("?")){this.nextToken();var n=this.context.allowIn;this.context.allowIn=!0;var r=this.isolateCoverGrammar(this.parseAssignmentExpression);this.context.allowIn=n,this.expect(":");var i=this.isolateCoverGrammar(this.parseAssignmentExpression);t=this.finalize(this.startNode(e),new o.ConditionalExpression(t,r,i)),this.context.isAssignmentTarget=!1,this.context.isBindingElement=!1}return t},e.prototype.checkPatternParam=function(e,t){switch(t.type){case u.Syntax.Identifier:this.validateParam(e,t,t.name);break;case u.Syntax.RestElement:this.checkPatternParam(e,t.argument);break;case u.Syntax.AssignmentPattern:this.checkPatternParam(e,t.left);break;case u.Syntax.ArrayPattern:for(var n=0;n")){this.context.isAssignmentTarget=!1,this.context.isBindingElement=!1;var i=e.async,a=this.reinterpretAsCoverFormalsList(e);if(a){this.hasLineTerminator&&this.tolerateUnexpectedToken(this.lookahead),this.context.firstCoverInitializedNameError=null;var l=this.context.strict,c=this.context.allowStrictDirective;this.context.allowStrictDirective=a.simple;var h=this.context.allowYield,d=this.context.await;this.context.allowYield=!0,this.context.await=i;var p=this.startNode(t);this.expect("=>");var f=void 0;if(this.match("{")){var m=this.context.allowIn;this.context.allowIn=!0,f=this.parseFunctionSourceElements(),this.context.allowIn=m}else f=this.isolateCoverGrammar(this.parseAssignmentExpression);var w=f.type!==u.Syntax.BlockStatement;this.context.strict&&a.firstRestricted&&this.throwUnexpectedToken(a.firstRestricted,a.message),this.context.strict&&a.stricted&&this.tolerateUnexpectedToken(a.stricted,a.message),e=i?this.finalize(p,new o.AsyncArrowFunctionExpression(a.params,f,w)):this.finalize(p,new o.ArrowFunctionExpression(a.params,f,w)),this.context.strict=l,this.context.allowStrictDirective=c,this.context.allowYield=h,this.context.await=d}}else if(this.matchAssign()){if(this.context.isAssignmentTarget||this.tolerateError(s.Messages.InvalidLHSInAssignment),this.context.strict&&e.type===u.Syntax.Identifier){var g=e;this.scanner.isRestrictedWord(g.name)&&this.tolerateUnexpectedToken(n,s.Messages.StrictLHSAssignment),this.scanner.isStrictModeReservedWord(g.name)&&this.tolerateUnexpectedToken(n,s.Messages.StrictReservedWord)}this.match("=")?this.reinterpretExpressionAsPattern(e):(this.context.isAssignmentTarget=!1,this.context.isBindingElement=!1);var b=(n=this.nextToken()).value,_=this.isolateCoverGrammar(this.parseAssignmentExpression);e=this.finalize(this.startNode(t),new o.AssignmentExpression(b,e,_)),this.context.firstCoverInitializedNameError=null}}return e},e.prototype.parseExpression=function(){var e=this.lookahead,t=this.isolateCoverGrammar(this.parseAssignmentExpression);if(this.match(",")){var n=[];for(n.push(t);2!==this.lookahead.type&&this.match(",");)this.nextToken(),n.push(this.isolateCoverGrammar(this.parseAssignmentExpression));t=this.finalize(this.startNode(e),new o.SequenceExpression(n))}return t},e.prototype.parseStatementListItem=function(){var e;if(this.context.isAssignmentTarget=!0,this.context.isBindingElement=!0,4===this.lookahead.type)switch(this.lookahead.value){case"export":this.context.isModule||this.tolerateUnexpectedToken(this.lookahead,s.Messages.IllegalExportDeclaration),e=this.parseExportDeclaration();break;case"import":this.context.isModule||this.tolerateUnexpectedToken(this.lookahead,s.Messages.IllegalImportDeclaration),e=this.parseImportDeclaration();break;case"const":e=this.parseLexicalDeclaration({inFor:!1});break;case"function":e=this.parseFunctionDeclaration();break;case"class":e=this.parseClassDeclaration();break;case"let":e=this.isLexicalDeclaration()?this.parseLexicalDeclaration({inFor:!1}):this.parseStatement();break;default:e=this.parseStatement()}else e=this.parseStatement();return e},e.prototype.parseBlock=function(){var e=this.createNode();this.expect("{");for(var t=[];!this.match("}");)t.push(this.parseStatementListItem());return this.expect("}"),this.finalize(e,new o.BlockStatement(t))},e.prototype.parseLexicalBinding=function(e,t){var n=this.createNode(),r=this.parsePattern([],e);this.context.strict&&r.type===u.Syntax.Identifier&&this.scanner.isRestrictedWord(r.name)&&this.tolerateError(s.Messages.StrictVarName);var i=null;return"const"===e?this.matchKeyword("in")||this.matchContextualKeyword("of")||(this.match("=")?(this.nextToken(),i=this.isolateCoverGrammar(this.parseAssignmentExpression)):this.throwError(s.Messages.DeclarationMissingInitializer,"const")):(!t.inFor&&r.type!==u.Syntax.Identifier||this.match("="))&&(this.expect("="),i=this.isolateCoverGrammar(this.parseAssignmentExpression)),this.finalize(n,new o.VariableDeclarator(r,i))},e.prototype.parseBindingList=function(e,t){for(var n=[this.parseLexicalBinding(e,t)];this.match(",");)this.nextToken(),n.push(this.parseLexicalBinding(e,t));return n},e.prototype.isLexicalDeclaration=function(){var e=this.scanner.saveState();this.scanner.scanComments();var t=this.scanner.lex();return this.scanner.restoreState(e),3===t.type||7===t.type&&"["===t.value||7===t.type&&"{"===t.value||4===t.type&&"let"===t.value||4===t.type&&"yield"===t.value},e.prototype.parseLexicalDeclaration=function(e){var t=this.createNode(),n=this.nextToken().value;r.assert("let"===n||"const"===n,"Lexical declaration must be either let or const");var i=this.parseBindingList(n,e);return this.consumeSemicolon(),this.finalize(t,new o.VariableDeclaration(i,n))},e.prototype.parseBindingRestElement=function(e,t){var n=this.createNode();this.expect("...");var r=this.parsePattern(e,t);return this.finalize(n,new o.RestElement(r))},e.prototype.parseArrayPattern=function(e,t){var n=this.createNode();this.expect("[");for(var r=[];!this.match("]");)if(this.match(","))this.nextToken(),r.push(null);else{if(this.match("...")){r.push(this.parseBindingRestElement(e,t));break}r.push(this.parsePatternWithDefault(e,t)),this.match("]")||this.expect(",")}return this.expect("]"),this.finalize(n,new o.ArrayPattern(r))},e.prototype.parsePropertyPattern=function(e,t){var n,r,i=this.createNode(),s=!1,a=!1;if(3===this.lookahead.type){var u=this.lookahead;n=this.parseVariableIdentifier();var l=this.finalize(i,new o.Identifier(u.value));if(this.match("=")){e.push(u),a=!0,this.nextToken();var c=this.parseAssignmentExpression();r=this.finalize(this.startNode(u),new o.AssignmentPattern(l,c))}else this.match(":")?(this.expect(":"),r=this.parsePatternWithDefault(e,t)):(e.push(u),a=!0,r=l)}else s=this.match("["),n=this.parseObjectPropertyKey(),this.expect(":"),r=this.parsePatternWithDefault(e,t);return this.finalize(i,new o.Property("init",n,s,r,!1,a))},e.prototype.parseObjectPattern=function(e,t){var n=this.createNode(),r=[];for(this.expect("{");!this.match("}");)r.push(this.parsePropertyPattern(e,t)),this.match("}")||this.expect(",");return this.expect("}"),this.finalize(n,new o.ObjectPattern(r))},e.prototype.parsePattern=function(e,t){var n;return this.match("[")?n=this.parseArrayPattern(e,t):this.match("{")?n=this.parseObjectPattern(e,t):(!this.matchKeyword("let")||"const"!==t&&"let"!==t||this.tolerateUnexpectedToken(this.lookahead,s.Messages.LetInLexicalBinding),e.push(this.lookahead),n=this.parseVariableIdentifier(t)),n},e.prototype.parsePatternWithDefault=function(e,t){var n=this.lookahead,r=this.parsePattern(e,t);if(this.match("=")){this.nextToken();var i=this.context.allowYield;this.context.allowYield=!0;var s=this.isolateCoverGrammar(this.parseAssignmentExpression);this.context.allowYield=i,r=this.finalize(this.startNode(n),new o.AssignmentPattern(r,s))}return r},e.prototype.parseVariableIdentifier=function(e){var t=this.createNode(),n=this.nextToken();return 4===n.type&&"yield"===n.value?this.context.strict?this.tolerateUnexpectedToken(n,s.Messages.StrictReservedWord):this.context.allowYield||this.throwUnexpectedToken(n):3!==n.type?this.context.strict&&4===n.type&&this.scanner.isStrictModeReservedWord(n.value)?this.tolerateUnexpectedToken(n,s.Messages.StrictReservedWord):(this.context.strict||"let"!==n.value||"var"!==e)&&this.throwUnexpectedToken(n):(this.context.isModule||this.context.await)&&3===n.type&&"await"===n.value&&this.tolerateUnexpectedToken(n),this.finalize(t,new o.Identifier(n.value))},e.prototype.parseVariableDeclaration=function(e){var t=this.createNode(),n=this.parsePattern([],"var");this.context.strict&&n.type===u.Syntax.Identifier&&this.scanner.isRestrictedWord(n.name)&&this.tolerateError(s.Messages.StrictVarName);var r=null;return this.match("=")?(this.nextToken(),r=this.isolateCoverGrammar(this.parseAssignmentExpression)):n.type===u.Syntax.Identifier||e.inFor||this.expect("="),this.finalize(t,new o.VariableDeclarator(n,r))},e.prototype.parseVariableDeclarationList=function(e){var t={inFor:e.inFor},n=[];for(n.push(this.parseVariableDeclaration(t));this.match(",");)this.nextToken(),n.push(this.parseVariableDeclaration(t));return n},e.prototype.parseVariableStatement=function(){var e=this.createNode();this.expectKeyword("var");var t=this.parseVariableDeclarationList({inFor:!1});return this.consumeSemicolon(),this.finalize(e,new o.VariableDeclaration(t,"var"))},e.prototype.parseEmptyStatement=function(){var e=this.createNode();return this.expect(";"),this.finalize(e,new o.EmptyStatement)},e.prototype.parseExpressionStatement=function(){var e=this.createNode(),t=this.parseExpression();return this.consumeSemicolon(),this.finalize(e,new o.ExpressionStatement(t))},e.prototype.parseIfClause=function(){return this.context.strict&&this.matchKeyword("function")&&this.tolerateError(s.Messages.StrictFunction),this.parseStatement()},e.prototype.parseIfStatement=function(){var e,t=this.createNode(),n=null;this.expectKeyword("if"),this.expect("(");var r=this.parseExpression();return!this.match(")")&&this.config.tolerant?(this.tolerateUnexpectedToken(this.nextToken()),e=this.finalize(this.createNode(),new o.EmptyStatement)):(this.expect(")"),e=this.parseIfClause(),this.matchKeyword("else")&&(this.nextToken(),n=this.parseIfClause())),this.finalize(t,new o.IfStatement(r,e,n))},e.prototype.parseDoWhileStatement=function(){var e=this.createNode();this.expectKeyword("do");var t=this.context.inIteration;this.context.inIteration=!0;var n=this.parseStatement();this.context.inIteration=t,this.expectKeyword("while"),this.expect("(");var r=this.parseExpression();return!this.match(")")&&this.config.tolerant?this.tolerateUnexpectedToken(this.nextToken()):(this.expect(")"),this.match(";")&&this.nextToken()),this.finalize(e,new o.DoWhileStatement(n,r))},e.prototype.parseWhileStatement=function(){var e,t=this.createNode();this.expectKeyword("while"),this.expect("(");var n=this.parseExpression();if(!this.match(")")&&this.config.tolerant)this.tolerateUnexpectedToken(this.nextToken()),e=this.finalize(this.createNode(),new o.EmptyStatement);else{this.expect(")");var r=this.context.inIteration;this.context.inIteration=!0,e=this.parseStatement(),this.context.inIteration=r}return this.finalize(t,new o.WhileStatement(n,e))},e.prototype.parseForStatement=function(){var e,t,n,r=null,i=null,a=null,l=!0,c=this.createNode();if(this.expectKeyword("for"),this.expect("("),this.match(";"))this.nextToken();else if(this.matchKeyword("var")){r=this.createNode(),this.nextToken();var h=this.context.allowIn;this.context.allowIn=!1;var d=this.parseVariableDeclarationList({inFor:!0});if(this.context.allowIn=h,1===d.length&&this.matchKeyword("in")){var p=d[0];p.init&&(p.id.type===u.Syntax.ArrayPattern||p.id.type===u.Syntax.ObjectPattern||this.context.strict)&&this.tolerateError(s.Messages.ForInOfLoopInitializer,"for-in"),r=this.finalize(r,new o.VariableDeclaration(d,"var")),this.nextToken(),e=r,t=this.parseExpression(),r=null}else 1===d.length&&null===d[0].init&&this.matchContextualKeyword("of")?(r=this.finalize(r,new o.VariableDeclaration(d,"var")),this.nextToken(),e=r,t=this.parseAssignmentExpression(),r=null,l=!1):(r=this.finalize(r,new o.VariableDeclaration(d,"var")),this.expect(";"))}else if(this.matchKeyword("const")||this.matchKeyword("let")){r=this.createNode();var f=this.nextToken().value;this.context.strict||"in"!==this.lookahead.value?(h=this.context.allowIn,this.context.allowIn=!1,d=this.parseBindingList(f,{inFor:!0}),this.context.allowIn=h,1===d.length&&null===d[0].init&&this.matchKeyword("in")?(r=this.finalize(r,new o.VariableDeclaration(d,f)),this.nextToken(),e=r,t=this.parseExpression(),r=null):1===d.length&&null===d[0].init&&this.matchContextualKeyword("of")?(r=this.finalize(r,new o.VariableDeclaration(d,f)),this.nextToken(),e=r,t=this.parseAssignmentExpression(),r=null,l=!1):(this.consumeSemicolon(),r=this.finalize(r,new o.VariableDeclaration(d,f)))):(r=this.finalize(r,new o.Identifier(f)),this.nextToken(),e=r,t=this.parseExpression(),r=null)}else{var m=this.lookahead;if(h=this.context.allowIn,this.context.allowIn=!1,r=this.inheritCoverGrammar(this.parseAssignmentExpression),this.context.allowIn=h,this.matchKeyword("in"))this.context.isAssignmentTarget&&r.type!==u.Syntax.AssignmentExpression||this.tolerateError(s.Messages.InvalidLHSInForIn),this.nextToken(),this.reinterpretExpressionAsPattern(r),e=r,t=this.parseExpression(),r=null;else if(this.matchContextualKeyword("of"))this.context.isAssignmentTarget&&r.type!==u.Syntax.AssignmentExpression||this.tolerateError(s.Messages.InvalidLHSInForLoop),this.nextToken(),this.reinterpretExpressionAsPattern(r),e=r,t=this.parseAssignmentExpression(),r=null,l=!1;else{if(this.match(",")){for(var w=[r];this.match(",");)this.nextToken(),w.push(this.isolateCoverGrammar(this.parseAssignmentExpression));r=this.finalize(this.startNode(m),new o.SequenceExpression(w))}this.expect(";")}}if(void 0===e&&(this.match(";")||(i=this.parseExpression()),this.expect(";"),this.match(")")||(a=this.parseExpression())),!this.match(")")&&this.config.tolerant)this.tolerateUnexpectedToken(this.nextToken()),n=this.finalize(this.createNode(),new o.EmptyStatement);else{this.expect(")");var g=this.context.inIteration;this.context.inIteration=!0,n=this.isolateCoverGrammar(this.parseStatement),this.context.inIteration=g}return void 0===e?this.finalize(c,new o.ForStatement(r,i,a,n)):l?this.finalize(c,new o.ForInStatement(e,t,n)):this.finalize(c,new o.ForOfStatement(e,t,n))},e.prototype.parseContinueStatement=function(){var e=this.createNode();this.expectKeyword("continue");var t=null;if(3===this.lookahead.type&&!this.hasLineTerminator){var n=this.parseVariableIdentifier();t=n;var r="$"+n.name;Object.prototype.hasOwnProperty.call(this.context.labelSet,r)||this.throwError(s.Messages.UnknownLabel,n.name)}return this.consumeSemicolon(),null!==t||this.context.inIteration||this.throwError(s.Messages.IllegalContinue),this.finalize(e,new o.ContinueStatement(t))},e.prototype.parseBreakStatement=function(){var e=this.createNode();this.expectKeyword("break");var t=null;if(3===this.lookahead.type&&!this.hasLineTerminator){var n=this.parseVariableIdentifier(),r="$"+n.name;Object.prototype.hasOwnProperty.call(this.context.labelSet,r)||this.throwError(s.Messages.UnknownLabel,n.name),t=n}return this.consumeSemicolon(),null!==t||this.context.inIteration||this.context.inSwitch||this.throwError(s.Messages.IllegalBreak),this.finalize(e,new o.BreakStatement(t))},e.prototype.parseReturnStatement=function(){this.context.inFunctionBody||this.tolerateError(s.Messages.IllegalReturn);var e=this.createNode();this.expectKeyword("return");var t=(this.match(";")||this.match("}")||this.hasLineTerminator||2===this.lookahead.type)&&8!==this.lookahead.type&&10!==this.lookahead.type?null:this.parseExpression();return this.consumeSemicolon(),this.finalize(e,new o.ReturnStatement(t))},e.prototype.parseWithStatement=function(){this.context.strict&&this.tolerateError(s.Messages.StrictModeWith);var e,t=this.createNode();this.expectKeyword("with"),this.expect("(");var n=this.parseExpression();return!this.match(")")&&this.config.tolerant?(this.tolerateUnexpectedToken(this.nextToken()),e=this.finalize(this.createNode(),new o.EmptyStatement)):(this.expect(")"),e=this.parseStatement()),this.finalize(t,new o.WithStatement(n,e))},e.prototype.parseSwitchCase=function(){var e,t=this.createNode();this.matchKeyword("default")?(this.nextToken(),e=null):(this.expectKeyword("case"),e=this.parseExpression()),this.expect(":");for(var n=[];!(this.match("}")||this.matchKeyword("default")||this.matchKeyword("case"));)n.push(this.parseStatementListItem());return this.finalize(t,new o.SwitchCase(e,n))},e.prototype.parseSwitchStatement=function(){var e=this.createNode();this.expectKeyword("switch"),this.expect("(");var t=this.parseExpression();this.expect(")");var n=this.context.inSwitch;this.context.inSwitch=!0;var r=[],i=!1;for(this.expect("{");!this.match("}");){var a=this.parseSwitchCase();null===a.test&&(i&&this.throwError(s.Messages.MultipleDefaultsInSwitch),i=!0),r.push(a)}return this.expect("}"),this.context.inSwitch=n,this.finalize(e,new o.SwitchStatement(t,r))},e.prototype.parseLabelledStatement=function(){var e,t=this.createNode(),n=this.parseExpression();if(n.type===u.Syntax.Identifier&&this.match(":")){this.nextToken();var r=n,i="$"+r.name;Object.prototype.hasOwnProperty.call(this.context.labelSet,i)&&this.throwError(s.Messages.Redeclaration,"Label",r.name),this.context.labelSet[i]=!0;var a=void 0;if(this.matchKeyword("class"))this.tolerateUnexpectedToken(this.lookahead),a=this.parseClassDeclaration();else if(this.matchKeyword("function")){var l=this.lookahead,c=this.parseFunctionDeclaration();this.context.strict?this.tolerateUnexpectedToken(l,s.Messages.StrictFunction):c.generator&&this.tolerateUnexpectedToken(l,s.Messages.GeneratorInLegacyContext),a=c}else a=this.parseStatement();delete this.context.labelSet[i],e=new o.LabeledStatement(r,a)}else this.consumeSemicolon(),e=new o.ExpressionStatement(n);return this.finalize(t,e)},e.prototype.parseThrowStatement=function(){var e=this.createNode();this.expectKeyword("throw"),this.hasLineTerminator&&this.throwError(s.Messages.NewlineAfterThrow);var t=this.parseExpression();return this.consumeSemicolon(),this.finalize(e,new o.ThrowStatement(t))},e.prototype.parseCatchClause=function(){var e=this.createNode();this.expectKeyword("catch"),this.expect("("),this.match(")")&&this.throwUnexpectedToken(this.lookahead);for(var t=[],n=this.parsePattern(t),r={},i=0;i0&&this.tolerateError(s.Messages.BadGetterArity);var r=this.parsePropertyMethod(n);return this.context.allowYield=t,this.finalize(e,new o.FunctionExpression(null,n.params,r,!1))},e.prototype.parseSetterMethod=function(){var e=this.createNode(),t=this.context.allowYield;this.context.allowYield=!0;var n=this.parseFormalParameters();1!==n.params.length?this.tolerateError(s.Messages.BadSetterArity):n.params[0]instanceof o.RestElement&&this.tolerateError(s.Messages.BadSetterRestParameter);var r=this.parsePropertyMethod(n);return this.context.allowYield=t,this.finalize(e,new o.FunctionExpression(null,n.params,r,!1))},e.prototype.parseGeneratorMethod=function(){var e=this.createNode(),t=this.context.allowYield;this.context.allowYield=!0;var n=this.parseFormalParameters();this.context.allowYield=!1;var r=this.parsePropertyMethod(n);return this.context.allowYield=t,this.finalize(e,new o.FunctionExpression(null,n.params,r,!0))},e.prototype.isStartOfExpression=function(){var e=!0,t=this.lookahead.value;switch(this.lookahead.type){case 7:e="["===t||"("===t||"{"===t||"+"===t||"-"===t||"!"===t||"~"===t||"++"===t||"--"===t||"/"===t||"/="===t;break;case 4:e="class"===t||"delete"===t||"function"===t||"let"===t||"new"===t||"super"===t||"this"===t||"typeof"===t||"void"===t||"yield"===t}return e},e.prototype.parseYieldExpression=function(){var e=this.createNode();this.expectKeyword("yield");var t=null,n=!1;if(!this.hasLineTerminator){var r=this.context.allowYield;this.context.allowYield=!1,(n=this.match("*"))?(this.nextToken(),t=this.parseAssignmentExpression()):this.isStartOfExpression()&&(t=this.parseAssignmentExpression()),this.context.allowYield=r}return this.finalize(e,new o.YieldExpression(t,n))},e.prototype.parseClassElement=function(e){var t=this.lookahead,n=this.createNode(),r="",i=null,a=null,u=!1,l=!1,c=!1,h=!1;if(this.match("*"))this.nextToken();else if(u=this.match("["),"static"===(i=this.parseObjectPropertyKey()).name&&(this.qualifiedPropertyName(this.lookahead)||this.match("*"))&&(t=this.lookahead,c=!0,u=this.match("["),this.match("*")?this.nextToken():i=this.parseObjectPropertyKey()),3===t.type&&!this.hasLineTerminator&&"async"===t.value){var d=this.lookahead.value;":"!==d&&"("!==d&&"*"!==d&&(h=!0,t=this.lookahead,i=this.parseObjectPropertyKey(),3===t.type&&"constructor"===t.value&&this.tolerateUnexpectedToken(t,s.Messages.ConstructorIsAsync))}var p=this.qualifiedPropertyName(this.lookahead);return 3===t.type?"get"===t.value&&p?(r="get",u=this.match("["),i=this.parseObjectPropertyKey(),this.context.allowYield=!1,a=this.parseGetterMethod()):"set"===t.value&&p&&(r="set",u=this.match("["),i=this.parseObjectPropertyKey(),a=this.parseSetterMethod()):7===t.type&&"*"===t.value&&p&&(r="init",u=this.match("["),i=this.parseObjectPropertyKey(),a=this.parseGeneratorMethod(),l=!0),!r&&i&&this.match("(")&&(r="init",a=h?this.parsePropertyMethodAsyncFunction():this.parsePropertyMethodFunction(),l=!0),r||this.throwUnexpectedToken(this.lookahead),"init"===r&&(r="method"),u||(c&&this.isPropertyKey(i,"prototype")&&this.throwUnexpectedToken(t,s.Messages.StaticPrototype),!c&&this.isPropertyKey(i,"constructor")&&(("method"!==r||!l||a&&a.generator)&&this.throwUnexpectedToken(t,s.Messages.ConstructorSpecialMethod),e.value?this.throwUnexpectedToken(t,s.Messages.DuplicateConstructor):e.value=!0,r="constructor")),this.finalize(n,new o.MethodDefinition(i,u,a,r,c))},e.prototype.parseClassElementList=function(){var e=[],t={value:!1};for(this.expect("{");!this.match("}");)this.match(";")?this.nextToken():e.push(this.parseClassElement(t));return this.expect("}"),e},e.prototype.parseClassBody=function(){var e=this.createNode(),t=this.parseClassElementList();return this.finalize(e,new o.ClassBody(t))},e.prototype.parseClassDeclaration=function(e){var t=this.createNode(),n=this.context.strict;this.context.strict=!0,this.expectKeyword("class");var r=e&&3!==this.lookahead.type?null:this.parseVariableIdentifier(),i=null;this.matchKeyword("extends")&&(this.nextToken(),i=this.isolateCoverGrammar(this.parseLeftHandSideExpressionAllowCall));var s=this.parseClassBody();return this.context.strict=n,this.finalize(t,new o.ClassDeclaration(r,i,s))},e.prototype.parseClassExpression=function(){var e=this.createNode(),t=this.context.strict;this.context.strict=!0,this.expectKeyword("class");var n=3===this.lookahead.type?this.parseVariableIdentifier():null,r=null;this.matchKeyword("extends")&&(this.nextToken(),r=this.isolateCoverGrammar(this.parseLeftHandSideExpressionAllowCall));var i=this.parseClassBody();return this.context.strict=t,this.finalize(e,new o.ClassExpression(n,r,i))},e.prototype.parseModule=function(){this.context.strict=!0,this.context.isModule=!0,this.scanner.isModule=!0;for(var e=this.createNode(),t=this.parseDirectivePrologues();2!==this.lookahead.type;)t.push(this.parseStatementListItem());return this.finalize(e,new o.Module(t))},e.prototype.parseScript=function(){for(var e=this.createNode(),t=this.parseDirectivePrologues();2!==this.lookahead.type;)t.push(this.parseStatementListItem());return this.finalize(e,new o.Script(t))},e.prototype.parseModuleSpecifier=function(){var e=this.createNode();8!==this.lookahead.type&&this.throwError(s.Messages.InvalidModuleSpecifier);var t=this.nextToken(),n=this.getTokenRaw(t);return this.finalize(e,new o.Literal(t.value,n))},e.prototype.parseImportSpecifier=function(){var e,t,n=this.createNode();return 3===this.lookahead.type?(t=e=this.parseVariableIdentifier(),this.matchContextualKeyword("as")&&(this.nextToken(),t=this.parseVariableIdentifier())):(t=e=this.parseIdentifierName(),this.matchContextualKeyword("as")?(this.nextToken(),t=this.parseVariableIdentifier()):this.throwUnexpectedToken(this.nextToken())),this.finalize(n,new o.ImportSpecifier(t,e))},e.prototype.parseNamedImports=function(){this.expect("{");for(var e=[];!this.match("}");)e.push(this.parseImportSpecifier()),this.match("}")||this.expect(",");return this.expect("}"),e},e.prototype.parseImportDefaultSpecifier=function(){var e=this.createNode(),t=this.parseIdentifierName();return this.finalize(e,new o.ImportDefaultSpecifier(t))},e.prototype.parseImportNamespaceSpecifier=function(){var e=this.createNode();this.expect("*"),this.matchContextualKeyword("as")||this.throwError(s.Messages.NoAsAfterImportNamespace),this.nextToken();var t=this.parseIdentifierName();return this.finalize(e,new o.ImportNamespaceSpecifier(t))},e.prototype.parseImportDeclaration=function(){this.context.inFunctionBody&&this.throwError(s.Messages.IllegalImportDeclaration);var e,t=this.createNode();this.expectKeyword("import");var n=[];if(8===this.lookahead.type)e=this.parseModuleSpecifier();else{if(this.match("{")?n=n.concat(this.parseNamedImports()):this.match("*")?n.push(this.parseImportNamespaceSpecifier()):this.isIdentifierName(this.lookahead)&&!this.matchKeyword("default")?(n.push(this.parseImportDefaultSpecifier()),this.match(",")&&(this.nextToken(),this.match("*")?n.push(this.parseImportNamespaceSpecifier()):this.match("{")?n=n.concat(this.parseNamedImports()):this.throwUnexpectedToken(this.lookahead))):this.throwUnexpectedToken(this.nextToken()),!this.matchContextualKeyword("from")){var r=this.lookahead.value?s.Messages.UnexpectedToken:s.Messages.MissingFromClause;this.throwError(r,this.lookahead.value)}this.nextToken(),e=this.parseModuleSpecifier()}return this.consumeSemicolon(),this.finalize(t,new o.ImportDeclaration(n,e))},e.prototype.parseExportSpecifier=function(){var e=this.createNode(),t=this.parseIdentifierName(),n=t;return this.matchContextualKeyword("as")&&(this.nextToken(),n=this.parseIdentifierName()),this.finalize(e,new o.ExportSpecifier(t,n))},e.prototype.parseExportDeclaration=function(){this.context.inFunctionBody&&this.throwError(s.Messages.IllegalExportDeclaration);var e,t=this.createNode();if(this.expectKeyword("export"),this.matchKeyword("default"))if(this.nextToken(),this.matchKeyword("function")){var n=this.parseFunctionDeclaration(!0);e=this.finalize(t,new o.ExportDefaultDeclaration(n))}else this.matchKeyword("class")?(n=this.parseClassDeclaration(!0),e=this.finalize(t,new o.ExportDefaultDeclaration(n))):this.matchContextualKeyword("async")?(n=this.matchAsyncFunction()?this.parseFunctionDeclaration(!0):this.parseAssignmentExpression(),e=this.finalize(t,new o.ExportDefaultDeclaration(n))):(this.matchContextualKeyword("from")&&this.throwError(s.Messages.UnexpectedToken,this.lookahead.value),n=this.match("{")?this.parseObjectInitializer():this.match("[")?this.parseArrayInitializer():this.parseAssignmentExpression(),this.consumeSemicolon(),e=this.finalize(t,new o.ExportDefaultDeclaration(n)));else if(this.match("*")){if(this.nextToken(),!this.matchContextualKeyword("from")){var r=this.lookahead.value?s.Messages.UnexpectedToken:s.Messages.MissingFromClause;this.throwError(r,this.lookahead.value)}this.nextToken();var i=this.parseModuleSpecifier();this.consumeSemicolon(),e=this.finalize(t,new o.ExportAllDeclaration(i))}else if(4===this.lookahead.type){switch(n=void 0,this.lookahead.value){case"let":case"const":n=this.parseLexicalDeclaration({inFor:!1});break;case"var":case"class":case"function":n=this.parseStatementListItem();break;default:this.throwUnexpectedToken(this.lookahead)}e=this.finalize(t,new o.ExportNamedDeclaration(n,[],null))}else if(this.matchAsyncFunction())n=this.parseFunctionDeclaration(),e=this.finalize(t,new o.ExportNamedDeclaration(n,[],null));else{var a=[],u=null,l=!1;for(this.expect("{");!this.match("}");)l=l||this.matchKeyword("default"),a.push(this.parseExportSpecifier()),this.match("}")||this.expect(",");this.expect("}"),this.matchContextualKeyword("from")?(this.nextToken(),u=this.parseModuleSpecifier(),this.consumeSemicolon()):l?(r=this.lookahead.value?s.Messages.UnexpectedToken:s.Messages.MissingFromClause,this.throwError(r,this.lookahead.value)):this.consumeSemicolon(),e=this.finalize(t,new o.ExportNamedDeclaration(null,a,u))}return e},e}();t.Parser=c},function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.assert=function(e,t){if(!e)throw new Error("ASSERT: "+t)}},function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=function(){function e(){this.errors=[],this.tolerant=!1}return e.prototype.recordError=function(e){this.errors.push(e)},e.prototype.tolerate=function(e){if(!this.tolerant)throw e;this.recordError(e)},e.prototype.constructError=function(e,t){var n=new Error(e);try{throw n}catch(e){Object.create&&Object.defineProperty&&(n=Object.create(e),Object.defineProperty(n,"column",{value:t}))}return n},e.prototype.createError=function(e,t,n,r){var i="Line "+t+": "+r,s=this.constructError(i,n);return s.index=e,s.lineNumber=t,s.description=r,s},e.prototype.throwError=function(e,t,n,r){throw this.createError(e,t,n,r)},e.prototype.tolerateError=function(e,t,n,r){var i=this.createError(e,t,n,r);if(!this.tolerant)throw i;this.recordError(i)},e}();t.ErrorHandler=n},function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Messages={BadGetterArity:"Getter must not have any formal parameters",BadSetterArity:"Setter must have exactly one formal parameter",BadSetterRestParameter:"Setter function argument must not be a rest parameter",ConstructorIsAsync:"Class constructor may not be an async method",ConstructorSpecialMethod:"Class constructor may not be an accessor",DeclarationMissingInitializer:"Missing initializer in %0 declaration",DefaultRestParameter:"Unexpected token =",DuplicateBinding:"Duplicate binding %0",DuplicateConstructor:"A class may only have one constructor",DuplicateProtoProperty:"Duplicate __proto__ fields are not allowed in object literals",ForInOfLoopInitializer:"%0 loop variable declaration may not have an initializer",GeneratorInLegacyContext:"Generator declarations are not allowed in legacy contexts",IllegalBreak:"Illegal break statement",IllegalContinue:"Illegal continue statement",IllegalExportDeclaration:"Unexpected token",IllegalImportDeclaration:"Unexpected token",IllegalLanguageModeDirective:"Illegal 'use strict' directive in function with non-simple parameter list",IllegalReturn:"Illegal return statement",InvalidEscapedReservedWord:"Keyword must not contain escaped characters",InvalidHexEscapeSequence:"Invalid hexadecimal escape sequence",InvalidLHSInAssignment:"Invalid left-hand side in assignment",InvalidLHSInForIn:"Invalid left-hand side in for-in",InvalidLHSInForLoop:"Invalid left-hand side in for-loop",InvalidModuleSpecifier:"Unexpected token",InvalidRegExp:"Invalid regular expression",LetInLexicalBinding:"let is disallowed as a lexically bound name",MissingFromClause:"Unexpected token",MultipleDefaultsInSwitch:"More than one default clause in switch statement",NewlineAfterThrow:"Illegal newline after throw",NoAsAfterImportNamespace:"Unexpected token",NoCatchOrFinally:"Missing catch or finally after try",ParameterAfterRestParameter:"Rest parameter must be last formal parameter",Redeclaration:"%0 '%1' has already been declared",StaticPrototype:"Classes may not have static property named prototype",StrictCatchVariable:"Catch variable may not be eval or arguments in strict mode",StrictDelete:"Delete of an unqualified identifier in strict mode.",StrictFunction:"In strict mode code, functions can only be declared at top level or inside a block",StrictFunctionName:"Function name may not be eval or arguments in strict mode",StrictLHSAssignment:"Assignment to eval or arguments is not allowed in strict mode",StrictLHSPostfix:"Postfix increment/decrement may not have eval or arguments operand in strict mode",StrictLHSPrefix:"Prefix increment/decrement may not have eval or arguments operand in strict mode",StrictModeWith:"Strict mode code may not include a with statement",StrictOctalLiteral:"Octal literals are not allowed in strict mode.",StrictParamDupe:"Strict mode function may not have duplicate parameter names",StrictParamName:"Parameter name eval or arguments is not allowed in strict mode",StrictReservedWord:"Use of future reserved word in strict mode",StrictVarName:"Variable name may not be eval or arguments in strict mode",TemplateOctalLiteral:"Octal literals are not allowed in template strings.",UnexpectedEOS:"Unexpected end of input",UnexpectedIdentifier:"Unexpected identifier",UnexpectedNumber:"Unexpected number",UnexpectedReserved:"Unexpected reserved word",UnexpectedString:"Unexpected string",UnexpectedTemplate:"Unexpected quasi %0",UnexpectedToken:"Unexpected token %0",UnexpectedTokenIllegal:"Unexpected token ILLEGAL",UnknownLabel:"Undefined label '%0'",UnterminatedRegExp:"Invalid regular expression: missing /"}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(9),i=n(4),s=n(11);function o(e){return"0123456789abcdef".indexOf(e.toLowerCase())}function a(e){return"01234567".indexOf(e)}var u=function(){function e(e,t){this.source=e,this.errorHandler=t,this.trackComment=!1,this.isModule=!1,this.length=e.length,this.index=0,this.lineNumber=e.length>0?1:0,this.lineStart=0,this.curlyStack=[]}return e.prototype.saveState=function(){return{index:this.index,lineNumber:this.lineNumber,lineStart:this.lineStart}},e.prototype.restoreState=function(e){this.index=e.index,this.lineNumber=e.lineNumber,this.lineStart=e.lineStart},e.prototype.eof=function(){return this.index>=this.length},e.prototype.throwUnexpectedToken=function(e){return void 0===e&&(e=s.Messages.UnexpectedTokenIllegal),this.errorHandler.throwError(this.index,this.lineNumber,this.index-this.lineStart+1,e)},e.prototype.tolerateUnexpectedToken=function(e){void 0===e&&(e=s.Messages.UnexpectedTokenIllegal),this.errorHandler.tolerateError(this.index,this.lineNumber,this.index-this.lineStart+1,e)},e.prototype.skipSingleLineComment=function(e){var t,n,r=[];for(this.trackComment&&(r=[],t=this.index-e,n={start:{line:this.lineNumber,column:this.index-this.lineStart-e},end:{}});!this.eof();){var s=this.source.charCodeAt(this.index);if(++this.index,i.Character.isLineTerminator(s)){if(this.trackComment){n.end={line:this.lineNumber,column:this.index-this.lineStart-1};var o={multiLine:!1,slice:[t+e,this.index-1],range:[t,this.index-1],loc:n};r.push(o)}return 13===s&&10===this.source.charCodeAt(this.index)&&++this.index,++this.lineNumber,this.lineStart=this.index,r}}return this.trackComment&&(n.end={line:this.lineNumber,column:this.index-this.lineStart},o={multiLine:!1,slice:[t+e,this.index],range:[t,this.index],loc:n},r.push(o)),r},e.prototype.skipMultiLineComment=function(){var e,t,n=[];for(this.trackComment&&(n=[],e=this.index-2,t={start:{line:this.lineNumber,column:this.index-this.lineStart-2},end:{}});!this.eof();){var r=this.source.charCodeAt(this.index);if(i.Character.isLineTerminator(r))13===r&&10===this.source.charCodeAt(this.index+1)&&++this.index,++this.lineNumber,++this.index,this.lineStart=this.index;else if(42===r){if(47===this.source.charCodeAt(this.index+1)){if(this.index+=2,this.trackComment){t.end={line:this.lineNumber,column:this.index-this.lineStart};var s={multiLine:!0,slice:[e+2,this.index-2],range:[e,this.index],loc:t};n.push(s)}return n}++this.index}else++this.index}return this.trackComment&&(t.end={line:this.lineNumber,column:this.index-this.lineStart},s={multiLine:!0,slice:[e+2,this.index],range:[e,this.index],loc:t},n.push(s)),this.tolerateUnexpectedToken(),n},e.prototype.scanComments=function(){var e;this.trackComment&&(e=[]);for(var t=0===this.index;!this.eof();){var n=this.source.charCodeAt(this.index);if(i.Character.isWhiteSpace(n))++this.index;else if(i.Character.isLineTerminator(n))++this.index,13===n&&10===this.source.charCodeAt(this.index)&&++this.index,++this.lineNumber,this.lineStart=this.index,t=!0;else if(47===n)if(47===(n=this.source.charCodeAt(this.index+1))){this.index+=2;var r=this.skipSingleLineComment(2);this.trackComment&&(e=e.concat(r)),t=!0}else{if(42!==n)break;this.index+=2,r=this.skipMultiLineComment(),this.trackComment&&(e=e.concat(r))}else if(t&&45===n){if(45!==this.source.charCodeAt(this.index+1)||62!==this.source.charCodeAt(this.index+2))break;this.index+=3,r=this.skipSingleLineComment(3),this.trackComment&&(e=e.concat(r))}else{if(60!==n||this.isModule)break;if("!--"!==this.source.slice(this.index+1,this.index+4))break;this.index+=4,r=this.skipSingleLineComment(4),this.trackComment&&(e=e.concat(r))}}return e},e.prototype.isFutureReservedWord=function(e){switch(e){case"enum":case"export":case"import":case"super":return!0;default:return!1}},e.prototype.isStrictModeReservedWord=function(e){switch(e){case"implements":case"interface":case"package":case"private":case"protected":case"public":case"static":case"yield":case"let":return!0;default:return!1}},e.prototype.isRestrictedWord=function(e){return"eval"===e||"arguments"===e},e.prototype.isKeyword=function(e){switch(e.length){case 2:return"if"===e||"in"===e||"do"===e;case 3:return"var"===e||"for"===e||"new"===e||"try"===e||"let"===e;case 4:return"this"===e||"else"===e||"case"===e||"void"===e||"with"===e||"enum"===e;case 5:return"while"===e||"break"===e||"catch"===e||"throw"===e||"const"===e||"yield"===e||"class"===e||"super"===e;case 6:return"return"===e||"typeof"===e||"delete"===e||"switch"===e||"export"===e||"import"===e;case 7:return"default"===e||"finally"===e||"extends"===e;case 8:return"function"===e||"continue"===e||"debugger"===e;case 10:return"instanceof"===e;default:return!1}},e.prototype.codePointAt=function(e){var t=this.source.charCodeAt(e);if(t>=55296&&t<=56319){var n=this.source.charCodeAt(e+1);n>=56320&&n<=57343&&(t=1024*(t-55296)+n-56320+65536)}return t},e.prototype.scanHexEscape=function(e){for(var t="u"===e?4:2,n=0,r=0;r1114111||"}"!==e)&&this.throwUnexpectedToken(),i.Character.fromCodePoint(t)},e.prototype.getIdentifier=function(){for(var e=this.index++;!this.eof();){var t=this.source.charCodeAt(this.index);if(92===t)return this.index=e,this.getComplexIdentifier();if(t>=55296&&t<57343)return this.index=e,this.getComplexIdentifier();if(!i.Character.isIdentifierPart(t))break;++this.index}return this.source.slice(e,this.index)},e.prototype.getComplexIdentifier=function(){var e,t=this.codePointAt(this.index),n=i.Character.fromCodePoint(t);for(this.index+=n.length,92===t&&(117!==this.source.charCodeAt(this.index)&&this.throwUnexpectedToken(),++this.index,"{"===this.source[this.index]?(++this.index,e=this.scanUnicodeCodePointEscape()):null!==(e=this.scanHexEscape("u"))&&"\\"!==e&&i.Character.isIdentifierStart(e.charCodeAt(0))||this.throwUnexpectedToken(),n=e);!this.eof()&&(t=this.codePointAt(this.index),i.Character.isIdentifierPart(t));)n+=e=i.Character.fromCodePoint(t),this.index+=e.length,92===t&&(n=n.substr(0,n.length-1),117!==this.source.charCodeAt(this.index)&&this.throwUnexpectedToken(),++this.index,"{"===this.source[this.index]?(++this.index,e=this.scanUnicodeCodePointEscape()):null!==(e=this.scanHexEscape("u"))&&"\\"!==e&&i.Character.isIdentifierPart(e.charCodeAt(0))||this.throwUnexpectedToken(),n+=e);return n},e.prototype.octalToDecimal=function(e){var t="0"!==e,n=a(e);return!this.eof()&&i.Character.isOctalDigit(this.source.charCodeAt(this.index))&&(t=!0,n=8*n+a(this.source[this.index++]),"0123".indexOf(e)>=0&&!this.eof()&&i.Character.isOctalDigit(this.source.charCodeAt(this.index))&&(n=8*n+a(this.source[this.index++]))),{code:n,octal:t}},e.prototype.scanIdentifier=function(){var e,t=this.index,n=92===this.source.charCodeAt(t)?this.getComplexIdentifier():this.getIdentifier();if(3!=(e=1===n.length?3:this.isKeyword(n)?4:"null"===n?5:"true"===n||"false"===n?1:3)&&t+n.length!==this.index){var r=this.index;this.index=t,this.tolerateUnexpectedToken(s.Messages.InvalidEscapedReservedWord),this.index=r}return{type:e,value:n,lineNumber:this.lineNumber,lineStart:this.lineStart,start:t,end:this.index}},e.prototype.scanPunctuator=function(){var e=this.index,t=this.source[this.index];switch(t){case"(":case"{":"{"===t&&this.curlyStack.push("{"),++this.index;break;case".":++this.index,"."===this.source[this.index]&&"."===this.source[this.index+1]&&(this.index+=2,t="...");break;case"}":++this.index,this.curlyStack.pop();break;case")":case";":case",":case"[":case"]":case":":case"?":case"~":++this.index;break;default:">>>="===(t=this.source.substr(this.index,4))?this.index+=4:"==="===(t=t.substr(0,3))||"!=="===t||">>>"===t||"<<="===t||">>="===t||"**="===t?this.index+=3:"&&"===(t=t.substr(0,2))||"||"===t||"=="===t||"!="===t||"+="===t||"-="===t||"*="===t||"/="===t||"++"===t||"--"===t||"<<"===t||">>"===t||"&="===t||"|="===t||"^="===t||"%="===t||"<="===t||">="===t||"=>"===t||"**"===t?this.index+=2:(t=this.source[this.index],"<>=!+-*%&|^/".indexOf(t)>=0&&++this.index)}return this.index===e&&this.throwUnexpectedToken(),{type:7,value:t,lineNumber:this.lineNumber,lineStart:this.lineStart,start:e,end:this.index}},e.prototype.scanHexLiteral=function(e){for(var t="";!this.eof()&&i.Character.isHexDigit(this.source.charCodeAt(this.index));)t+=this.source[this.index++];return 0===t.length&&this.throwUnexpectedToken(),i.Character.isIdentifierStart(this.source.charCodeAt(this.index))&&this.throwUnexpectedToken(),{type:6,value:parseInt("0x"+t,16),lineNumber:this.lineNumber,lineStart:this.lineStart,start:e,end:this.index}},e.prototype.scanBinaryLiteral=function(e){for(var t,n="";!this.eof()&&("0"===(t=this.source[this.index])||"1"===t);)n+=this.source[this.index++];return 0===n.length&&this.throwUnexpectedToken(),this.eof()||(t=this.source.charCodeAt(this.index),(i.Character.isIdentifierStart(t)||i.Character.isDecimalDigit(t))&&this.throwUnexpectedToken()),{type:6,value:parseInt(n,2),lineNumber:this.lineNumber,lineStart:this.lineStart,start:e,end:this.index}},e.prototype.scanOctalLiteral=function(e,t){var n="",r=!1;for(i.Character.isOctalDigit(e.charCodeAt(0))?(r=!0,n="0"+this.source[this.index++]):++this.index;!this.eof()&&i.Character.isOctalDigit(this.source.charCodeAt(this.index));)n+=this.source[this.index++];return r||0!==n.length||this.throwUnexpectedToken(),(i.Character.isIdentifierStart(this.source.charCodeAt(this.index))||i.Character.isDecimalDigit(this.source.charCodeAt(this.index)))&&this.throwUnexpectedToken(),{type:6,value:parseInt(n,8),octal:r,lineNumber:this.lineNumber,lineStart:this.lineStart,start:t,end:this.index}},e.prototype.isImplicitOctalLiteral=function(){for(var e=this.index+1;e=0&&(n=n.replace(/\\u\{([0-9a-fA-F]+)\}|\\u([a-fA-F0-9]{4})/g,(function(e,t,n){var i=parseInt(t||n,16);return i>1114111&&r.throwUnexpectedToken(s.Messages.InvalidRegExp),i<=65535?String.fromCharCode(i):"￿"})).replace(/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,"￿"));try{RegExp(n)}catch(e){this.throwUnexpectedToken(s.Messages.InvalidRegExp)}try{return new RegExp(e,t)}catch(e){return null}},e.prototype.scanRegExpBody=function(){var e=this.source[this.index];r.assert("/"===e,"Regular expression literal must start with a slash");for(var t=this.source[this.index++],n=!1,o=!1;!this.eof();)if(t+=e=this.source[this.index++],"\\"===e)e=this.source[this.index++],i.Character.isLineTerminator(e.charCodeAt(0))&&this.throwUnexpectedToken(s.Messages.UnterminatedRegExp),t+=e;else if(i.Character.isLineTerminator(e.charCodeAt(0)))this.throwUnexpectedToken(s.Messages.UnterminatedRegExp);else if(n)"]"===e&&(n=!1);else{if("/"===e){o=!0;break}"["===e&&(n=!0)}return o||this.throwUnexpectedToken(s.Messages.UnterminatedRegExp),t.substr(1,t.length-2)},e.prototype.scanRegExpFlags=function(){for(var e="";!this.eof();){var t=this.source[this.index];if(!i.Character.isIdentifierPart(t.charCodeAt(0)))break;if(++this.index,"\\"!==t||this.eof())e+=t;else if("u"===(t=this.source[this.index])){++this.index;var n=this.index,r=this.scanHexEscape("u");if(null!==r)for(e+=r;n=55296&&e<57343&&i.Character.isIdentifierStart(this.codePointAt(this.index))?this.scanIdentifier():this.scanPunctuator()},e}();t.Scanner=u},function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.TokenName={},t.TokenName[1]="Boolean",t.TokenName[2]="",t.TokenName[3]="Identifier",t.TokenName[4]="Keyword",t.TokenName[5]="Null",t.TokenName[6]="Numeric",t.TokenName[7]="Punctuator",t.TokenName[8]="String",t.TokenName[9]="RegularExpression",t.TokenName[10]="Template"},function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.XHTMLEntities={quot:'"',amp:"&",apos:"'",gt:">",nbsp:" ",iexcl:"¡",cent:"¢",pound:"£",curren:"¤",yen:"¥",brvbar:"¦",sect:"§",uml:"¨",copy:"©",ordf:"ª",laquo:"«",not:"¬",shy:"­",reg:"®",macr:"¯",deg:"°",plusmn:"±",sup2:"²",sup3:"³",acute:"´",micro:"µ",para:"¶",middot:"·",cedil:"¸",sup1:"¹",ordm:"º",raquo:"»",frac14:"¼",frac12:"½",frac34:"¾",iquest:"¿",Agrave:"À",Aacute:"Á",Acirc:"Â",Atilde:"Ã",Auml:"Ä",Aring:"Å",AElig:"Æ",Ccedil:"Ç",Egrave:"È",Eacute:"É",Ecirc:"Ê",Euml:"Ë",Igrave:"Ì",Iacute:"Í",Icirc:"Î",Iuml:"Ï",ETH:"Ð",Ntilde:"Ñ",Ograve:"Ò",Oacute:"Ó",Ocirc:"Ô",Otilde:"Õ",Ouml:"Ö",times:"×",Oslash:"Ø",Ugrave:"Ù",Uacute:"Ú",Ucirc:"Û",Uuml:"Ü",Yacute:"Ý",THORN:"Þ",szlig:"ß",agrave:"à",aacute:"á",acirc:"â",atilde:"ã",auml:"ä",aring:"å",aelig:"æ",ccedil:"ç",egrave:"è",eacute:"é",ecirc:"ê",euml:"ë",igrave:"ì",iacute:"í",icirc:"î",iuml:"ï",eth:"ð",ntilde:"ñ",ograve:"ò",oacute:"ó",ocirc:"ô",otilde:"õ",ouml:"ö",divide:"÷",oslash:"ø",ugrave:"ù",uacute:"ú",ucirc:"û",uuml:"ü",yacute:"ý",thorn:"þ",yuml:"ÿ",OElig:"Œ",oelig:"œ",Scaron:"Š",scaron:"š",Yuml:"Ÿ",fnof:"ƒ",circ:"ˆ",tilde:"˜",Alpha:"Α",Beta:"Β",Gamma:"Γ",Delta:"Δ",Epsilon:"Ε",Zeta:"Ζ",Eta:"Η",Theta:"Θ",Iota:"Ι",Kappa:"Κ",Lambda:"Λ",Mu:"Μ",Nu:"Ν",Xi:"Ξ",Omicron:"Ο",Pi:"Π",Rho:"Ρ",Sigma:"Σ",Tau:"Τ",Upsilon:"Υ",Phi:"Φ",Chi:"Χ",Psi:"Ψ",Omega:"Ω",alpha:"α",beta:"β",gamma:"γ",delta:"δ",epsilon:"ε",zeta:"ζ",eta:"η",theta:"θ",iota:"ι",kappa:"κ",lambda:"λ",mu:"μ",nu:"ν",xi:"ξ",omicron:"ο",pi:"π",rho:"ρ",sigmaf:"ς",sigma:"σ",tau:"τ",upsilon:"υ",phi:"φ",chi:"χ",psi:"ψ",omega:"ω",thetasym:"ϑ",upsih:"ϒ",piv:"ϖ",ensp:" ",emsp:" ",thinsp:" ",zwnj:"‌",zwj:"‍",lrm:"‎",rlm:"‏",ndash:"–",mdash:"—",lsquo:"‘",rsquo:"’",sbquo:"‚",ldquo:"“",rdquo:"”",bdquo:"„",dagger:"†",Dagger:"‡",bull:"•",hellip:"…",permil:"‰",prime:"′",Prime:"″",lsaquo:"‹",rsaquo:"›",oline:"‾",frasl:"⁄",euro:"€",image:"ℑ",weierp:"℘",real:"ℜ",trade:"™",alefsym:"ℵ",larr:"←",uarr:"↑",rarr:"→",darr:"↓",harr:"↔",crarr:"↵",lArr:"⇐",uArr:"⇑",rArr:"⇒",dArr:"⇓",hArr:"⇔",forall:"∀",part:"∂",exist:"∃",empty:"∅",nabla:"∇",isin:"∈",notin:"∉",ni:"∋",prod:"∏",sum:"∑",minus:"−",lowast:"∗",radic:"√",prop:"∝",infin:"∞",ang:"∠",and:"∧",or:"∨",cap:"∩",cup:"∪",int:"∫",there4:"∴",sim:"∼",cong:"≅",asymp:"≈",ne:"≠",equiv:"≡",le:"≤",ge:"≥",sub:"⊂",sup:"⊃",nsub:"⊄",sube:"⊆",supe:"⊇",oplus:"⊕",otimes:"⊗",perp:"⊥",sdot:"⋅",lceil:"⌈",rceil:"⌉",lfloor:"⌊",rfloor:"⌋",loz:"◊",spades:"♠",clubs:"♣",hearts:"♥",diams:"♦",lang:"⟨",rang:"⟩"}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(10),i=n(12),s=n(13),o=function(){function e(){this.values=[],this.curly=this.paren=-1}return e.prototype.beforeFunctionExpression=function(e){return["(","{","[","in","typeof","instanceof","new","return","case","delete","throw","void","=","+=","-=","*=","**=","/=","%=","<<=",">>=",">>>=","&=","|=","^=",",","+","-","*","**","/","%","++","--","<<",">>",">>>","&","|","^","!","~","&&","||","?",":","===","==",">=","<=","<",">","!=","!=="].indexOf(e)>=0},e.prototype.isRegexStart=function(){var e=this.values[this.values.length-1],t=null!==e;switch(e){case"this":case"]":t=!1;break;case")":var n=this.values[this.paren-1];t="if"===n||"while"===n||"for"===n||"with"===n;break;case"}":if(t=!1,"function"===this.values[this.curly-3])t=!!(r=this.values[this.curly-4])&&!this.beforeFunctionExpression(r);else if("function"===this.values[this.curly-4]){var r;t=!(r=this.values[this.curly-5])||!this.beforeFunctionExpression(r)}}return t},e.prototype.push=function(e){7===e.type||4===e.type?("{"===e.value?this.curly=this.values.length:"("===e.value&&(this.paren=this.values.length),this.values.push(e.value)):this.values.push(null)},e}(),a=function(){function e(e,t){this.errorHandler=new r.ErrorHandler,this.errorHandler.tolerant=!!t&&"boolean"==typeof t.tolerant&&t.tolerant,this.scanner=new i.Scanner(e,this.errorHandler),this.scanner.trackComment=!!t&&"boolean"==typeof t.comment&&t.comment,this.trackRange=!!t&&"boolean"==typeof t.range&&t.range,this.trackLoc=!!t&&"boolean"==typeof t.loc&&t.loc,this.buffer=[],this.reader=new o}return e.prototype.errors=function(){return this.errorHandler.errors},e.prototype.getNextToken=function(){if(0===this.buffer.length){var e=this.scanner.scanComments();if(this.scanner.trackComment)for(var t=0;tr&&" "!==e[O+1],O=s);else if(!U(o))return q;I=I&&M(o)}l=l||h&&s-O-1>r&&" "!==e[O+1]}return u||l?n>9&&j(e)?q:l?G:H:I&&!i(e)?W:z}function K(e,t,n,r){e.dump=function(){if(0===t.length)return"''";if(!e.noCompatMode&&-1!==I.indexOf(t))return"'"+t+"'";var s=e.indent*Math.max(1,n),o=-1===e.lineWidth?-1:Math.max(Math.min(e.lineWidth,40),e.lineWidth-s),a=r||e.flowLevel>-1&&n>=e.flowLevel;switch(V(t,a,e.indent,o,(function(t){return function(e,t){var n,r;for(n=0,r=e.implicitTypes.length;n"+X(t,e.indent)+Y(P(function(e,t){var n,r,i=/(\n+)([^\n]*)/g,s=(a=e.indexOf("\n"),a=-1!==a?a:e.length,i.lastIndex=a,J(e.slice(0,a),t)),o="\n"===e[0]||" "===e[0];var a;for(;r=i.exec(e);){var u=r[1],l=r[2];n=" "===l[0],s+=u+(o||n||""===l?"":"\n")+J(l,t),o=n}return s}(t,o),s));case q:return'"'+function(e){for(var t,n,r,i="",s=0;s=55296&&t<=56319&&(n=e.charCodeAt(s+1))>=56320&&n<=57343?(i+=N(1024*(t-55296)+n-56320+65536),s++):(r=O[t],i+=!r&&U(t)?e[s]:r||N(t));return i}(t)+'"';default:throw new i("impossible error: invalid scalar style")}}()}function X(e,t){var n=j(e)?String(t):"",r="\n"===e[e.length-1];return n+(r&&("\n"===e[e.length-2]||"\n"===e)?"+":r?"":"-")+"\n"}function Y(e){return"\n"===e[e.length-1]?e.slice(0,-1):e}function J(e,t){if(""===e||" "===e[0])return e;for(var n,r,i=/ [^ ]/g,s=0,o=0,a=0,u="";n=i.exec(e);)(a=n.index)-s>t&&(r=o>s?o:a,u+="\n"+e.slice(s,r),s=r+1),o=a;return u+="\n",e.length-s>t&&o>s?u+=e.slice(s,o)+"\n"+e.slice(o+1):u+=e.slice(s),u.slice(1)}function Z(e,t,n){var r,s,o,l,c,h;for(o=0,l=(s=n?e.explicitTypes:e.implicitTypes).length;o tag resolver accepts not "'+h+'" style');r=c.represent[h](t,h)}e.dump=r}return!0}return!1}function Q(e,t,n,r,s,o){e.tag=null,e.dump=n,Z(e,n,!1)||Z(e,n,!0);var u=a.call(e.dump);r&&(r=e.flowLevel<0||e.flowLevel>t);var l,h,d="[object Object]"===u||"[object Array]"===u;if(d&&(h=-1!==(l=e.duplicates.indexOf(n))),(null!==e.tag&&"?"!==e.tag||h||2!==e.indent&&t>0)&&(s=!1),h&&e.usedDuplicates[l])e.dump="*ref_"+l;else{if(d&&h&&!e.usedDuplicates[l]&&(e.usedDuplicates[l]=!0),"[object Object]"===u)r&&0!==Object.keys(e.dump).length?(!function(e,t,n,r){var s,o,a,u,l,h,d="",p=e.tag,f=Object.keys(n);if(!0===e.sortKeys)f.sort();else if("function"==typeof e.sortKeys)f.sort(e.sortKeys);else if(e.sortKeys)throw new i("sortKeys must be a boolean or a function");for(s=0,o=f.length;s1024)&&(e.dump&&c===e.dump.charCodeAt(0)?h+="?":h+="? "),h+=e.dump,l&&(h+=L(e,t)),Q(e,t+1,u,!0,l)&&(e.dump&&c===e.dump.charCodeAt(0)?h+=":":h+=": ",d+=h+=e.dump));e.tag=p,e.dump=d||"{}"}(e,t,e.dump,s),h&&(e.dump="&ref_"+l+e.dump)):(!function(e,t,n){var r,i,s,o,a,u="",l=e.tag,c=Object.keys(n);for(r=0,i=c.length;r1024&&(a+="? "),a+=e.dump+(e.condenseFlow?'"':"")+":"+(e.condenseFlow?"":" "),Q(e,t,o,!1,!1)&&(u+=a+=e.dump));e.tag=l,e.dump="{"+u+"}"}(e,t,e.dump),h&&(e.dump="&ref_"+l+" "+e.dump));else if("[object Array]"===u){var p=e.noArrayIndent&&t>0?t-1:t;r&&0!==e.dump.length?(!function(e,t,n,r){var i,s,o="",a=e.tag;for(i=0,s=n.length;i "+e.dump)}return!0}function $(e,t){var n,r,i=[],s=[];for(function e(t,n,r){var i,s,o;if(null!==t&&"object"==typeof t)if(-1!==(s=n.indexOf(t)))-1===r.indexOf(s)&&r.push(s);else if(n.push(t),Array.isArray(t))for(s=0,o=t.length;s{return o.computeSchemaDifferences(e,n).length>0?t+1:t},0)}(t,n))return Promise.reject(new Error(s.errors.json2csv.notSameSchema));return Promise.resolve(t)}(t);{let e=o.unique(o.flatten(t));return Promise.resolve(e)}}function c(t){return e.sortHeader?t.sort():t}function h(t){return e.trimHeaderFields&&(t.headerFields=t.headerFields.map(e=>e.split(".").map(e=>e.trim()).join("."))),t}function d(t){return e.prependHeader&&(t.headerFields=t.headerFields.map((function(e){return b(e)}))),t}function p(t){return t.header=t.headerFields.join(e.delimiter.field),t}function f(t){return e.keys&&!e.unwindArrays?Promise.resolve(e.keys).then(c):function(e){return Promise.resolve(i.deepKeysFromList(e,u))}(t).then(l).then(c)}function m(t){if(e.unwindArrays){const n=t.records.length;return t.headerFields.forEach(e=>{t.records=o.unwind(t.records,e)}),f(t.records).then(r=>(t.headerFields=r,n!==t.records.length?m(t):(e.keys&&(t.headerFields=e.keys),t)))}return t}function w(t){return t.records=t.records.map(n=>{return function(t){return t.join(e.delimiter.field)}(function(t,n){let i=[];return n.forEach(n=>{let s=r.evaluatePath(t,n);!o.isUndefined(e.emptyFieldValue)&&o.isEmptyField(s)?s=e.emptyFieldValue:e.expandArrayObjects&&Array.isArray(s)&&(s=function(t){let n=o.removeEmptyFields(t);if(!t.length||!n.length)return e.emptyFieldValue||"";if(1===n.length)return n[0];return t}(s)),i.push(s)}),i}(n,t.headerFields).map(t=>t=b(t=function(t){return Array.isArray(t)||o.isObject(t)&&!o.isDate(t)?JSON.stringify(t):o.isUndefined(t)?"undefined":o.isNull(t)?"null":e.useLocaleFormat?t.toLocaleString():t.toString()}(t=g(t)))))}).join(e.delimiter.eol),t}function g(t){return e.trimFieldValues?Array.isArray(t)?t.map(g):o.isString(t)?t.trim():t:t}function b(r){const i=e.delimiter.wrap;return r.includes(e.delimiter.wrap)&&(r=r.replace(t,i+i)),(r.includes(e.delimiter.field)||r.includes(e.delimiter.wrap)||r.match(n))&&(r=i+r+i),r}function _(t){let n=t.header,r=t.records,i=(e.excelBOM?s.values.excelBOM:"")+(e.prependHeader?n+e.delimiter.eol:"")+r;return t.callback(null,i)}return{convert:function(e,t){o.isObject(e)&&!e.length&&(e=[e]),f(e).then(n=>({headerFields:n,callback:t,records:e})).then(m).then(w).then(d).then(h).then(p).then(_).catch(t)},validationFn:o.isObject,validationMessages:s.errors.json2csv}}}},function(e,t,n){"use strict";const r=n(167);function i(e,t){return t=a(t),r.isObject(e)?function e(t,n,i){let a=Object.keys(n).map(a=>{let u=o(t,a);return function(e){return r.isObject(e)&&!r.isNull(e)&&!Array.isArray(e)&&Object.keys(e).length}(n[a])?e(u,n[a],i):i.expandArrayObjects&&function(e){return Array.isArray(e)}(n[a])?function(e,t,n){let i=s(e);return e.length?e.length&&0===r.flatten(i).length?[t]:(i=i.map(e=>(function(e){return Array.isArray(e)&&!e.length})(e)?[t]:e.map(e=>o(t,e))),r.unique(r.flatten(i))):n.ignoreEmptyArraysWhenExpanding?[]:[t]}(n[a],a,i):u});return r.flatten(a)}("",e,t):[]}function s(e,t){return t=a(t),e.map(e=>r.isObject(e)?i(e,t):[])}function o(e,t){return e?e+"."+t:t}function a(e){return{expandArrayObjects:!1,ignoreEmptyArraysWhenExpanding:!1,...e||{}}}e.exports={deepKeys:i,deepKeysFromList:s}},function(e,t,n){"use strict";e.exports={isString:function(e){return"string"==typeof e},isNull:function(e){return null===e},isError:function(e){return"[object Error]"===Object.prototype.toString.call(e)},isDate:function(e){return e instanceof Date},isFunction:function(e){return"function"==typeof e},isUndefined:function(e){return void 0===e},isObject:function(e){return"object"==typeof e},unique:function(e){return[...new Set(e)]},flatten:function(e){return[].concat(...e)}}},function(e,t,n){"use strict";let r=n(46),i=n(47),s=n(48);e.exports={Csv2Json:function(e){const t=new RegExp(e.delimiter.wrap+e.delimiter.wrap,"g"),n=new RegExp("^"+i.values.excelBOM);function o(t){return t=d(t),e.trimHeaderFields?t.split(".").map(e=>e.trim()).join("."):t}function a(t){let n={lines:t},r=n.lines[0];return n.headerFields=r.map((e,t)=>({value:o(e),index:t})),e.keys&&(n.headerFields=n.headerFields.filter(t=>e.keys.includes(t.value))),n}function u(t){return Promise.resolve(function(t){let n,r,i,o,a=[],u=[],l=t.length-1,c=e.delimiter.eol.length,h={insideWrapDelimiter:!1,parsingValue:!0,justParsedDoubleQuote:!1,startIndex:0},d=0;for(;d{s=s.map(n=>n=h(n=function(n){return n.replace(t,e.delimiter.wrap)}(n=d(n))));let o=function(e,t){return e.reduce((e,n)=>{let i=c(t,n);return r.setPath(e,n.value,i)},{})}(n.headerFields,s);return i.concat(o)},[]),n}return{convert:function(t,r){var i;(i=t,e.excelBOM?Promise.resolve(i.replace(n,"")):Promise.resolve(i)).then(u).then(a).then(l).then(p).then(e=>r(null,e.json)).catch(r)},validationFn:s.isString,validationMessages:i.errors.csv2json}}}},function(e,t,n){"use strict";(function(e){Object.defineProperty(t,"__esModule",{value:!0});const r=n(79);t.Bundle=class{constructor(e){this.sections={},this.responses={};const t=o(r.decode(e));if(6!==t.length)throw new Error("Wrong toplevel structure");const[n,c,h,d,p,f]=t;if("🌐📦"!==l(n))throw new Error("Wrong magic");this.version=l(c).replace(/\0+$/,""),this.primaryURL=a(h);const m=o(r.decode(u(d))),w=o(p);if(m.length!==2*w.length)throw new Error("Number of elements in section-lengths and in sections don't match");for(let e=0;e1?"s":""}class p extends r.Transform{constructor(e){const t=Object.assign({max_depth:10},e,{readableObjectMode:!1,writableObjectMode:!1}),n=t.max_depth;delete t.max_depth,super(t),this.depth=1,this.max_depth=n,this.all=new u,this.parser=new s(t),this.parser.on("value",this._on_value.bind(this)),this.parser.on("start",this._on_start.bind(this)),this.parser.on("start-string",this._on_start_string.bind(this)),this.parser.on("stop",this._on_stop.bind(this)),this.parser.on("more-bytes",this._on_more.bind(this)),this.parser.on("error",this._on_error.bind(this)),this.parser.on("data",this._on_data.bind(this)),this.parser.bs.on("read",this._on_read.bind(this))}_transform(e,t,n){this.parser.write(e,t,n)}_flush(e){return this.parser._flush(e)}static comment(e,t,n){if(null==e)throw new Error("input required");let r="string"==typeof e?"hex":void 0,i=10;switch(typeof t){case"function":n=t;break;case"string":r=t;break;case"number":i=t;break;case"object":const e=t.encoding,s=t.max_depth;r=null!=e?e:r,i=null!=s?s:i;break;case"undefined":break;default:throw new Error("Unknown option type")}const s=new u,o=new p({max_depth:i});let a=null;return"function"==typeof n?(o.on("end",()=>{n(null,s.toString("utf8"))}),o.on("error",n)):a=new Promise((e,t)=>(o.on("end",()=>{e(s.toString("utf8"))}),o.on("error",t))),o.pipe(s),o.end(e,r),a}_on_error(e){return this.push("ERROR: ")&&this.push(e.toString())&&this.push("\n")}_on_read(e){this.all.write(e);const t=e.toString("hex");this.push(new Array(this.depth+1).join(" ")),this.push(t);let n=2*(this.max_depth-this.depth);return(n-=t.length)<1&&(n=1),this.push(new Array(n+1).join(" ")),this.push("-- ")}_on_more(e,t,n,r){this.depth++;let i="";switch(e){case l.POS_INT:i="Positive number,";break;case l.NEG_INT:i="Negative number,";break;case l.ARRAY:i="Array, length";break;case l.MAP:i="Map, count";break;case l.BYTE_STRING:i="Bytes, length";break;case l.UTF8_STRING:i="String, length";break;case l.SIMPLE_FLOAT:i=1===t?"Simple value,":"Float,"}return this.push(i+" next "+t+" byte"+d(t)+"\n")}_on_start_string(e,t,n,r){this.depth++;let i="";switch(e){case l.BYTE_STRING:i="Bytes, length: "+t;break;case l.UTF8_STRING:i="String, length: "+t.toString()}return this.push(i+"\n")}_on_start(e,t,n,r){if(this.depth++,t!==h.BREAK)switch(n){case l.ARRAY:this.push(`[${r}], `);break;case l.MAP:r%2?this.push(`{Val:${Math.floor(r/2)}}, `):this.push(`{Key:${Math.floor(r/2)}}, `)}switch(e){case l.TAG:this.push(`Tag #${t}`);break;case l.ARRAY:t===h.STREAM?this.push("Array (streaming)"):this.push(`Array, ${t} item${d(t)}`);break;case l.MAP:t===h.STREAM?this.push("Map (streaming)"):this.push(`Map, ${t} pair${d(t)}`);break;case l.BYTE_STRING:this.push("Bytes (streaming)");break;case l.UTF8_STRING:this.push("String (streaming)")}return this.push("\n")}_on_stop(e){return this.depth--}_on_value(e,n,r,s){if(e!==h.BREAK)switch(n){case l.ARRAY:this.push(`[${r}], `);break;case l.MAP:r%2?this.push(`{Val:${Math.floor(r/2)}}, `):this.push(`{Key:${Math.floor(r/2)}}, `)}switch(e===h.BREAK?this.push("BREAK\n"):e===h.NULL?this.push("null\n"):e===h.UNDEFINED?this.push("undefined\n"):"string"==typeof e?(this.depth--,e.length>0&&(this.push(JSON.stringify(e)),this.push("\n"))):t.isBuffer(e)?(this.depth--,e.length>0&&(this.push(e.toString("hex")),this.push("\n"))):e instanceof a?(this.push(e.toString()),this.push("\n")):(this.push(i.inspect(e)),this.push("\n")),s){case c.ONE:case c.TWO:case c.FOUR:case c.EIGHT:this.depth--}}_on_data(){return this.push("0x"),this.push(this.all.read().toString("hex")),this.push("\n")}}e.exports=p}).call(this,n(3).Buffer)},function(e,t){e.exports=function(e){return e&&"object"==typeof e&&"function"==typeof e.copy&&"function"==typeof e.fill&&"function"==typeof e.readUInt8}},function(e,t,n){"use strict";const r=n(4),i=n(25),s=r.Transform;e.exports=class extends s{constructor(e){super(e),this._writableState.objectMode=!1,this._readableState.objectMode=!0,this.bs=new i,this.__restart()}_transform(e,t,n){for(this.bs.write(e);this.bs.length>=this.__needed;){let e;const t=null===this.__needed?void 0:this.bs.read(this.__needed);try{e=this.__parser.next(t)}catch(e){return n(e)}this.__needed&&(this.__fresh=!1),e.done?(this.push(e.value),this.__restart()):this.__needed=e.value||0}return n()}*_parse(){throw new Error("Must be implemented in subclass")}__restart(){this.__needed=null,this.__parser=this._parse(),this.__fresh=!0}_flush(e){e(this.__fresh?null:new Error("unexpected end of input"))}}},function(e,t,n){(function(e,r){var i;/*! https://mths.be/punycode v1.4.1 by @mathias */!function(s){t&&t.nodeType,e&&e.nodeType;var o="object"==typeof r&&r;o.global!==o&&o.window!==o&&o.self;var a,u=2147483647,l=36,c=1,h=26,d=38,p=700,f=72,m=128,w="-",g=/^xn--/,b=/[^\x20-\x7E]/,_=/[\x2E\u3002\uFF0E\uFF61]/g,y={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},v=l-c,x=Math.floor,E=String.fromCharCode;function A(e){throw new RangeError(y[e])}function S(e,t){for(var n=e.length,r=[];n--;)r[n]=t(e[n]);return r}function k(e,t){var n=e.split("@"),r="";return n.length>1&&(r=n[0]+"@",e=n[1]),r+S((e=e.replace(_,".")).split("."),t).join(".")}function T(e){for(var t,n,r=[],i=0,s=e.length;i=55296&&t<=56319&&i65535&&(t+=E((e-=65536)>>>10&1023|55296),e=56320|1023&e),t+=E(e)})).join("")}function D(e,t){return e+22+75*(e<26)-((0!=t)<<5)}function R(e,t,n){var r=0;for(e=n?x(e/p):e>>1,e+=x(e/t);e>v*h>>1;r+=l)e=x(e/v);return x(r+(v+1)*e/(e+d))}function O(e){var t,n,r,i,s,o,a,d,p,g,b,_=[],y=e.length,v=0,E=m,S=f;for((n=e.lastIndexOf(w))<0&&(n=0),r=0;r=128&&A("not-basic"),_.push(e.charCodeAt(r));for(i=n>0?n+1:0;i=y&&A("invalid-input"),((d=(b=e.charCodeAt(i++))-48<10?b-22:b-65<26?b-65:b-97<26?b-97:l)>=l||d>x((u-v)/o))&&A("overflow"),v+=d*o,!(d<(p=a<=S?c:a>=S+h?h:a-S));a+=l)o>x(u/(g=l-p))&&A("overflow"),o*=g;S=R(v-s,t=_.length+1,0==s),x(v/t)>u-E&&A("overflow"),E+=x(v/t),v%=t,_.splice(v++,0,E)}return C(_)}function I(e){var t,n,r,i,s,o,a,d,p,g,b,_,y,v,S,k=[];for(_=(e=T(e)).length,t=m,n=0,s=f,o=0;o<_;++o)(b=e[o])<128&&k.push(E(b));for(r=i=k.length,i&&k.push(w);r<_;){for(a=u,o=0;o<_;++o)(b=e[o])>=t&&bx((u-n)/(y=r+1))&&A("overflow"),n+=(a-t)*y,t=a,o=0;o<_;++o)if((b=e[o])u&&A("overflow"),b==t){for(d=n,p=l;!(d<(g=p<=s?c:p>=s+h?h:p-s));p+=l)S=d-g,v=l-g,k.push(E(D(g+S%v,0))),d=x(S/v);k.push(E(D(d,0))),s=R(n,y,r==i),n=0,++r}++n,++t}return k.join("")}a={version:"1.4.1",ucs2:{decode:T,encode:C},decode:O,encode:I,toASCII:function(e){return k(e,(function(e){return b.test(e)?"xn--"+I(e):e}))},toUnicode:function(e){return k(e,(function(e){return g.test(e)?O(e.slice(4).toLowerCase()):e}))}},void 0===(i=function(){return a}.call(t,n,t,e))||(e.exports=i)}()}).call(this,n(174)(e),n(6))},function(e,t){e.exports=function(e){return e.webpackPolyfill||(e.deprecate=function(){},e.paths=[],e.children||(e.children=[]),Object.defineProperty(e,"loaded",{enumerable:!0,get:function(){return e.l}}),Object.defineProperty(e,"id",{enumerable:!0,get:function(){return e.i}}),e.webpackPolyfill=1),e}},function(e,t,n){"use strict";e.exports={isString:function(e){return"string"==typeof e},isObject:function(e){return"object"==typeof e&&null!==e},isNull:function(e){return null===e},isNullOrUndefined:function(e){return null==e}}},function(e,t,n){"use strict";t.decode=t.parse=n(177),t.encode=t.stringify=n(178)},function(e,t,n){"use strict";function r(e,t){return Object.prototype.hasOwnProperty.call(e,t)}e.exports=function(e,t,n,s){t=t||"&",n=n||"=";var o={};if("string"!=typeof e||0===e.length)return o;var a=/\+/g;e=e.split(t);var u=1e3;s&&"number"==typeof s.maxKeys&&(u=s.maxKeys);var l=e.length;u>0&&l>u&&(l=u);for(var c=0;c=0?(h=m.substr(0,w),d=m.substr(w+1)):(h=m,d=""),p=decodeURIComponent(h),f=decodeURIComponent(d),r(o,p)?i(o[p])?o[p].push(f):o[p]=[o[p],f]:o[p]=f}return o};var i=Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)}},function(e,t,n){"use strict";var r=function(e){switch(typeof e){case"string":return e;case"boolean":return e?"true":"false";case"number":return isFinite(e)?e:"";default:return""}};e.exports=function(e,t,n,a){return t=t||"&",n=n||"=",null===e&&(e=void 0),"object"==typeof e?s(o(e),(function(o){var a=encodeURIComponent(r(o))+n;return i(e[o])?s(e[o],(function(e){return a+encodeURIComponent(r(e))})).join(t):a+encodeURIComponent(r(e[o]))})).join(t):a?encodeURIComponent(r(a))+n+encodeURIComponent(r(e)):""};var i=Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)};function s(e,t){if(e.map)return e.map(t);for(var n=[],r=0;rthis.stream_errors?(t&&this._on_error(t),e()):e(t))}static diagnose(e,t,n){if(null==e)throw new Error("input required");let r={},i="hex";switch(typeof t){case"function":n=t,i=o.guessEncoding(e);break;case"object":i=null!=(r=o.extend({},t)).encoding?r.encoding:o.guessEncoding(e),delete r.encoding;break;default:i=null!=t?t:"hex"}const s=new l,a=new d(r);let u=null;return"function"==typeof n?(a.on("end",()=>n(null,s.toString("utf8"))),a.on("error",n)):u=new Promise((e,t)=>(a.on("end",()=>e(s.toString("utf8"))),a.on("error",t))),a.pipe(s),a.end(e,i),u}_on_error(e){return this.stream_errors?this.push(e.toString()):this.emit("error",e)}_on_more(e,t,n,r){if(e===c.SIMPLE_FLOAT)return this.float_bytes={2:1,4:2,8:3}[t]}_fore(e,t){switch(e){case c.BYTE_STRING:case c.UTF8_STRING:case c.ARRAY:if(t>0)return this.push(", ");break;case c.MAP:if(t>0)return t%2?this.push(": "):this.push(", ")}}_on_value(e,n,r){if(e!==h.BREAK)return this._fore(n,r),this.push((()=>{switch(!1){case e!==h.NULL:return"null";case e!==h.UNDEFINED:return"undefined";case"string"!=typeof e:return JSON.stringify(e);case!(this.float_bytes>0):const n=this.float_bytes;return this.float_bytes=-1,i.inspect(e)+"_"+n;case!t.isBuffer(e):return"h'"+e.toString("hex")+"'";case!(e instanceof u):return e.toString();default:return i.inspect(e)}})())}_on_start(e,t,n,r){switch(this._fore(n,r),e){case c.TAG:this.push(`${t}(`);break;case c.ARRAY:this.push("[");break;case c.MAP:this.push("{");break;case c.BYTE_STRING:case c.UTF8_STRING:this.push("(")}if(t===h.STREAM)return this.push("_ ")}_on_stop(e){switch(e){case c.TAG:return this.push(")");case c.ARRAY:return this.push("]");case c.MAP:return this.push("}");case c.BYTE_STRING:case c.UTF8_STRING:return this.push(")")}}_on_data(){return this.push(this.separator)}}e.exports=d}).call(this,n(3).Buffer)},function(e,t,n){"use strict";(function(t){const r=n(80),i=n(32),s=n(12).MT;class o extends Map{constructor(e){super(e)}static _encode(e){return r.encodeCanonical(e).toString("base64")}static _decode(e){return i.decodeFirstSync(e,"base64")}get(e){return super.get(o._encode(e))}set(e,t){return super.set(o._encode(e),t)}delete(e){return super.delete(o._encode(e))}has(e){return super.has(o._encode(e))}*keys(){for(const e of super.keys())yield o._decode(e)}*entries(){for(const e of super.entries())yield[o._decode(e[0]),e[1]]}[Symbol.iterator](){return this.entries()}forEach(e,t){if("function"!=typeof e)throw new TypeError("Must be function");for(const t of super.entries())e.call(this,t[1],o._decode(t[0]),this)}encodeCBOR(e){if(!e._pushInt(this.size,s.MAP))return!1;if(e.canonical){const n=Array.from(super.entries()).map(e=>[t.from(e[0],"base64"),e[1]]);n.sort((e,t)=>e[0].compare(t[0]));for(const t of n)if(!e.push(t[0])||!e.pushAny(t[1]))return!1}else for(const n of super.entries())if(!e.push(t.from(n[0],"base64"))||!e.pushAny(n[1]))return!1;return!0}}e.exports=o}).call(this,n(3).Buffer)},function(e,t,n){"use strict";(function(e){Object.defineProperty(t,"__esModule",{value:!0});const r=n(79),i=n(50);t.BundleBuilder=class{constructor(e){this.primaryURL=e,this.sectionLengths=[],this.sections=[],this.responses=[],this.index=new Map,this.currentResponsesOffset=0,o(e)}createBundle(){if(!this.index.has(this.primaryURL))throw new Error(`Exchange for primary URL (${this.primaryURL}) does not exist`);this.addSection("index",this.fixupIndex()),this.addSection("responses",this.responses);const e=this.sectionLengths.reduce((e,t)=>e+t.length,16384),t=a(this.createTopLevel(),e),n=new DataView(t.buffer,t.byteOffset+t.length-8);return n.setUint32(0,Math.floor(t.length/4294967296)),n.setUint32(4,4294967295&t.length),t}addExchange(e,t,n,r){o(e),"string"==typeof r&&(r=l(r)),this.addIndexEntry(e,this.addResponse(new s(t,n),r))}setManifestURL(e){o(e),this.addSection("manifest",e)}addSection(e,t){if(this.sectionLengths.some(t=>t.name===e))throw new Error("Duplicated section: "+e);let n;n="responses"===e?this.currentResponsesOffset+u(this.responses.length):u(t),this.sectionLengths.push({name:e,length:n}),this.sections.push(t)}addResponse(e,t){if(t.length>0&&!e.has("content-type"))throw new Error("Non-empty exchange must have Content-Type header");const n=[new Uint8Array(a(e)),t];return this.responses.push(n),n.reduce((e,t)=>e+u(t.length)+t.length,1)}addIndexEntry(e,t){this.index.set(e,[new Uint8Array(0),this.currentResponsesOffset,t]),this.currentResponsesOffset+=t}fixupIndex(){const e=u(this.responses.length);for(const t of this.index.values())t[1]+=e;return this.index}createTopLevel(){const e=[];for(const t of this.sectionLengths)e.push(t.name,t.length);return[l("🌐📦"),l("b1\0\0"),this.primaryURL,new Uint8Array(a(e)),this.sections,new Uint8Array(8)]}};class s extends Map{constructor(e,t){if(super(),e<100||e>999)throw new Error("Invalid status code");this.set(":status",e.toString());for(const e of Object.keys(t))this.set(e.toLowerCase(),t[e])}encodeCBOR(e){const t=new Map;for(const[e,n]of this.entries())t.set(l(e),l(n));return e.pushAny(t)}}function o(e){const t=new i.URL(e);if("http:"!==t.protocol&&"https:"!==t.protocol)throw new Error("Exchange URL's protocol must be http(s): "+e);if(""!==t.username||""!==t.password)throw new Error("Exchange URL must not have credentials: "+e);if(""!==t.hash)throw new Error("Exchange URL must not have a hash: "+e)}function a(e,t=1048576){const n=r.encodeOne(e,{canonical:!0,highWaterMark:t});if(n.length>=t)throw new Error("CBOR encode error: insufficient buffer size");return n}function u(e,t=1048576){const n=r.encodeOne(e,{highWaterMark:t}).byteLength;if(n>=t)throw new Error("CBOR encode error: insufficient buffer size");return n}function l(t){return e.from(t,"utf-8")}}).call(this,n(3).Buffer)},function(e,t,n){"use strict";n.r(t),n.d(t,"SWReplay",(function(){return Ae}));var r=n(4),i=n(81),s=n.n(i),o=n(0),a=n(34),u=n(5),l=n(53),c=n.n(l);const h=2e6,d=921600,p=1e6,f=412800;function m(e={}){let t,n;const r=e&&e.response&&e.response.extraOpts;if(r&&(t=r.adaptive_max_resolution||r.maxRes,n=r.adaptive_max_bandwidth||r.maxBand,t&&n))return{maxRes:t,maxBand:n};let i;return i=e&&e.response&&!e.response.isLive?{maxRes:d,maxBand:h}:{maxRes:f,maxBand:p},e&&e.save&&(e.save.maxRes=i.maxRes,e.save.maxBand=i.maxBand),i}function w(e,t){const n=/#EXT-X-STREAM-INF:(?:.*[,])?BANDWIDTH=([\d]+)/,r=/RESOLUTION=([\d]+)x([\d]+)/,{maxRes:i,maxBand:s}=m(t);let o=[],a=0,u=null,l=0,c=0,h=e.trimEnd().split("\n");for(const e of h){const d=e.match(n);if(!d){t&&t.rewriteUrl&&!e.startsWith("#")&&(h[a]=t.rewriteUrl(e)),a+=1;continue}o.push(a);const p=Number(d[1]),f=e.match(r),m=f?Number(f[1])*Number(f[2]):0;m&&i?m<=i&&m>c&&(c=m,l=p,u=a):p<=s&&p>l&&(c=m,l=p,u=a),a+=1}o.reverse();for(const e of o)e!==u&&h.splice(e,2);return h.join("\n")}const g={ignoreAttributes:!1,ignoreNameSpace:!1,format:!1,supressEmptyNode:!0};function b(e,t,n){try{return function(e,t,n){const r=g,i=c.a.parse(e,r),{maxRes:s,maxBand:o}=m(t);let a=null,u=0,l=0,h=null;h=Array.isArray(i.MPD.Period.AdaptationSet)?i.MPD.Period.AdaptationSet:[i.MPD.Period.AdaptationSet];for(const e of h){a=null,u=0,l=0;let t=null;t=Array.isArray(e.Representation)?e.Representation:[e.Representation];for(const e of t){const t=Number(e["@_width"]||"0")*Number(e["@_height"]||"0"),n=Number(e["@_bandwidth"]||"0");t&&s?t<=s&&t>u&&(u=t,l=n,a=e):n<=o&&n>l&&(u=t,l=n,a=e)}a&&Array.isArray(n)&&n.push(a["@_id"]),a&&(e.Representation=[a])}return"\n"+new c.a.j2xParser(r).parse(i).trim()}(e,t,n)}catch(t){return console.log(t),e}}n(87);const _=[{contains:["youtube.com","youtube-nocookie.com"],rxRules:[[/ytplayer.load\(\);/,y('ytplayer.config.args.dash = "0"; ytplayer.config.args.dashmpd = ""; {0}')],[/yt\.setConfig.*PLAYER_CONFIG.*args":\s*{/,y('{0} "dash": "0", dashmpd: "", ')],[/(?:"player":|ytplayer\.config).*"args":\s*{/,y('{0}"dash":"0","dashmpd":"",')],[/yt\.setConfig.*PLAYER_VARS.*?{/,y('{0}"dash":"0","dashmpd":"",')]]},{contains:["vimeo.com/video"],rxRules:[[/\"dash\"[:]/,y('"__dash":')],[/\"hls\"[:]/,y('"__hls":')]]},{contains:["facebook.com/"],rxRules:[[/"dash_/,y('"__nodash__')],[/_dash"/,y('__nodash__"')],[/_dash_/,y("__nodash__")]]},{contains:["api.twitter.com/2/"],rxRules:[[/"video_info".*?}]}/,function(e){const t=e;try{const t='"video_info":';e=e.slice(t.length);const n=JSON.parse(e);let r=null,i=0;for(const e of n.variants)"video/mp4"===e.content_type&&e.bitrate&&e.bitrate>i&&e.bitrate<=p&&(r=e,i=e.bitrate);return r&&(n.variants=[r]),t+JSON.stringify(n)}catch(e){return t}}]]}];function y(e){return t=>e.replace("{0}",t)}class v{constructor(e,t){this.rwRules=t||_,this.RewriterCls=e,this._initRules()}_initRules(){this.rewriters=new Map;for(const e of this.rwRules)e.rxRules&&this.rewriters.set(e,new this.RewriterCls(e.rxRules));this.defaultRewriter=new this.RewriterCls}getRewriter(e){for(const t of this.rwRules)if(t.contains)for(const n of t.contains)if(e.indexOf(n)>=0){const e=this.rewriters.get(t);if(e)return e}return this.defaultRewriter}}class x{constructor(e){this.rules=e||null,this.rules?this.compileRules():this.rx=null}compileRules(){let e="";for(let t of this.rules)e&&(e+="|"),e+=`(${t[0].source})`;const t=`(?:${e})`;this.rx=new RegExp(t,"gm")}doReplace(e){const t=e[e.length-2],n=e[e.length-1];for(let r=0;rthis.doReplace(t)):e}}const E=/(url\s*\(\s*[\\"']*)([^)'"]+)([\\"']*\s*\))/gi,A=/(@import\s*[\\"']*)([^)'";]+)([\\"']*\s*;?)/gi,S=/([\d.]+\s*;\s*url\s*=\s*)(.+)(\s*)/im,k=/WB_wombat_/g,T=/^(?:\s*(?:(?:\/\*[^\*]*\*\/)|(?:\/\/[^\n]+[\n])))*\s*(\w+)\(\{/,C=/[?].*callback=([^&]+)/,D=["callback=jQuery","callback=jsonp",".json?"],R=["http://","https://","//"],O=new v(class extends x{constructor(e){super(),this.thisRw="_____WB$wombat$check$this$function_____(this)";const t=["window","self","document","location","top","parent","frames","opener"],n=t.join("|");this.rules=[[/[^$,]\beval\s*\(/,this.addPrefixAfter1("WB_wombat_runEval(function _____evalIsEvil(_______eval_arg$$) { return eval(_______eval_arg$$); }.bind(this)).")],[/[^$]\beval\b/,this.addPrefixAfter1("WB_wombat_")],[/\.postMessage\b\(/,this.addPrefix(".__WB_pmw(self)")],[/[^$.]\s*\blocation\b\s*[=]\s*(?![=])/,this.addSuffix("((self.__WB_check_loc && self.__WB_check_loc(location)) || {}).href = ")],[/\breturn\s+this\b\s*(?![.$])/,this.replaceThis()],[new RegExp(`[^$.]\\s*\\bthis\\b(?=(?:\\.(?:${n})\\b))`),this.replaceThisProp()],[/[=,]\s*\bthis\b\s*(?![:.$])/,this.replaceThis()],[/\}(?:\s*\))?\s*\(this\)/,this.replaceThis()],[/[^|&][|&]{2}\s*this\b\s*(?![|&.$](?:[^|&]|$))/,this.replaceThis()]],e&&(this.rules=this.rules.concat(e)),this.compileRules(),this.firstBuff=this.initLocalDecl(t),this.lastBuff="\n\n}"}addPrefix(e){return t=>e+t}addPrefixAfter1(e){return t=>t[0]+e+t.slice(1)}addSuffix(e){return(t,n,r)=>{if(n>0){const e=r[n-1];if("."===e||"$"===e)return t}return t+e}}replaceThis(){return e=>e.replace("this",this.thisRw)}replaceThisProp(){return(e,t,n)=>{const r=t>0?n[t-1]:"";return"\n"===r?e.replace("this",";"+this.thisRw):"."!==r&&"$"!==r?e.replace("this",this.thisRw):e}}initLocalDecl(e){const t="_____WB$wombat$assign$function_____";let n=` var ${t} = function(name) {return (self._wb_wombat && self._wb_wombat.local_init && self._wb_wombat.local_init(name)) || self[name]; };\n if (!self.__WB_pmw) { self.__WB_pmw = function(obj) { this.__WB_source = obj; return this; } }\n { `;for(let r of e)n+=`let ${r} = ${t}("${r}");\n`;return n+"\n"}rewrite(e,t){let n=e.replace(this.rx,(e,...t)=>this.doReplace(t));return n=this.firstBuff+n+this.lastBuff,t?n.replace(/\n/g," "):n}}),I=new v(x);class N{constructor({baseUrl:e,prefix:t,responseUrl:n,workerInsertFunc:r,headInsertFunc:i=null,urlRewrite:s=!0,contentRewrite:o=!0,decode:a=!0,useBaseRules:u=!1}={}){if(this.urlRewrite=s,this.contentRewrite=o,this.dsRules=s&&!u?O:I,this.decode=a,this.prefix=t||"",this.prefix&&s){const e=new URL(this.prefix);this.relPrefix=e.pathname,this.schemeRelPrefix=this.prefix.slice(e.protocol.length)}const l=new URL(n||e);this.scheme=l.protocol,e.startsWith("//")&&(e=this.scheme+e),this.url=this.baseUrl=e,this.headInsertFunc=i,this.workerInsertFunc=r}getRewriteMode(e,t,n="",r=null){if(!r&&t&&(r=(r=t.headers.get("Content-Type")||"").split(";",1)[0]),e)switch(e.destination){case"style":return"css";case"script":return Object(o.c)(n,D)?"jsonp":"js";case"worker":return"js-worker"}switch(r){case"text/html":return"html";case"text/javascript":case"application/javascript":case"application/x-javascript":return Object(o.c)(n,D)?"jsonp":n.endsWith(".json")?"json":"js";case"application/json":return"json";case"text/css":return"css";case"application/x-mpegURL":case"application/vnd.apple.mpegurl":return"hls";case"application/dash+xml":return"dash"}return null}async rewrite(e,t){const n=this.contentRewrite?this.getRewriteMode(t,e,this.baseUrl):null,r=this.urlRewrite&&!Object(o.h)(t),i=this.rewriteHeaders(e.headers,this.urlRewrite,!!n),s=e.headers.get("content-encoding"),u=e.headers.get("transfer-encoding");e.headers=i,this.decode&&(s||u)&&(e=await Object(a.b)(e,s,u,null===n));let l=null;switch(n){case"html":if(r)return await this.rewriteHtml(e);break;case"css":this.urlRewrite&&(l=this.rewriteCSS);break;case"js":l=this.rewriteJS;break;case"json":l=this.rewriteJSON;break;case"js-worker":l=this.workerInsertFunc;break;case"jsonp":l=this.rewriteJSONP;break;case"hls":l=w;break;case"dash":l=b}const c={response:e};if(r&&(c.rewriteUrl=e=>this.rewriteUrl(e)),l){let t=await e.getText();t=l.call(this,t,c),e.setContent(t)}return e}normalizeBaseUrl(e,t){if(e&&t!=e)try{return new URL(e).href}catch(t){if(e.startsWith("//"))return(e=new URL("https:"+e).href).slice("https:".length)}return e}isRewritableUrl(e){const t=["#","javascript:","data:","mailto:","about:","file:","blob:","{"];for(let n of t)if(e.startsWith(n))return!1;return!0}rewriteUrl(e,t=!1){if(!this.urlRewrite)return e;var n=e;return!(e=e.trim())||!this.isRewritableUrl(e)||e.startsWith(this.prefix)||e.startsWith(this.relPrefix)?n:e.startsWith("http:")||e.startsWith("https:")||e.startsWith("https\\3a/")?this.prefix+e:e.startsWith("//")||e.startsWith("\\/\\/")?this.schemeRelPrefix+e:e.startsWith("/")?(e=new URL(e,this.baseUrl).href,this.relPrefix+e):t||e.indexOf("../")>=0?(e=new URL(e,this.baseUrl).href,this.prefix+e):n}rewriteMetaContent(e,t){let n=this.getAttr(e,"http-equiv");if(n&&(n=n.toLowerCase()),"content-security-policy"===n)t.name="_"+t.name;else{if("refresh"===n)return t.value.replace(S,(e,t,n,r)=>t+this.rewriteUrl(n)+r);if("referrer"===this.getAttr(e,"name"))return"no-referrer-when-downgrade";if(Object(o.l)(t.value,R))return this.rewriteUrl(t.value)}return t.value}rewriteSrcSet(e){const t=/\s*(\S*\s+[\d\.]+[wx]),|(?:\s*,(?:\s+|(?=https?:)))/;let n=[];for(let r of e.split(t))if(r){const e=r.trim().split(" ");e[0]=this.rewriteUrl(e[0]),n.push(e.join(" "))}return n.join(", ")}rewriteTagAndAttrs(e,t){const n=[{match:/youtube.com\/v\/([^&]+)[&]/,replace:"youtube.com/embed/$1?"}],r=e=>Object(o.l)(e,R);for(let i of e.attrs){const s=i.name,o=i.value;if(s.startsWith("on")&&o.startsWith("javascript:")&&"-"!=s.slice(2,3))i.value="javascript:"+this.rewriteJS(o.slice("javascript:".length),{},!0);else if("style"===s)i.value=this.rewriteCSS(i.value);else if("background"===s)i.value=this.rewriteUrl(o);else if("srcset"===s)i.value=this.rewriteSrcSet(o);else if("crossorigin"===s||"integrity"===s)i.name="_"+i.name;else if("meta"===e.tagName&&"content"===s)i.value=this.rewriteMetaContent(e.attrs,i);else if("param"===e.tagName&&r(o))i.value=this.rewriteUrl(i.value);else if(s.startsWith("data-")&&r(o))i.value=this.rewriteUrl(i.value);else if("base"===e.tagName&&"href"===s)try{this.baseUrl=new URL(i.value,this.baseUrl).href,i.value=this.rewriteUrl(this.normalizeBaseUrl(i.value,this.baseUrl))}catch(e){console.warn("Invalid : "+i.value)}else if("script"===e.tagName&&"src"===s){const t=this.rewriteUrl(i.value);t===i.value?(e.attrs.push({name:"__wb_orig_src",value:i.value}),i.value=this.rewriteUrl(i.value,!0)):i.value=t}else if("object"===e.tagName&&"data"===s){const t=this.getAttr(e.attrs,"type");if("application/pdf"===t)i.name="src",e.tagName="iframe";else if("application/x-shockwave-flash"===t)for(const t of n){const n=i.value.replace(t.match,t.replace);if(n!==i.value){i.name="src",i.value=this.rewriteUrl(n),e.tagName="iframe";break}}}else"href"===s||"src"===s?i.value=this.rewriteUrl(i.value):t[i.name]&&(i.value=this.rewriteUrl(i.value))}}getAttr(e,t){for(let n of e)if(n.name===t)return n.value;return null}async rewriteHtml(e){if(!e.buffer&&!e.reader)return e;const t={a:{href:"mp_"},base:{href:"mp_"},applet:{codebase:"oe_",archive:"oe_"},area:{href:"mp_"},audio:{src:"oe_"},base:{href:"mp_"},blockquote:{cite:"mp_"},body:{background:"im_"},button:{formaction:"mp_"},command:{icon:"im_"},del:{cite:"mp_"},embed:{src:"oe_"},iframe:{src:"if_"},image:{src:"im_","xlink:href":"im_",href:"im_"},img:{src:"im_",srcset:"im_"},ins:{cite:"mp_"},input:{src:"im_",formaction:"mp_"},form:{action:"mp_"},frame:{src:"fr_"},link:{href:"oe_"},meta:{content:"mp_"},object:{codebase:"oe_",data:"oe_"},param:{value:"oe_"},q:{cite:"mp_"},ref:{href:"oe_"},script:{src:"js_","xlink:href":"js_"},source:{src:"oe_",srcset:"oe_"},video:{src:"oe_",poster:"im_"}},n=new s.a;let i=!1,o=!1,a="",u=!1,l=null;const c=()=>{if(!i&&o&&this.headInsertFunc){const e=this.headInsertFunc(this.url);e&&n.emitRaw(e),i=!0}};n.on("startTag",e=>{const r=t[e.tagName],s=e.tagName;switch(this.rewriteTagAndAttrs(e,r||{}),i||["head","html"].includes(e.tagName)||(o=!0,c()),n.emitStartTag(e),e.tagName){case"script":if(e.selfClosing)break;a=e.tagName;const t=this.getAttr(e.attrs,"type");u=!t||t.indexOf("javascript")>=0||t.indexOf("ecmascript")>=0;break;case"style":e.selfClosing||(a=e.tagName)}e.tagName!==s&&(a=s,l=e.tagName)}),n.on("endTag",e=>{e.tagName===a&&(l&&(e.tagName=l,l=null),a=""),n.emitEndTag(e)}),n.on("text",(e,t)=>{"script"===a?n.emitRaw(u?this.rewriteJS(e.text):e.text):"style"===a?n.emitRaw(this.rewriteCSS(e.text)):n.emitRaw(t)});const h=new r.PassThrough({encoding:"utf-8"});h.pipe(n),h.on("end",c);const d=new TextEncoder("utf-8"),p=(e[Symbol.asyncIterator](),new ReadableStream({start(e){n.on("data",t=>e.enqueue(d.encode(t))),n.on("end",()=>e.close())}}));for await(const t of e)h.push(t),o=!0;return h.push(null),e.setContent(p),e}rewriteCSS(e){const t=this;function n(e,n,r,i,s,o){return r=r.replace(/\s+/g,""),n+t.rewriteUrl(r)+i}return e.replace(E,n).replace(A,n).replace(k,"")}rewriteJS(e,t,n){const r=t&&!t.rewriteUrl,i=r?I:this.dsRules,s=i.getRewriter(this.baseUrl);if(s===i.defaultRewriter){if(r)return e;const t=["window","self","document","location","top","parent","frames","opener","this","eval","postMessage"];let n=!1;for(let r of t)if(e.indexOf(r)>=0){n=!0;break}if(!n)return e}return s.rewrite(e,n)}rewriteJSON(e){e=this.rewriteJSONP(e);const t=I.getRewriter(this.baseUrl);return t!==I.defaultRewriter?t.rewrite(e):e}rewriteJSONP(e){const t=e.match(T);if(!t)return e;const n=this.baseUrl.match(C);return n&&"?"!==n[1]?n[1]+e.slice(e.indexOf(t[1])+t[1].length):e}rewriteHeaders(e,t,n){const r={"access-control-allow-origin":"prefix-if-url-rewrite","access-control-allow-credentials":"prefix-if-url-rewrite","access-control-expose-headers":"prefix-if-url-rewrite","access-control-max-age":"prefix-if-url-rewrite","access-control-allow-methods":"prefix-if-url-rewrite","access-control-allow-headers":"prefix-if-url-rewrite","accept-patch":"keep","accept-ranges":"keep",age:"prefix",allow:"keep","alt-svc":"prefix","cache-control":"prefix",connection:"prefix","content-base":"url-rewrite","content-disposition":"keep","content-encoding":"prefix-if-content-rewrite","content-language":"keep","content-length":"content-length","content-location":"url-rewrite","content-md5":"prefix","content-range":"keep","content-security-policy":"prefix","content-security-policy-report-only":"prefix","content-type":"keep",date:"keep",etag:"prefix",expires:"prefix","last-modified":"prefix",link:"keep",location:"url-rewrite",p3p:"prefix",pragma:"prefix","proxy-authenticate":"keep","public-key-pins":"prefix","retry-after":"prefix",server:"prefix","set-cookie":"cookie",status:"prefix","strict-transport-security":"prefix",trailer:"prefix","transfer-encoding":"transfer-encoding",tk:"prefix",upgrade:"prefix","upgrade-insecure-requests":"prefix",vary:"prefix",via:"prefix",warning:"prefix","www-authenticate":"keep","x-frame-options":"prefix","x-xss-protection":"prefix"};let i=new Headers;for(let s of e.entries()){switch(r[s[0]]){case"keep":i.append(s[0],s[1]);break;case"url-rewrite":t?i.append(s[0],this.rewriteUrl(s[1])):i.append(s[0],s[1]);break;case"prefix-if-content-rewrite":n?i.append("X-Archive-Orig-"+s[0],s[1]):i.append(s[0],s[1]);break;case"prefix-if-url-rewrite":t?i.append("X-Archive-Orig-"+s[0],s[1]):i.append(s[0],s[1]);break;case"content-length":if("0"==s[1]){i.append(s[0],s[1]);continue}if(n)try{if(parseInt(s[1])>=0){i.append(s[0],s[1]);continue}}catch(e){}i.append(s[0],s[1]);break;case"transfer-encoding":case"prefix":i.append("X-Archive-Orig-"+s[0],s[1]);break;case"cookie":i.append(s[0],s[1]);break;default:i.append(s[0],s[1])}}return i}}const F="default-src 'unsafe-eval' 'unsafe-inline' 'self' data: blob: mediastream: ws: wss: ; form-action 'self'",P=/^(\d*)([a-z]+_|[$][a-z0-9:.-]+)?(?:\/|\||%7C|%7c)(.+)/;class L{constructor(e,t){const{name:n,store:r,config:i}=e;this.name=n,this.store=r,this.config=i,this.metadata=this.config.metadata?this.config.metadata:{},this.rootPrefix=t.root||t.main,this.prefix=t.main,this.config.root?this.isRoot=!0:(this.prefix+=this.name+"/",this.isRoot=!1),this.staticPrefix=t.static}async handleRequest(e,t){let n=e.url;if(!n.startsWith(this.prefix))return null;const r={status:200,statusText:"OK",headers:{"Content-Type":"text/html"}};let i=null;if(""==(n=n.substring(this.prefix.length))){i="

Available Pages

    ";const e=await this.store.getAllPages();for(const t of e){let e=this.prefix;t.date&&(e+=t.date+"/"),i+=`
  • ${t.url}
  • `}return i+="
",new Response(i,r)}const s=P.exec(n);let a="",u="",l="";if(!s&&(n.startsWith("https:")||n.startsWith("http:")||n.startsWith("blob:")))u=n;else if(!s&&this.isRoot)u="https://"+n;else{if(!s)return Object(o.k)(e,`Replay URL ${n} not found`);a=s[1],l=s[2],u=s[3]}if(!l)return await this.makeTopFrame(u,a);const c=u.indexOf("#");c>0&&(u=u.substring(0,c));const h={url:u,method:e.method,request:e,timestamp:a};let d=null;try{if(u.startsWith("srcdoc:"))d=this.getSrcDocResponse(u,u.slice("srcdoc:".length));else if(u.startsWith("blob:"))d=await this.getBlobResponse(u);else if("about:blank"===u)d=await this.getSrcDocResponse(u);else{if(d=this.checkSlash(u,a,l))return d;d=await this.store.getResource(h,this.prefix,t)}}catch(t){if(t instanceof o.a){const t=await self.clients.matchAll({type:"window"});for(const e of t){new URL(e.url).searchParams.get("source")===this.config.sourceUrl&&e.postMessage({source:this.config.sourceUrl,coll:this.name,type:"authneeded"})}return Object(o.k)(e,"

Sorry, this URL requires authentication from the source.

")}}if(!d){const t=`\n

Sorry, the URL ${u} is not in this archive.

\n

Try Live Version?

`;return Object(o.k)(e,t)}if(d instanceof Response)return d;if(!d.noRW){const t=t=>{const n=d.headers.get("x-wabac-preset-cookie");return this.makeHeadInsert(t,a,d.date,n,d.isLive,e.referrer)},n=e=>`\n (function() { self.importScripts('${this.staticPrefix}wombatWorkers.js'); new WBWombat({'prefix': '${this.prefix+a}/', 'prefixMod': '${this.prefix+a}wkrf_/', 'originalURL': '${u}'}); })();`+e,r="id_"===l||"wkrf_"===l,i=this.prefix+a+l+"/",s={baseUrl:u,responseUrl:d.url,prefix:i,headInsertFunc:t,workerInsertFunc:n,urlRewrite:!r,contentRewrite:!r,decode:this.config.decode},o=new N(s);d=await o.rewrite(d,e),"id_"!==l&&d.headers.append("Content-Security-Policy",F)}const p=e.headers.get("range");return p&&200===d.status&&d.setRange(p),d.makeResponse()}checkSlash(e,t,n){try{const r=new URL(e);if("/"===r.pathname&&r.href!==e){let e=this.prefix+t+n;return(t||n)&&(e+="/"),e+=r.href,Response.redirect(e,301)}}catch(e){}return null}getSrcDocResponse(e,t){const n=t?decodeURIComponent(atob(t)):"",r=(new TextEncoder).encode(n),i=new Headers({"Content-Type":"text/html"}),s=new Date;return new u.a({payload:r,status:200,statusText:"OK",headers:i,url:e,date:s})}async getBlobResponse(e){const t=await fetch(e),n=t.status,r=t.statusText,i=new Headers(t.headers);"application/xhtml+xml"===i.get("content-type")&&i.set("content-type","text/html");const s=new Date,o=new Uint8Array(await t.arrayBuffer());return new u.a({payload:o,status:n,statusText:r,headers:i,url:e,date:s})}async makeTopFrame(e,t,n){let r=null;if(this.config.extraConfig&&this.config.extraConfig.baseUrl?r=this.config.extraConfig.baseUrl:!this.isRoot&&this.config.sourceUrl&&(r=`/?source=${this.config.sourceUrl}`),r){const n=new URLSearchParams({url:e,ts:t,view:"replay"}).toString();return Response.redirect(r+"#"+n)}let i=null;if(this.config.topTemplateUrl){const n=await fetch(this.config.topTemplateUrl);i=(await n.text()).replace("$URL",e).replace("$TS",t).replace("$PREFIX",this.prefix)}else i=`\n\n\n\n\n