From 3cc416db004c733754fda3cd82dca7e0bdc6f826 Mon Sep 17 00:00:00 2001 From: lefteris Date: Wed, 17 Mar 2021 20:41:47 +0200 Subject: [PATCH] docker --- Dockerfile | 18 + LICENSE | 614 - README.md | 2 - ecosystem.config.js | 28 - ecosystem.config.js.backup | 49 - ecosystem.config.js.backup-1 | 28 - .../swarmlab-stats-proxy-server.conf | 52 +- package-lock.json | 11854 ++++++++++++++++ package.json | 65 + src/App.vue | 176 + src/assets/css/themify-icons.css | 1093 ++ ...glyphicons-halflings-regular.448c34a.woff2 | Bin 0 -> 18028 bytes .../glyphicons-halflings-regular.e18bbf6.ttf | Bin 0 -> 45404 bytes .../glyphicons-halflings-regular.f4769f9.eot | Bin 0 -> 20127 bytes .../glyphicons-halflings-regular.fa27723.woff | Bin 0 -> 23424 bytes src/assets/fonts/themify.eot | Bin 0 -> 78748 bytes src/assets/fonts/themify.svg | 362 + src/assets/fonts/themify.ttf | Bin 0 -> 78584 bytes src/assets/fonts/themify.woff | Bin 0 -> 56108 bytes src/assets/logo.png | Bin 0 -> 6849 bytes src/components/DocGrep.vue | 111 + src/components/DocLive.vue | 162 + src/components/docgrep/GrepView.vue | 210 + src/components/docgrep/rungrep.vue | 216 + src/components/doclive/AdhocView.vue | 518 + src/components/doclive/runLlo.vue | 660 + src/main.js | 45 + src/store/index.js | 40 + src/store/modules/create_pipelineLLO.js | 237 + swarmlab-app/LICENSE | 614 - swarmlab-app/README.md | 2 - swarmlab-app/src/package.json | 24 - swarmlab-app/src/run/app-ok1.js | 643 - swarmlab-app/src/run/app.backup.js | 91 - swarmlab-app/src/run/app.backup1.js | 575 - swarmlab-app/src/run/app.backup2.js | 578 - swarmlab-app/src/run/app.backup3.js | 48 - swarmlab-app/src/run/app.backup4.js | 563 - swarmlab-app/src/run/app.js | 889 -- swarmlab-app/src/run/app.js.backup1 | 697 - swarmlab-app/src/run/runconfig.js | 11 - test-server.js | 53 + 42 files changed, 15847 insertions(+), 5481 deletions(-) create mode 100644 Dockerfile delete mode 100644 LICENSE delete mode 100644 README.md delete mode 100644 ecosystem.config.js delete mode 100644 ecosystem.config.js.backup delete mode 100644 ecosystem.config.js.backup-1 rename {swarmlab-app/nginx => nginx}/swarmlab-stats-proxy-server.conf (60%) create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 src/App.vue create mode 100644 src/assets/css/themify-icons.css create mode 100755 src/assets/fonts/glyphicons-halflings-regular.448c34a.woff2 create mode 100755 src/assets/fonts/glyphicons-halflings-regular.e18bbf6.ttf create mode 100755 src/assets/fonts/glyphicons-halflings-regular.f4769f9.eot create mode 100755 src/assets/fonts/glyphicons-halflings-regular.fa27723.woff create mode 100755 src/assets/fonts/themify.eot create mode 100755 src/assets/fonts/themify.svg create mode 100755 src/assets/fonts/themify.ttf create mode 100755 src/assets/fonts/themify.woff create mode 100644 src/assets/logo.png create mode 100644 src/components/DocGrep.vue create mode 100644 src/components/DocLive.vue create mode 100644 src/components/docgrep/GrepView.vue create mode 100644 src/components/docgrep/rungrep.vue create mode 100644 src/components/doclive/AdhocView.vue create mode 100644 src/components/doclive/runLlo.vue create mode 100644 src/main.js create mode 100644 src/store/index.js create mode 100644 src/store/modules/create_pipelineLLO.js delete mode 100644 swarmlab-app/LICENSE delete mode 100644 swarmlab-app/README.md delete mode 100644 swarmlab-app/src/package.json delete mode 100755 swarmlab-app/src/run/app-ok1.js delete mode 100644 swarmlab-app/src/run/app.backup.js delete mode 100755 swarmlab-app/src/run/app.backup1.js delete mode 100755 swarmlab-app/src/run/app.backup2.js delete mode 100755 swarmlab-app/src/run/app.backup3.js delete mode 100755 swarmlab-app/src/run/app.backup4.js delete mode 100755 swarmlab-app/src/run/app.js delete mode 100755 swarmlab-app/src/run/app.js.backup1 delete mode 100644 swarmlab-app/src/run/runconfig.js create mode 100644 test-server.js diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..590738d --- /dev/null +++ b/Dockerfile @@ -0,0 +1,18 @@ +# getting base image ubuntu +FROM node:lts-alpine + +RUN npm install -g http-server + +WORKDIR /app + +COPY package*.json ./ + +RUN npm install + +COPY . . + +RUN npm run build + +EXPOSE 8080 + +CMD [ "http-server", "dist" ] diff --git a/LICENSE b/LICENSE deleted file mode 100644 index 82b5650..0000000 --- a/LICENSE +++ /dev/null @@ -1,614 +0,0 @@ -GNU AFFERO GENERAL PUBLIC LICENSE - -Version 3, 19 November 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 Affero General Public License is a free, copyleft license for software -and other kinds of works, specifically designed to ensure cooperation with -the community in the case of network server software. - -The licenses for most software and other practical works are designed to take -away your freedom to share and change the works. By contrast, our General -Public Licenses are 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. - -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. - -Developers that use our General Public Licenses protect your rights with two -steps: (1) assert copyright on the software, and (2) offer you this License -which gives you legal permission to copy, distribute and/or modify the software. - -A secondary benefit of defending all users' freedom is that improvements made -in alternate versions of the program, if they receive widespread use, become -available for other developers to incorporate. Many developers of free software -are heartened and encouraged by the resulting cooperation. However, in the -case of software used on network servers, this result may fail to come about. -The GNU General Public License permits making a modified version and letting -the public access it on a server without ever releasing its source code to -the public. - -The GNU Affero General Public License is designed specifically to ensure that, -in such cases, the modified source code becomes available to the community. -It requires the operator of a network server to provide the source code of -the modified version running there to the users of that server. Therefore, -public use of a modified version, on a publicly accessible server, gives the -public access to the source code of the modified version. - -An older license, called the Affero General Public License and published by -Affero, was designed to accomplish similar goals. This is a different license, -not a version of the Affero GPL, but Affero has released a new version of -the Affero GPL which permits relicensing under this license. - -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 Affero 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 s ue 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. Remote Network Interaction; Use with the GNU General Public License. - -Notwithstanding any other provision of this License, if you modify the Program, -your modified version must prominently offer all users interacting with it -remotely through a computer network (if your version supports such interaction) -an opportunity to receive the Corresponding Source of your version by providing -access to the Corresponding Source from a network server at no charge, through -some standard or customary means of facilitating copying of software. This -Corresponding Source shall include the Corresponding Source for any work covered -by version 3 of the GNU General Public License that is incorporated pursuant -to the following paragraph. - -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 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 work with which it is combined will remain -governed by version 3 of the GNU General Public License. - - 14. Revised Versions of this License. - -The Free Software Foundation may publish revised and/or new versions of the -GNU Affero 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 Affero 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 Affero 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 Affero 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 Affero 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 Affero General Public License for more -details. - -You should have received a copy of the GNU Affero General Public License along -with this program. If not, see . - -Also add information on how to contact you by electronic and paper mail. - -If your software can interact with users remotely through a computer network, -you should also make sure that it provides a way for users to get its source. -For example, if your program is a web application, its interface could display -a "Source" link that leads users to an archive of the code. There are many -ways you could offer source, and different solutions will be better for different -programs; see section 13 for the specific requirements. - -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 AGPL, see . diff --git a/README.md b/README.md deleted file mode 100644 index 28d88d8..0000000 --- a/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# playground-readmongo - diff --git a/ecosystem.config.js b/ecosystem.config.js deleted file mode 100644 index 7373cd4..0000000 --- a/ecosystem.config.js +++ /dev/null @@ -1,28 +0,0 @@ -module.exports = { - "apps": [ -{ - "name" : "write2mongo", - "autorestart" : true, - "watch" : true, - //"script" : "/home/node/swarmlab-app/run/app.js", - "cwd" : "/home/node/swarmlab-app", - "script" : "run/app.js", - "run_as_user" : "node", - "args" : "start", - //"node_args" : "--harmony", - //"node_args" : "['--trace-deprecation']", - "pid_file" : "/home/node/run/pid.pid", - "log_type" : "json", - "log_file" : "/home/node/logs/logfile", - "error_file" : "/home/node/logs/errorfile", - "out_file" : "/home/node/logs/outfile", - "log_date_format": "YYYY-MM-DD HH:mm Z", - "merge_logs" : true, - "exec_mode" : "fork", - "max_restarts": 10, - "max_memory_restart": "500M", - "restart_delay": 1000 - } -] -} - diff --git a/ecosystem.config.js.backup b/ecosystem.config.js.backup deleted file mode 100644 index 4557280..0000000 --- a/ecosystem.config.js.backup +++ /dev/null @@ -1,49 +0,0 @@ -module.exports = { - "apps": [ -{ - "name" : "write2mongo", - "autorestart" : true, - "watch" : true, - //"script" : "/home/node/swarmlab-app/run/app.js", - "cwd" : "/home/node/swarmlab-app", - "script" : "run/app.js", - "run_as_user" : "node", - "args" : "start", - //"node_args" : "--harmony", - //"node_args" : "['--trace-deprecation']", - "pid_file" : "/home/node/run/pid.pid", - "log_type" : "json", - "log_file" : "/home/node/logs/logfile", - "error_file" : "/home/node/logs/errorfile", - "out_file" : "/home/node/logs/outfile", - "log_date_format": "YYYY-MM-DD HH:mm Z", - "merge_logs" : true, - "exec_mode" : "fork", - "max_restarts": 10, - "max_memory_restart": "500M", - "restart_delay": 1000 - }, -{ - "name" : "write2proxy", - "autorestart" : true, - "watch" : true, - "cwd" : "/home/node/swarmlab-app", - "script" : "nginx -g 'daemon off;'", - //"script" : "./run-nginx.sh", - //"exec_interpreter" : "bash", - "exec_interpreter" : "none", - //"pid_file" : "/home/node/run/pidnginx.pid", - "log_type" : "json", - "log_file" : "/home/node/logs/logfilenginx", - "error_file" : "/home/node/logs/errorfilenginx", - "out_file" : "/home/node/logs/outfilenginx", - "log_date_format": "YYYY-MM-DD HH:mm Z", - "merge_logs" : true, - "exec_mode" : "fork_mode", - "max_restarts": 10, - "max_memory_restart": "500M", - "restart_delay" : 1000 - } -] -} - diff --git a/ecosystem.config.js.backup-1 b/ecosystem.config.js.backup-1 deleted file mode 100644 index 7373cd4..0000000 --- a/ecosystem.config.js.backup-1 +++ /dev/null @@ -1,28 +0,0 @@ -module.exports = { - "apps": [ -{ - "name" : "write2mongo", - "autorestart" : true, - "watch" : true, - //"script" : "/home/node/swarmlab-app/run/app.js", - "cwd" : "/home/node/swarmlab-app", - "script" : "run/app.js", - "run_as_user" : "node", - "args" : "start", - //"node_args" : "--harmony", - //"node_args" : "['--trace-deprecation']", - "pid_file" : "/home/node/run/pid.pid", - "log_type" : "json", - "log_file" : "/home/node/logs/logfile", - "error_file" : "/home/node/logs/errorfile", - "out_file" : "/home/node/logs/outfile", - "log_date_format": "YYYY-MM-DD HH:mm Z", - "merge_logs" : true, - "exec_mode" : "fork", - "max_restarts": 10, - "max_memory_restart": "500M", - "restart_delay": 1000 - } -] -} - diff --git a/swarmlab-app/nginx/swarmlab-stats-proxy-server.conf b/nginx/swarmlab-stats-proxy-server.conf similarity index 60% rename from swarmlab-app/nginx/swarmlab-stats-proxy-server.conf rename to nginx/swarmlab-stats-proxy-server.conf index 06f2150..3dd0689 100644 --- a/swarmlab-app/nginx/swarmlab-stats-proxy-server.conf +++ b/nginx/swarmlab-stats-proxy-server.conf @@ -1,7 +1,7 @@ upstream factory_servers { - ip_hash; - #server 127.0.0.1:3000; - server readmongo:3000; + #ip_hash; + server 127.0.0.1:8080; + #server readmongo:3000; keepalive 64; } @@ -17,6 +17,7 @@ server { server { listen [::]:443 ssl ipv6only=off; server_name factory.swarmlab.io; + root /home/node/swarmlab-app/dist; # To allow special characters in headers ignore_invalid_headers off; @@ -25,7 +26,7 @@ server { # Set to a value such as 1000m; to restrict file size to a specific value client_max_body_size 0; # To disable buffering - proxy_buffering off; +# proxy_buffering off; ssl_certificate /etc/nginx/fullchain.pem; ssl_certificate_key /etc/nginx/key.private.pem; @@ -49,27 +50,28 @@ server { # } location / { - proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; - proxy_set_header X-Real-IP $remote_addr; - proxy_set_header Host $http_host; - proxy_set_header X-NginX-Proxy false; - - proxy_http_version 1.1; - proxy_set_header Upgrade $http_upgrade; - proxy_set_header Connection "upgrade"; - - #set $originaddr http://factory_servers; - #proxy_pass $originaddr; -# or even -# proxy_pass http://origin.example.com$request_uri; - - proxy_pass http://factory_servers$request_uri; - -# proxy_pass http://factory_servers; -# proxy_pass http://$host; - - proxy_redirect off; - proxy_read_timeout 240s; + index index.html; +# proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; +# proxy_set_header X-Real-IP $remote_addr; +# proxy_set_header Host $http_host; +# proxy_set_header X-NginX-Proxy false; +# +# proxy_http_version 1.1; +# proxy_set_header Upgrade $http_upgrade; +# proxy_set_header Connection "upgrade"; +# +# #set $originaddr http://factory_servers; +# #proxy_pass $originaddr; +## or even +## proxy_pass http://origin.example.com$request_uri; +# +# proxy_pass http://factory_servers$request_uri; +# +## proxy_pass http://factory_servers; +## proxy_pass http://$host; +# +# proxy_redirect off; +# proxy_read_timeout 240s; } diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..8c65d1e --- /dev/null +++ b/package-lock.json @@ -0,0 +1,11854 @@ +{ + "name": "bootstrap-vue-example", + "version": "0.1.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@babel/code-frame": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", + "dev": true, + "requires": { + "@babel/highlight": "^7.10.4" + } + }, + "@babel/compat-data": { + "version": "7.12.7", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.12.7.tgz", + "integrity": "sha512-YaxPMGs/XIWtYqrdEOZOCPsVWfEoriXopnsz3/i7apYPXQ3698UFhS6dVT1KN5qOsWmVgw/FOrmQgpRaZayGsw==", + "dev": true + }, + "@babel/core": { + "version": "7.12.9", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.12.9.tgz", + "integrity": "sha512-gTXYh3M5wb7FRXQy+FErKFAv90BnlOuNn1QkCK2lREoPAjrQCO49+HVSrFoe5uakFAF5eenS75KbO2vQiLrTMQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.10.4", + "@babel/generator": "^7.12.5", + "@babel/helper-module-transforms": "^7.12.1", + "@babel/helpers": "^7.12.5", + "@babel/parser": "^7.12.7", + "@babel/template": "^7.12.7", + "@babel/traverse": "^7.12.9", + "@babel/types": "^7.12.7", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.1", + "json5": "^2.1.2", + "lodash": "^4.17.19", + "resolve": "^1.3.2", + "semver": "^5.4.1", + "source-map": "^0.5.0" + } + }, + "@babel/generator": { + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.12.5.tgz", + "integrity": "sha512-m16TQQJ8hPt7E+OS/XVQg/7U184MLXtvuGbCdA7na61vha+ImkyyNM/9DDA0unYCVZn3ZOhng+qz48/KBOT96A==", + "dev": true, + "requires": { + "@babel/types": "^7.12.5", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + } + }, + "@babel/helper-annotate-as-pure": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.10.4.tgz", + "integrity": "sha512-XQlqKQP4vXFB7BN8fEEerrmYvHp3fK/rBkRFz9jaJbzK0B1DSfej9Kc7ZzE8Z/OnId1jpJdNAZ3BFQjWG68rcA==", + "dev": true, + "requires": { + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.10.4.tgz", + "integrity": "sha512-L0zGlFrGWZK4PbT8AszSfLTM5sDU1+Az/En9VrdT8/LmEiJt4zXt+Jve9DCAnQcbqDhCI+29y/L93mrDzddCcg==", + "dev": true, + "requires": { + "@babel/helper-explode-assignable-expression": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-compilation-targets": { + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.12.5.tgz", + "integrity": "sha512-+qH6NrscMolUlzOYngSBMIOQpKUGPPsc61Bu5W10mg84LxZ7cmvnBHzARKbDoFxVvqqAbj6Tg6N7bSrWSPXMyw==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.12.5", + "@babel/helper-validator-option": "^7.12.1", + "browserslist": "^4.14.5", + "semver": "^5.5.0" + } + }, + "@babel/helper-create-class-features-plugin": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.12.1.tgz", + "integrity": "sha512-hkL++rWeta/OVOBTRJc9a5Azh5mt5WgZUGAKMD8JM141YsE08K//bp1unBBieO6rUKkIPyUE0USQ30jAy3Sk1w==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-member-expression-to-functions": "^7.12.1", + "@babel/helper-optimise-call-expression": "^7.10.4", + "@babel/helper-replace-supers": "^7.12.1", + "@babel/helper-split-export-declaration": "^7.10.4" + } + }, + "@babel/helper-create-regexp-features-plugin": { + "version": "7.12.7", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.12.7.tgz", + "integrity": "sha512-idnutvQPdpbduutvi3JVfEgcVIHooQnhvhx0Nk9isOINOIGYkZea1Pk2JlJRiUnMefrlvr0vkByATBY/mB4vjQ==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.10.4", + "regexpu-core": "^4.7.1" + } + }, + "@babel/helper-define-map": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.10.5.tgz", + "integrity": "sha512-fMw4kgFB720aQFXSVaXr79pjjcW5puTCM16+rECJ/plGS+zByelE8l9nCpV1GibxTnFVmUuYG9U8wYfQHdzOEQ==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.10.4", + "@babel/types": "^7.10.5", + "lodash": "^4.17.19" + } + }, + "@babel/helper-explode-assignable-expression": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.12.1.tgz", + "integrity": "sha512-dmUwH8XmlrUpVqgtZ737tK88v07l840z9j3OEhCLwKTkjlvKpfqXVIZ0wpK3aeOxspwGrf/5AP5qLx4rO3w5rA==", + "dev": true, + "requires": { + "@babel/types": "^7.12.1" + } + }, + "@babel/helper-function-name": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.10.4.tgz", + "integrity": "sha512-YdaSyz1n8gY44EmN7x44zBn9zQ1Ry2Y+3GTA+3vH6Mizke1Vw0aWDM66FOYEPw8//qKkmqOckrGgTYa+6sceqQ==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.4.tgz", + "integrity": "sha512-EkN3YDB+SRDgiIUnNgcmiD361ti+AVbL3f3Henf6dqqUyr5dMsorno0lJWJuLhDhkI5sYEpgj6y9kB8AOU1I2A==", + "dev": true, + "requires": { + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-hoist-variables": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.10.4.tgz", + "integrity": "sha512-wljroF5PgCk2juF69kanHVs6vrLwIPNp6DLD+Lrl3hoQ3PpPPikaDRNFA+0t81NOoMt2DL6WW/mdU8k4k6ZzuA==", + "dev": true, + "requires": { + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.12.7", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.12.7.tgz", + "integrity": "sha512-DCsuPyeWxeHgh1Dus7APn7iza42i/qXqiFPWyBDdOFtvS581JQePsc1F/nD+fHrcswhLlRc2UpYS1NwERxZhHw==", + "dev": true, + "requires": { + "@babel/types": "^7.12.7" + } + }, + "@babel/helper-module-imports": { + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.12.5.tgz", + "integrity": "sha512-SR713Ogqg6++uexFRORf/+nPXMmWIn80TALu0uaFb+iQIUoR7bOC7zBWyzBs5b3tBBJXuyD0cRu1F15GyzjOWA==", + "dev": true, + "requires": { + "@babel/types": "^7.12.5" + } + }, + "@babel/helper-module-transforms": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.12.1.tgz", + "integrity": "sha512-QQzehgFAZ2bbISiCpmVGfiGux8YVFXQ0abBic2Envhej22DVXV9nCFaS5hIQbkyo1AdGb+gNME2TSh3hYJVV/w==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.12.1", + "@babel/helper-replace-supers": "^7.12.1", + "@babel/helper-simple-access": "^7.12.1", + "@babel/helper-split-export-declaration": "^7.11.0", + "@babel/helper-validator-identifier": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.12.1", + "@babel/types": "^7.12.1", + "lodash": "^4.17.19" + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.12.7", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.7.tgz", + "integrity": "sha512-I5xc9oSJ2h59OwyUqjv95HRyzxj53DAubUERgQMrpcCEYQyToeHA+NEcUEsVWB4j53RDeskeBJ0SgRAYHDBckw==", + "dev": true, + "requires": { + "@babel/types": "^7.12.7" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", + "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==", + "dev": true + }, + "@babel/helper-remap-async-to-generator": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.12.1.tgz", + "integrity": "sha512-9d0KQCRM8clMPcDwo8SevNs+/9a8yWVVmaE80FGJcEP8N1qToREmWEGnBn8BUlJhYRFz6fqxeRL1sl5Ogsed7A==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/helper-wrap-function": "^7.10.4", + "@babel/types": "^7.12.1" + } + }, + "@babel/helper-replace-supers": { + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.12.5.tgz", + "integrity": "sha512-5YILoed0ZyIpF4gKcpZitEnXEJ9UoDRki1Ey6xz46rxOzfNMAhVIJMoune1hmPVxh40LRv1+oafz7UsWX+vyWA==", + "dev": true, + "requires": { + "@babel/helper-member-expression-to-functions": "^7.12.1", + "@babel/helper-optimise-call-expression": "^7.10.4", + "@babel/traverse": "^7.12.5", + "@babel/types": "^7.12.5" + } + }, + "@babel/helper-simple-access": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.12.1.tgz", + "integrity": "sha512-OxBp7pMrjVewSSC8fXDFrHrBcJATOOFssZwv16F3/6Xtc138GHybBfPbm9kfiqQHKhYQrlamWILwlDCeyMFEaA==", + "dev": true, + "requires": { + "@babel/types": "^7.12.1" + } + }, + "@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.12.1.tgz", + "integrity": "sha512-Mf5AUuhG1/OCChOJ/HcADmvcHM42WJockombn8ATJG3OnyiSxBK/Mm5x78BQWvmtXZKHgbjdGL2kin/HOLlZGA==", + "dev": true, + "requires": { + "@babel/types": "^7.12.1" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.11.0.tgz", + "integrity": "sha512-74Vejvp6mHkGE+m+k5vHY93FX2cAtrw1zXrZXRlG4l410Nm9PxfEiVTn1PjDPV5SnmieiueY4AFg2xqhNFuuZg==", + "dev": true, + "requires": { + "@babel/types": "^7.11.0" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/helper-validator-option": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.12.1.tgz", + "integrity": "sha512-YpJabsXlJVWP0USHjnC/AQDTLlZERbON577YUVO/wLpqyj6HAtVYnWaQaN0iUN+1/tWn3c+uKKXjRut5115Y2A==", + "dev": true + }, + "@babel/helper-wrap-function": { + "version": "7.12.3", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.12.3.tgz", + "integrity": "sha512-Cvb8IuJDln3rs6tzjW3Y8UeelAOdnpB8xtQ4sme2MSZ9wOxrbThporC0y/EtE16VAtoyEfLM404Xr1e0OOp+ow==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "@babel/helpers": { + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.12.5.tgz", + "integrity": "sha512-lgKGMQlKqA8meJqKsW6rUnc4MdUk35Ln0ATDqdM1a/UpARODdI4j5Y5lVfUScnSNkJcdCRAaWkspykNoFg9sJA==", + "dev": true, + "requires": { + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.12.5", + "@babel/types": "^7.12.5" + } + }, + "@babel/highlight": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", + "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.12.7", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.12.7.tgz", + "integrity": "sha512-oWR02Ubp4xTLCAqPRiNIuMVgNO5Aif/xpXtabhzW2HWUD47XJsAB4Zd/Rg30+XeQA3juXigV7hlquOTmwqLiwg==", + "dev": true + }, + "@babel/plugin-proposal-async-generator-functions": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.12.1.tgz", + "integrity": "sha512-d+/o30tJxFxrA1lhzJqiUcEJdI6jKlNregCv5bASeGf2Q4MXmnwH7viDo7nhx1/ohf09oaH8j1GVYG/e3Yqk6A==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-remap-async-to-generator": "^7.12.1", + "@babel/plugin-syntax-async-generators": "^7.8.0" + } + }, + "@babel/plugin-proposal-class-properties": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.12.1.tgz", + "integrity": "sha512-cKp3dlQsFsEs5CWKnN7BnSHOd0EOW8EKpEjkoz1pO2E5KzIDNV9Ros1b0CnmbVgAGXJubOYVBOGCT1OmJwOI7w==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-proposal-decorators": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.12.1.tgz", + "integrity": "sha512-knNIuusychgYN8fGJHONL0RbFxLGawhXOJNLBk75TniTsZZeA+wdkDuv6wp4lGwzQEKjZi6/WYtnb3udNPmQmQ==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-decorators": "^7.12.1" + } + }, + "@babel/plugin-proposal-dynamic-import": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.12.1.tgz", + "integrity": "sha512-a4rhUSZFuq5W8/OO8H7BL5zspjnc1FLd9hlOxIK/f7qG4a0qsqk8uvF/ywgBA8/OmjsapjpvaEOYItfGG1qIvQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-dynamic-import": "^7.8.0" + } + }, + "@babel/plugin-proposal-export-namespace-from": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.12.1.tgz", + "integrity": "sha512-6CThGf0irEkzujYS5LQcjBx8j/4aQGiVv7J9+2f7pGfxqyKh3WnmVJYW3hdrQjyksErMGBPQrCnHfOtna+WLbw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + } + }, + "@babel/plugin-proposal-json-strings": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.12.1.tgz", + "integrity": "sha512-GoLDUi6U9ZLzlSda2Df++VSqDJg3CG+dR0+iWsv6XRw1rEq+zwt4DirM9yrxW6XWaTpmai1cWJLMfM8qQJf+yw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-json-strings": "^7.8.0" + } + }, + "@babel/plugin-proposal-logical-assignment-operators": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.12.1.tgz", + "integrity": "sha512-k8ZmVv0JU+4gcUGeCDZOGd0lCIamU/sMtIiX3UWnUc5yzgq6YUGyEolNYD+MLYKfSzgECPcqetVcJP9Afe/aCA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + } + }, + "@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.12.1.tgz", + "integrity": "sha512-nZY0ESiaQDI1y96+jk6VxMOaL4LPo/QDHBqL+SF3/vl6dHkTwHlOI8L4ZwuRBHgakRBw5zsVylel7QPbbGuYgg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0" + } + }, + "@babel/plugin-proposal-numeric-separator": { + "version": "7.12.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.12.7.tgz", + "integrity": "sha512-8c+uy0qmnRTeukiGsjLGy6uVs/TFjJchGXUeBqlG4VWYOdJWkhhVPdQ3uHwbmalfJwv2JsV0qffXP4asRfL2SQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + } + }, + "@babel/plugin-proposal-object-rest-spread": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.12.1.tgz", + "integrity": "sha512-s6SowJIjzlhx8o7lsFx5zmY4At6CTtDvgNQDdPzkBQucle58A6b/TTeEBYtyDgmcXjUTM+vE8YOGHZzzbc/ioA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.0", + "@babel/plugin-transform-parameters": "^7.12.1" + } + }, + "@babel/plugin-proposal-optional-catch-binding": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.12.1.tgz", + "integrity": "sha512-hFvIjgprh9mMw5v42sJWLI1lzU5L2sznP805zeT6rySVRA0Y18StRhDqhSxlap0oVgItRsB6WSROp4YnJTJz0g==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.0" + } + }, + "@babel/plugin-proposal-optional-chaining": { + "version": "7.12.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.12.7.tgz", + "integrity": "sha512-4ovylXZ0PWmwoOvhU2vhnzVNnm88/Sm9nx7V8BPgMvAzn5zDou3/Awy0EjglyubVHasJj+XCEkr/r1X3P5elCA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", + "@babel/plugin-syntax-optional-chaining": "^7.8.0" + } + }, + "@babel/plugin-proposal-private-methods": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.12.1.tgz", + "integrity": "sha512-mwZ1phvH7/NHK6Kf8LP7MYDogGV+DKB1mryFOEwx5EBNQrosvIczzZFTUmWaeujd5xT6G1ELYWUz3CutMhjE1w==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-proposal-unicode-property-regex": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.12.1.tgz", + "integrity": "sha512-MYq+l+PvHuw/rKUz1at/vb6nCnQ2gmJBNaM62z0OgH7B2W1D9pvkpYtlti9bGtizNIU1K3zm4bZF9F91efVY0w==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-class-properties": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.1.tgz", + "integrity": "sha512-U40A76x5gTwmESz+qiqssqmeEsKvcSyvtgktrm0uzcARAmM9I1jR221f6Oq+GmHrcD+LvZDag1UTOTe2fL3TeA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-decorators": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.12.1.tgz", + "integrity": "sha512-ir9YW5daRrTYiy9UJ2TzdNIJEZu8KclVzDcfSt4iEmOtwQ4llPtWInNKJyKnVXp1vE4bbVd5S31M/im3mYMO1w==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", + "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-jsx": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.12.1.tgz", + "integrity": "sha512-1yRi7yAtB0ETgxdY9ti/p2TivUxJkTdhu/ZbF9MshVGqOx1TdB3b7xCXs49Fupgg50N45KcAsRP/ZqWjs9SRjg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-top-level-await": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.1.tgz", + "integrity": "sha512-i7ooMZFS+a/Om0crxZodrTzNEPJHZrlMVGMTEpFAj6rYY/bKCddB0Dk/YxfPuYXOopuhKk/e1jV6h+WUU9XN3A==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-arrow-functions": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.12.1.tgz", + "integrity": "sha512-5QB50qyN44fzzz4/qxDPQMBCTHgxg3n0xRBLJUmBlLoU/sFvxVWGZF/ZUfMVDQuJUKXaBhbupxIzIfZ6Fwk/0A==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-async-to-generator": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.12.1.tgz", + "integrity": "sha512-SDtqoEcarK1DFlRJ1hHRY5HvJUj5kX4qmtpMAm2QnhOlyuMC4TMdCRgW6WXpv93rZeYNeLP22y8Aq2dbcDRM1A==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-remap-async-to-generator": "^7.12.1" + } + }, + "@babel/plugin-transform-block-scoped-functions": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.12.1.tgz", + "integrity": "sha512-5OpxfuYnSgPalRpo8EWGPzIYf0lHBWORCkj5M0oLBwHdlux9Ri36QqGW3/LR13RSVOAoUUMzoPI/jpE4ABcHoA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-block-scoping": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.1.tgz", + "integrity": "sha512-zJyAC9sZdE60r1nVQHblcfCj29Dh2Y0DOvlMkcqSo0ckqjiCwNiUezUKw+RjOCwGfpLRwnAeQ2XlLpsnGkvv9w==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-classes": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.12.1.tgz", + "integrity": "sha512-/74xkA7bVdzQTBeSUhLLJgYIcxw/dpEpCdRDiHgPJ3Mv6uC11UhjpOhl72CgqbBCmt1qtssCyB2xnJm1+PFjog==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/helper-define-map": "^7.10.4", + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-optimise-call-expression": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-replace-supers": "^7.12.1", + "@babel/helper-split-export-declaration": "^7.10.4", + "globals": "^11.1.0" + } + }, + "@babel/plugin-transform-computed-properties": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.12.1.tgz", + "integrity": "sha512-vVUOYpPWB7BkgUWPo4C44mUQHpTZXakEqFjbv8rQMg7TC6S6ZhGZ3otQcRH6u7+adSlE5i0sp63eMC/XGffrzg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-destructuring": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.12.1.tgz", + "integrity": "sha512-fRMYFKuzi/rSiYb2uRLiUENJOKq4Gnl+6qOv5f8z0TZXg3llUwUhsNNwrwaT/6dUhJTzNpBr+CUvEWBtfNY1cw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-dotall-regex": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.12.1.tgz", + "integrity": "sha512-B2pXeRKoLszfEW7J4Hg9LoFaWEbr/kzo3teWHmtFCszjRNa/b40f9mfeqZsIDLLt/FjwQ6pz/Gdlwy85xNckBA==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-duplicate-keys": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.12.1.tgz", + "integrity": "sha512-iRght0T0HztAb/CazveUpUQrZY+aGKKaWXMJ4uf9YJtqxSUe09j3wteztCUDRHs+SRAL7yMuFqUsLoAKKzgXjw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-exponentiation-operator": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.12.1.tgz", + "integrity": "sha512-7tqwy2bv48q+c1EHbXK0Zx3KXd2RVQp6OC7PbwFNt/dPTAV3Lu5sWtWuAj8owr5wqtWnqHfl2/mJlUmqkChKug==", + "dev": true, + "requires": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-for-of": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.12.1.tgz", + "integrity": "sha512-Zaeq10naAsuHo7heQvyV0ptj4dlZJwZgNAtBYBnu5nNKJoW62m0zKcIEyVECrUKErkUkg6ajMy4ZfnVZciSBhg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-function-name": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.12.1.tgz", + "integrity": "sha512-JF3UgJUILoFrFMEnOJLJkRHSk6LUSXLmEFsA23aR2O5CSLUxbeUX1IZ1YQ7Sn0aXb601Ncwjx73a+FVqgcljVw==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-literals": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.12.1.tgz", + "integrity": "sha512-+PxVGA+2Ag6uGgL0A5f+9rklOnnMccwEBzwYFL3EUaKuiyVnUipyXncFcfjSkbimLrODoqki1U9XxZzTvfN7IQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-member-expression-literals": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.12.1.tgz", + "integrity": "sha512-1sxePl6z9ad0gFMB9KqmYofk34flq62aqMt9NqliS/7hPEpURUCMbyHXrMPlo282iY7nAvUB1aQd5mg79UD9Jg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-modules-amd": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.12.1.tgz", + "integrity": "sha512-tDW8hMkzad5oDtzsB70HIQQRBiTKrhfgwC/KkJeGsaNFTdWhKNt/BiE8c5yj19XiGyrxpbkOfH87qkNg1YGlOQ==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-commonjs": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.12.1.tgz", + "integrity": "sha512-dY789wq6l0uLY8py9c1B48V8mVL5gZh/+PQ5ZPrylPYsnAvnEMjqsUXkuoDVPeVK+0VyGar+D08107LzDQ6pag==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-simple-access": "^7.12.1", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-systemjs": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.12.1.tgz", + "integrity": "sha512-Hn7cVvOavVh8yvW6fLwveFqSnd7rbQN3zJvoPNyNaQSvgfKmDBO9U1YL9+PCXGRlZD9tNdWTy5ACKqMuzyn32Q==", + "dev": true, + "requires": { + "@babel/helper-hoist-variables": "^7.10.4", + "@babel/helper-module-transforms": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-validator-identifier": "^7.10.4", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-umd": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.12.1.tgz", + "integrity": "sha512-aEIubCS0KHKM0zUos5fIoQm+AZUMt1ZvMpqz0/H5qAQ7vWylr9+PLYurT+Ic7ID/bKLd4q8hDovaG3Zch2uz5Q==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.12.1.tgz", + "integrity": "sha512-tB43uQ62RHcoDp9v2Nsf+dSM8sbNodbEicbQNA53zHz8pWUhsgHSJCGpt7daXxRydjb0KnfmB+ChXOv3oADp1Q==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.12.1" + } + }, + "@babel/plugin-transform-new-target": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.12.1.tgz", + "integrity": "sha512-+eW/VLcUL5L9IvJH7rT1sT0CzkdUTvPrXC2PXTn/7z7tXLBuKvezYbGdxD5WMRoyvyaujOq2fWoKl869heKjhw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-object-super": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.12.1.tgz", + "integrity": "sha512-AvypiGJH9hsquNUn+RXVcBdeE3KHPZexWRdimhuV59cSoOt5kFBmqlByorAeUlGG2CJWd0U+4ZtNKga/TB0cAw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-replace-supers": "^7.12.1" + } + }, + "@babel/plugin-transform-parameters": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.12.1.tgz", + "integrity": "sha512-xq9C5EQhdPK23ZeCdMxl8bbRnAgHFrw5EOC3KJUsSylZqdkCaFEXxGSBuTSObOpiiHHNyb82es8M1QYgfQGfNg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-property-literals": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.12.1.tgz", + "integrity": "sha512-6MTCR/mZ1MQS+AwZLplX4cEySjCpnIF26ToWo942nqn8hXSm7McaHQNeGx/pt7suI1TWOWMfa/NgBhiqSnX0cQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-regenerator": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.12.1.tgz", + "integrity": "sha512-gYrHqs5itw6i4PflFX3OdBPMQdPbF4bj2REIUxlMRUFk0/ZOAIpDFuViuxPjUL7YC8UPnf+XG7/utJvqXdPKng==", + "dev": true, + "requires": { + "regenerator-transform": "^0.14.2" + } + }, + "@babel/plugin-transform-reserved-words": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.12.1.tgz", + "integrity": "sha512-pOnUfhyPKvZpVyBHhSBoX8vfA09b7r00Pmm1sH+29ae2hMTKVmSp4Ztsr8KBKjLjx17H0eJqaRC3bR2iThM54A==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-runtime": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.12.1.tgz", + "integrity": "sha512-Ac/H6G9FEIkS2tXsZjL4RAdS3L3WHxci0usAnz7laPWUmFiGtj7tIASChqKZMHTSQTQY6xDbOq+V1/vIq3QrWg==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4", + "resolve": "^1.8.1", + "semver": "^5.5.1" + } + }, + "@babel/plugin-transform-shorthand-properties": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.12.1.tgz", + "integrity": "sha512-GFZS3c/MhX1OusqB1MZ1ct2xRzX5ppQh2JU1h2Pnfk88HtFTM+TWQqJNfwkmxtPQtb/s1tk87oENfXJlx7rSDw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-spread": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.12.1.tgz", + "integrity": "sha512-vuLp8CP0BE18zVYjsEBZ5xoCecMK6LBMMxYzJnh01rxQRvhNhH1csMMmBfNo5tGpGO+NhdSNW2mzIvBu3K1fng==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1" + } + }, + "@babel/plugin-transform-sticky-regex": { + "version": "7.12.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.12.7.tgz", + "integrity": "sha512-VEiqZL5N/QvDbdjfYQBhruN0HYjSPjC4XkeqW4ny/jNtH9gcbgaqBIXYEZCNnESMAGs0/K/R7oFGMhOyu/eIxg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-template-literals": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.12.1.tgz", + "integrity": "sha512-b4Zx3KHi+taXB1dVRBhVJtEPi9h1THCeKmae2qP0YdUHIFhVjtpqqNfxeVAa1xeHVhAy4SbHxEwx5cltAu5apw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-typeof-symbol": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.1.tgz", + "integrity": "sha512-EPGgpGy+O5Kg5pJFNDKuxt9RdmTgj5sgrus2XVeMp/ZIbOESadgILUbm50SNpghOh3/6yrbsH+NB5+WJTmsA7Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-unicode-escapes": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.12.1.tgz", + "integrity": "sha512-I8gNHJLIc7GdApm7wkVnStWssPNbSRMPtgHdmH3sRM1zopz09UWPS4x5V4n1yz/MIWTVnJ9sp6IkuXdWM4w+2Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-unicode-regex": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.12.1.tgz", + "integrity": "sha512-SqH4ClNngh/zGwHZOOQMTD+e8FGWexILV+ePMyiDJttAWRh5dhDL8rcl5lSgU3Huiq6Zn6pWTMvdPAb21Dwdyg==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/preset-env": { + "version": "7.12.7", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.12.7.tgz", + "integrity": "sha512-OnNdfAr1FUQg7ksb7bmbKoby4qFOHw6DKWWUNB9KqnnCldxhxJlP+21dpyaWFmf2h0rTbOkXJtAGevY3XW1eew==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.12.7", + "@babel/helper-compilation-targets": "^7.12.5", + "@babel/helper-module-imports": "^7.12.5", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-validator-option": "^7.12.1", + "@babel/plugin-proposal-async-generator-functions": "^7.12.1", + "@babel/plugin-proposal-class-properties": "^7.12.1", + "@babel/plugin-proposal-dynamic-import": "^7.12.1", + "@babel/plugin-proposal-export-namespace-from": "^7.12.1", + "@babel/plugin-proposal-json-strings": "^7.12.1", + "@babel/plugin-proposal-logical-assignment-operators": "^7.12.1", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.12.1", + "@babel/plugin-proposal-numeric-separator": "^7.12.7", + "@babel/plugin-proposal-object-rest-spread": "^7.12.1", + "@babel/plugin-proposal-optional-catch-binding": "^7.12.1", + "@babel/plugin-proposal-optional-chaining": "^7.12.7", + "@babel/plugin-proposal-private-methods": "^7.12.1", + "@babel/plugin-proposal-unicode-property-regex": "^7.12.1", + "@babel/plugin-syntax-async-generators": "^7.8.0", + "@babel/plugin-syntax-class-properties": "^7.12.1", + "@babel/plugin-syntax-dynamic-import": "^7.8.0", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.0", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.0", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.0", + "@babel/plugin-syntax-optional-chaining": "^7.8.0", + "@babel/plugin-syntax-top-level-await": "^7.12.1", + "@babel/plugin-transform-arrow-functions": "^7.12.1", + "@babel/plugin-transform-async-to-generator": "^7.12.1", + "@babel/plugin-transform-block-scoped-functions": "^7.12.1", + "@babel/plugin-transform-block-scoping": "^7.12.1", + "@babel/plugin-transform-classes": "^7.12.1", + "@babel/plugin-transform-computed-properties": "^7.12.1", + "@babel/plugin-transform-destructuring": "^7.12.1", + "@babel/plugin-transform-dotall-regex": "^7.12.1", + "@babel/plugin-transform-duplicate-keys": "^7.12.1", + "@babel/plugin-transform-exponentiation-operator": "^7.12.1", + "@babel/plugin-transform-for-of": "^7.12.1", + "@babel/plugin-transform-function-name": "^7.12.1", + "@babel/plugin-transform-literals": "^7.12.1", + "@babel/plugin-transform-member-expression-literals": "^7.12.1", + "@babel/plugin-transform-modules-amd": "^7.12.1", + "@babel/plugin-transform-modules-commonjs": "^7.12.1", + "@babel/plugin-transform-modules-systemjs": "^7.12.1", + "@babel/plugin-transform-modules-umd": "^7.12.1", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.12.1", + "@babel/plugin-transform-new-target": "^7.12.1", + "@babel/plugin-transform-object-super": "^7.12.1", + "@babel/plugin-transform-parameters": "^7.12.1", + "@babel/plugin-transform-property-literals": "^7.12.1", + "@babel/plugin-transform-regenerator": "^7.12.1", + "@babel/plugin-transform-reserved-words": "^7.12.1", + "@babel/plugin-transform-shorthand-properties": "^7.12.1", + "@babel/plugin-transform-spread": "^7.12.1", + "@babel/plugin-transform-sticky-regex": "^7.12.7", + "@babel/plugin-transform-template-literals": "^7.12.1", + "@babel/plugin-transform-typeof-symbol": "^7.12.1", + "@babel/plugin-transform-unicode-escapes": "^7.12.1", + "@babel/plugin-transform-unicode-regex": "^7.12.1", + "@babel/preset-modules": "^0.1.3", + "@babel/types": "^7.12.7", + "core-js-compat": "^3.7.0", + "semver": "^5.5.0" + } + }, + "@babel/preset-modules": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.4.tgz", + "integrity": "sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", + "@babel/plugin-transform-dotall-regex": "^7.4.4", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + } + }, + "@babel/runtime": { + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.12.5.tgz", + "integrity": "sha512-plcc+hbExy3McchJCEQG3knOsuh3HH+Prx1P6cLIkET/0dLuQDEnrT+s27Axgc9bqfsmNUNHfscgMUdBpC9xfg==", + "dev": true, + "requires": { + "regenerator-runtime": "^0.13.4" + } + }, + "@babel/template": { + "version": "7.12.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.12.7.tgz", + "integrity": "sha512-GkDzmHS6GV7ZeXfJZ0tLRBhZcMcY0/Lnb+eEbXDBfCAcZCjrZKe6p3J4we/D24O9Y8enxWAg1cWwof59yLh2ow==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.10.4", + "@babel/parser": "^7.12.7", + "@babel/types": "^7.12.7" + } + }, + "@babel/traverse": { + "version": "7.12.9", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.12.9.tgz", + "integrity": "sha512-iX9ajqnLdoU1s1nHt36JDI9KG4k+vmI8WgjK5d+aDTwQbL2fUnzedNedssA645Ede3PM2ma1n8Q4h2ohwXgMXw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.10.4", + "@babel/generator": "^7.12.5", + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-split-export-declaration": "^7.11.0", + "@babel/parser": "^7.12.7", + "@babel/types": "^7.12.7", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.19" + } + }, + "@babel/types": { + "version": "7.12.7", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.7.tgz", + "integrity": "sha512-MNyI92qZq6jrQkXvtIiykvl4WtoRrVV9MPn+ZfsoEENjiWcBQ3ZSHrkxnJWgWtLX3XXqX5hrSQ+X69wkmesXuQ==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "@fortawesome/fontawesome-common-types": { + "version": "0.2.32", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-0.2.32.tgz", + "integrity": "sha512-ux2EDjKMpcdHBVLi/eWZynnPxs0BtFVXJkgHIxXRl+9ZFaHPvYamAfCzeeQFqHRjuJtX90wVnMRaMQAAlctz3w==" + }, + "@fortawesome/fontawesome-svg-core": { + "version": "1.2.32", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-1.2.32.tgz", + "integrity": "sha512-XjqyeLCsR/c/usUpdWcOdVtWFVjPbDFBTQkn2fQRrWhhUoxriQohO2RWDxLyUM8XpD+Zzg5xwJ8gqTYGDLeGaQ==", + "requires": { + "@fortawesome/fontawesome-common-types": "^0.2.32" + } + }, + "@fortawesome/free-brands-svg-icons": { + "version": "5.15.1", + "resolved": "https://registry.npmjs.org/@fortawesome/free-brands-svg-icons/-/free-brands-svg-icons-5.15.1.tgz", + "integrity": "sha512-pkTZIWn7iuliCCgV+huDfZmZb2UjslalXGDA2PcqOVUYJmYL11y6ooFiMJkJvUZu+xgAc1gZgQe+Px12mZF0CA==", + "requires": { + "@fortawesome/fontawesome-common-types": "^0.2.32" + } + }, + "@fortawesome/free-solid-svg-icons": { + "version": "5.15.1", + "resolved": "https://registry.npmjs.org/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-5.15.1.tgz", + "integrity": "sha512-EFMuKtzRMNbvjab/SvJBaOOpaqJfdSap/Nl6hst7CgrJxwfORR1drdTV6q1Ib/JVzq4xObdTDcT6sqTaXMqfdg==", + "requires": { + "@fortawesome/fontawesome-common-types": "^0.2.32" + } + }, + "@fortawesome/vue-fontawesome": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@fortawesome/vue-fontawesome/-/vue-fontawesome-2.0.0.tgz", + "integrity": "sha512-N3VKw7KzRfOm8hShUVldpinlm13HpvLBQgT63QS+aCrIRLwjoEUXY5Rcmttbfb6HkzZaeqjLqd/aZCQ53UjQpg==" + }, + "@hapi/address": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@hapi/address/-/address-2.1.4.tgz", + "integrity": "sha512-QD1PhQk+s31P1ixsX0H0Suoupp3VMXzIVMSwobR3F3MSUO2YCV0B7xqLcUw/Bh8yuvd3LhpyqLQWTNcRmp6IdQ==", + "dev": true + }, + "@hapi/bourne": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@hapi/bourne/-/bourne-1.3.2.tgz", + "integrity": "sha512-1dVNHT76Uu5N3eJNTYcvxee+jzX4Z9lfciqRRHCU27ihbUcYi+iSc2iml5Ke1LXe1SyJCLA0+14Jh4tXJgOppA==", + "dev": true + }, + "@hapi/hoek": { + "version": "8.5.1", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-8.5.1.tgz", + "integrity": "sha512-yN7kbciD87WzLGc5539Tn0sApjyiGHAJgKvG9W8C7O+6c7qmoQMfVs0W4bX17eqz6C78QJqqFrtgdK5EWf6Qow==", + "dev": true + }, + "@hapi/joi": { + "version": "15.1.1", + "resolved": "https://registry.npmjs.org/@hapi/joi/-/joi-15.1.1.tgz", + "integrity": "sha512-entf8ZMOK8sc+8YfeOlM8pCfg3b5+WZIKBfUaaJT8UsjAAPjartzxIYm3TIbjvA4u+u++KbcXD38k682nVHDAQ==", + "dev": true, + "requires": { + "@hapi/address": "2.x.x", + "@hapi/bourne": "1.x.x", + "@hapi/hoek": "8.x.x", + "@hapi/topo": "3.x.x" + } + }, + "@hapi/topo": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-3.1.6.tgz", + "integrity": "sha512-tAag0jEcjwH+P2quUfipd7liWCNX2F8NvYjQp2wtInsZxnMlypdw0FtAOLxtvvkO+GSRRbmNi8m/5y42PQJYCQ==", + "dev": true, + "requires": { + "@hapi/hoek": "^8.3.0" + } + }, + "@intervolga/optimize-cssnano-plugin": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@intervolga/optimize-cssnano-plugin/-/optimize-cssnano-plugin-1.0.6.tgz", + "integrity": "sha512-zN69TnSr0viRSU6cEDIcuPcP67QcpQ6uHACg58FiN9PDrU6SLyGW3MR4tiISbYxy1kDWAVPwD+XwQTWE5cigAA==", + "dev": true, + "requires": { + "cssnano": "^4.0.0", + "cssnano-preset-default": "^4.0.0", + "postcss": "^7.0.0" + } + }, + "@mrmlnc/readdir-enhanced": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz", + "integrity": "sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==", + "dev": true, + "requires": { + "call-me-maybe": "^1.0.1", + "glob-to-regexp": "^0.3.0" + } + }, + "@nodelib/fs.stat": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz", + "integrity": "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==", + "dev": true + }, + "@nuxt/opencollective": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@nuxt/opencollective/-/opencollective-0.3.2.tgz", + "integrity": "sha512-XG7rUdXG9fcafu9KTDIYjJSkRO38EwjlKYIb5TQ/0WDbiTUTtUtgncMscKOYzfsY86kGs05pAuMOR+3Fi0aN3A==", + "requires": { + "chalk": "^4.1.0", + "consola": "^2.15.0", + "node-fetch": "^2.6.1" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "@soda/friendly-errors-webpack-plugin": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/@soda/friendly-errors-webpack-plugin/-/friendly-errors-webpack-plugin-1.7.1.tgz", + "integrity": "sha512-cWKrGaFX+rfbMrAxVv56DzhPNqOJPZuNIS2HGMELtgGzb+vsMzyig9mml5gZ/hr2BGtSLV+dP2LUEuAL8aG2mQ==", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "error-stack-parser": "^2.0.0", + "string-width": "^2.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "@soda/get-current-script": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@soda/get-current-script/-/get-current-script-1.0.2.tgz", + "integrity": "sha512-T7VNNlYVM1SgQ+VsMYhnDkcGmWhQdL0bDyGm5TlQ3GBXnJscEClUUOKduWTmm2zCnvNLC1hc3JpuXjs/nFOc5w==", + "dev": true + }, + "@types/anymatch": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@types/anymatch/-/anymatch-1.3.1.tgz", + "integrity": "sha512-/+CRPXpBDpo2RK9C68N3b2cOvO0Cf5B9aPijHsoDQTHivnGSObdOF2BRQOYjojWTDy6nQvMjmqRXIxH55VjxxA==", + "dev": true + }, + "@types/body-parser": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.0.tgz", + "integrity": "sha512-W98JrE0j2K78swW4ukqMleo8R7h/pFETjM2DQ90MF6XK2i4LO4W3gQ71Lt4w3bfm2EvVSyWHplECvB5sK22yFQ==", + "requires": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "@types/component-emitter": { + "version": "1.2.10", + "resolved": "https://registry.npmjs.org/@types/component-emitter/-/component-emitter-1.2.10.tgz", + "integrity": "sha512-bsjleuRKWmGqajMerkzox19aGbscQX5rmmvvXl3wlIp5gMG1HgkiwPxsN5p070fBDKTNSPgojVbuY1+HWMbFhg==" + }, + "@types/connect": { + "version": "3.4.33", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.33.tgz", + "integrity": "sha512-2+FrkXY4zllzTNfJth7jOqEHC+enpLeGslEhpnTAkg21GkRrWV4SsAtqchtT4YS9/nODBU2/ZfsBY2X4J/dX7A==", + "requires": { + "@types/node": "*" + } + }, + "@types/connect-history-api-fallback": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.3.3.tgz", + "integrity": "sha512-7SxFCd+FLlxCfwVwbyPxbR4khL9aNikJhrorw8nUIOqeuooc9gifBuDQOJw5kzN7i6i3vLn9G8Wde/4QDihpYw==", + "dev": true, + "requires": { + "@types/express-serve-static-core": "*", + "@types/node": "*" + } + }, + "@types/cookie": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.0.tgz", + "integrity": "sha512-y7mImlc/rNkvCRmg8gC3/lj87S7pTUIJ6QGjwHR9WQJcFs+ZMTOaoPrkdFA/YdbuqVEmEbb5RdhVxMkAcgOnpg==" + }, + "@types/cors": { + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.8.tgz", + "integrity": "sha512-fO3gf3DxU2Trcbr75O7obVndW/X5k8rJNZkLXlQWStTHhP71PkRqjwPIEI0yMnJdg9R9OasjU+Bsr+Hr1xy/0w==", + "requires": { + "@types/express": "*" + } + }, + "@types/express": { + "version": "4.17.9", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.9.tgz", + "integrity": "sha512-SDzEIZInC4sivGIFY4Sz1GG6J9UObPwCInYJjko2jzOf/Imx/dlpume6Xxwj1ORL82tBbmN4cPDIDkLbWHk9hw==", + "requires": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "*", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "@types/express-serve-static-core": { + "version": "4.17.14", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.14.tgz", + "integrity": "sha512-uFTLwu94TfUFMToXNgRZikwPuZdOtDgs3syBtAIr/OXorL1kJqUJT9qCLnRZ5KBOWfZQikQ2xKgR2tnDj1OgDA==", + "requires": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*" + } + }, + "@types/glob": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.3.tgz", + "integrity": "sha512-SEYeGAIQIQX8NN6LDKprLjbrd5dARM5EXsd8GI/A5l0apYI1fGMWgPHSe4ZKL4eozlAyI+doUE9XbYS4xCkQ1w==", + "dev": true, + "requires": { + "@types/minimatch": "*", + "@types/node": "*" + } + }, + "@types/http-proxy": { + "version": "1.17.4", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.4.tgz", + "integrity": "sha512-IrSHl2u6AWXduUaDLqYpt45tLVCtYv7o4Z0s1KghBCDgIIS9oW5K1H8mZG/A2CfeLdEa7rTd1ACOiHBc1EMT2Q==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/http-proxy-middleware": { + "version": "0.19.3", + "resolved": "https://registry.npmjs.org/@types/http-proxy-middleware/-/http-proxy-middleware-0.19.3.tgz", + "integrity": "sha512-lnBTx6HCOUeIJMLbI/LaL5EmdKLhczJY5oeXZpX/cXE4rRqb3RmV7VcMpiEfYkmTjipv3h7IAyIINe4plEv7cA==", + "dev": true, + "requires": { + "@types/connect": "*", + "@types/http-proxy": "*", + "@types/node": "*" + } + }, + "@types/json-schema": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.6.tgz", + "integrity": "sha512-3c+yGKvVP5Y9TYBEibGNR+kLtijnj7mYrXRg+WpFb2X9xm04g/DXYkfg4hmzJQosc9snFNUPkbYIhu+KAm6jJw==", + "dev": true + }, + "@types/mime": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-2.0.3.tgz", + "integrity": "sha512-Jus9s4CDbqwocc5pOAnh8ShfrnMcPHuJYzVcSUU7lrh8Ni5HuIqX3oilL86p3dlTrk0LzHRCgA/GQ7uNCw6l2Q==" + }, + "@types/minimatch": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz", + "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==", + "dev": true + }, + "@types/minimist": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.1.tgz", + "integrity": "sha512-fZQQafSREFyuZcdWFAExYjBiCL7AUCdgsk80iO0q4yihYYdcIiH28CcuPTGFgLOCC8RlW49GSQxdHwZP+I7CNg==", + "dev": true + }, + "@types/node": { + "version": "14.14.10", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.10.tgz", + "integrity": "sha512-J32dgx2hw8vXrSbu4ZlVhn1Nm3GbeCFNw2FWL8S5QKucHGY0cyNwjdQdO+KMBZ4wpmC7KhLCiNsdk1RFRIYUQQ==" + }, + "@types/normalize-package-data": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz", + "integrity": "sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA==", + "dev": true + }, + "@types/q": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.4.tgz", + "integrity": "sha512-1HcDas8SEj4z1Wc696tH56G8OlRaH/sqZOynNNB+HF0WOeXPaxTtbYzJY2oEfiUxjSKjhCKr+MvR7dCHcEelug==", + "dev": true + }, + "@types/qs": { + "version": "6.9.5", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.5.tgz", + "integrity": "sha512-/JHkVHtx/REVG0VVToGRGH2+23hsYLHdyG+GrvoUGlGAd0ErauXDyvHtRI/7H7mzLm+tBCKA7pfcpkQ1lf58iQ==" + }, + "@types/range-parser": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.3.tgz", + "integrity": "sha512-ewFXqrQHlFsgc09MK5jP5iR7vumV/BYayNC6PgJO2LPe8vrnNFyjQjSppfEngITi0qvfKtzFvgKymGheFM9UOA==" + }, + "@types/serve-static": { + "version": "1.13.8", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.8.tgz", + "integrity": "sha512-MoJhSQreaVoL+/hurAZzIm8wafFR6ajiTM1m4A0kv6AGeVBl4r4pOV8bGFrjjq1sGxDTnCoF8i22o0/aE5XCyA==", + "requires": { + "@types/mime": "*", + "@types/node": "*" + } + }, + "@types/socket.io-client": { + "version": "1.4.34", + "resolved": "https://registry.npmjs.org/@types/socket.io-client/-/socket.io-client-1.4.34.tgz", + "integrity": "sha512-Lzia5OTQFJZJ5R4HsEEldywiiqT9+W2rDbyHJiiTGqOcju89sCsQ8aUXDljY6Ls33wKZZGC0bfMhr/VpOyjtXg==" + }, + "@types/source-list-map": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@types/source-list-map/-/source-list-map-0.1.2.tgz", + "integrity": "sha512-K5K+yml8LTo9bWJI/rECfIPrGgxdpeNbj+d53lwN4QjW1MCwlkhUms+gtdzigTeUyBr09+u8BwOIY3MXvHdcsA==", + "dev": true + }, + "@types/tapable": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@types/tapable/-/tapable-1.0.6.tgz", + "integrity": "sha512-W+bw9ds02rAQaMvaLYxAbJ6cvguW/iJXNT6lTssS1ps6QdrMKttqEAMEG/b5CR8TZl3/L7/lH0ZV5nNR1LXikA==", + "dev": true + }, + "@types/uglify-js": { + "version": "3.11.1", + "resolved": "https://registry.npmjs.org/@types/uglify-js/-/uglify-js-3.11.1.tgz", + "integrity": "sha512-7npvPKV+jINLu1SpSYVWG8KvyJBhBa8tmzMMdDoVc2pWUYHN8KIXlPJhjJ4LT97c4dXJA2SHL/q6ADbDriZN+Q==", + "dev": true, + "requires": { + "source-map": "^0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "@types/webpack": { + "version": "4.41.25", + "resolved": "https://registry.npmjs.org/@types/webpack/-/webpack-4.41.25.tgz", + "integrity": "sha512-cr6kZ+4m9lp86ytQc1jPOJXgINQyz3kLLunZ57jznW+WIAL0JqZbGubQk4GlD42MuQL5JGOABrxdpqqWeovlVQ==", + "dev": true, + "requires": { + "@types/anymatch": "*", + "@types/node": "*", + "@types/tapable": "*", + "@types/uglify-js": "*", + "@types/webpack-sources": "*", + "source-map": "^0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "@types/webpack-dev-server": { + "version": "3.11.1", + "resolved": "https://registry.npmjs.org/@types/webpack-dev-server/-/webpack-dev-server-3.11.1.tgz", + "integrity": "sha512-rIb+LtUkKnh7+oIJm3WiMJONd71Q0lZuqGLcSqhZ5qjN9gV/CNmZe7Bai+brnBPZ/KVYOsr+4bFLiNZwjBicLw==", + "dev": true, + "requires": { + "@types/connect-history-api-fallback": "*", + "@types/express": "*", + "@types/http-proxy-middleware": "*", + "@types/serve-static": "*", + "@types/webpack": "*" + } + }, + "@types/webpack-sources": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@types/webpack-sources/-/webpack-sources-2.0.0.tgz", + "integrity": "sha512-a5kPx98CNFRKQ+wqawroFunvFqv7GHm/3KOI52NY9xWADgc8smu4R6prt4EU/M4QfVjvgBkMqU4fBhw3QfMVkg==", + "dev": true, + "requires": { + "@types/node": "*", + "@types/source-list-map": "*", + "source-map": "^0.7.3" + }, + "dependencies": { + "source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true + } + } + }, + "@vue/babel-helper-vue-jsx-merge-props": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@vue/babel-helper-vue-jsx-merge-props/-/babel-helper-vue-jsx-merge-props-1.2.1.tgz", + "integrity": "sha512-QOi5OW45e2R20VygMSNhyQHvpdUwQZqGPc748JLGCYEy+yp8fNFNdbNIGAgZmi9e+2JHPd6i6idRuqivyicIkA==", + "dev": true + }, + "@vue/babel-helper-vue-transform-on": { + "version": "1.0.0-rc.2", + "resolved": "https://registry.npmjs.org/@vue/babel-helper-vue-transform-on/-/babel-helper-vue-transform-on-1.0.0-rc.2.tgz", + "integrity": "sha512-1+7CwjQ0Kasml6rHoNQUmbISwqLNNfFVBUcZl6QBremUl296ZmLrVQPqJP5pyAAWjZke5bpI1hlj+LVVuT7Jcg==", + "dev": true + }, + "@vue/babel-plugin-jsx": { + "version": "1.0.0-rc.3", + "resolved": "https://registry.npmjs.org/@vue/babel-plugin-jsx/-/babel-plugin-jsx-1.0.0-rc.3.tgz", + "integrity": "sha512-/Ibq0hoKsidnHWPhgRpjcjYhYcHpqEm2fiKVAPO88OXZNHGwaGgS4yXkC6TDEvlZep4mBDo+2S5T81wpbVh90Q==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.0.0", + "@babel/plugin-syntax-jsx": "^7.0.0", + "@babel/traverse": "^7.0.0", + "@babel/types": "^7.0.0", + "@vue/babel-helper-vue-transform-on": "^1.0.0-rc.2", + "camelcase": "^6.0.0", + "html-tags": "^3.1.0", + "svg-tags": "^1.0.0" + } + }, + "@vue/babel-plugin-transform-vue-jsx": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@vue/babel-plugin-transform-vue-jsx/-/babel-plugin-transform-vue-jsx-1.2.1.tgz", + "integrity": "sha512-HJuqwACYehQwh1fNT8f4kyzqlNMpBuUK4rSiSES5D4QsYncv5fxFsLyrxFPG2ksO7t5WP+Vgix6tt6yKClwPzA==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.0.0", + "@babel/plugin-syntax-jsx": "^7.2.0", + "@vue/babel-helper-vue-jsx-merge-props": "^1.2.1", + "html-tags": "^2.0.0", + "lodash.kebabcase": "^4.1.1", + "svg-tags": "^1.0.0" + }, + "dependencies": { + "html-tags": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-2.0.0.tgz", + "integrity": "sha1-ELMKOGCF9Dzt41PMj6fLDe7qZos=", + "dev": true + } + } + }, + "@vue/babel-preset-app": { + "version": "4.5.9", + "resolved": "https://registry.npmjs.org/@vue/babel-preset-app/-/babel-preset-app-4.5.9.tgz", + "integrity": "sha512-d2H4hFnJsGnZtJAAZIbo1dmQJ2SI1MYix1Tc9/etlnJtCDPRHeCNodCSeuLgDwnoAyT3unzyHmTtaO56KRDuOQ==", + "dev": true, + "requires": { + "@babel/core": "^7.11.0", + "@babel/helper-compilation-targets": "^7.9.6", + "@babel/helper-module-imports": "^7.8.3", + "@babel/plugin-proposal-class-properties": "^7.8.3", + "@babel/plugin-proposal-decorators": "^7.8.3", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-jsx": "^7.8.3", + "@babel/plugin-transform-runtime": "^7.11.0", + "@babel/preset-env": "^7.11.0", + "@babel/runtime": "^7.11.0", + "@vue/babel-plugin-jsx": "^1.0.0-0", + "@vue/babel-preset-jsx": "^1.1.2", + "babel-plugin-dynamic-import-node": "^2.3.3", + "core-js": "^3.6.5", + "core-js-compat": "^3.6.5", + "semver": "^6.1.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "@vue/babel-preset-jsx": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@vue/babel-preset-jsx/-/babel-preset-jsx-1.2.4.tgz", + "integrity": "sha512-oRVnmN2a77bYDJzeGSt92AuHXbkIxbf/XXSE3klINnh9AXBmVS1DGa1f0d+dDYpLfsAKElMnqKTQfKn7obcL4w==", + "dev": true, + "requires": { + "@vue/babel-helper-vue-jsx-merge-props": "^1.2.1", + "@vue/babel-plugin-transform-vue-jsx": "^1.2.1", + "@vue/babel-sugar-composition-api-inject-h": "^1.2.1", + "@vue/babel-sugar-composition-api-render-instance": "^1.2.4", + "@vue/babel-sugar-functional-vue": "^1.2.2", + "@vue/babel-sugar-inject-h": "^1.2.2", + "@vue/babel-sugar-v-model": "^1.2.3", + "@vue/babel-sugar-v-on": "^1.2.3" + } + }, + "@vue/babel-sugar-composition-api-inject-h": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@vue/babel-sugar-composition-api-inject-h/-/babel-sugar-composition-api-inject-h-1.2.1.tgz", + "integrity": "sha512-4B3L5Z2G+7s+9Bwbf+zPIifkFNcKth7fQwekVbnOA3cr3Pq71q71goWr97sk4/yyzH8phfe5ODVzEjX7HU7ItQ==", + "dev": true, + "requires": { + "@babel/plugin-syntax-jsx": "^7.2.0" + } + }, + "@vue/babel-sugar-composition-api-render-instance": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@vue/babel-sugar-composition-api-render-instance/-/babel-sugar-composition-api-render-instance-1.2.4.tgz", + "integrity": "sha512-joha4PZznQMsxQYXtR3MnTgCASC9u3zt9KfBxIeuI5g2gscpTsSKRDzWQt4aqNIpx6cv8On7/m6zmmovlNsG7Q==", + "dev": true, + "requires": { + "@babel/plugin-syntax-jsx": "^7.2.0" + } + }, + "@vue/babel-sugar-functional-vue": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@vue/babel-sugar-functional-vue/-/babel-sugar-functional-vue-1.2.2.tgz", + "integrity": "sha512-JvbgGn1bjCLByIAU1VOoepHQ1vFsroSA/QkzdiSs657V79q6OwEWLCQtQnEXD/rLTA8rRit4rMOhFpbjRFm82w==", + "dev": true, + "requires": { + "@babel/plugin-syntax-jsx": "^7.2.0" + } + }, + "@vue/babel-sugar-inject-h": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@vue/babel-sugar-inject-h/-/babel-sugar-inject-h-1.2.2.tgz", + "integrity": "sha512-y8vTo00oRkzQTgufeotjCLPAvlhnpSkcHFEp60+LJUwygGcd5Chrpn5480AQp/thrxVm8m2ifAk0LyFel9oCnw==", + "dev": true, + "requires": { + "@babel/plugin-syntax-jsx": "^7.2.0" + } + }, + "@vue/babel-sugar-v-model": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@vue/babel-sugar-v-model/-/babel-sugar-v-model-1.2.3.tgz", + "integrity": "sha512-A2jxx87mySr/ulAsSSyYE8un6SIH0NWHiLaCWpodPCVOlQVODCaSpiR4+IMsmBr73haG+oeCuSvMOM+ttWUqRQ==", + "dev": true, + "requires": { + "@babel/plugin-syntax-jsx": "^7.2.0", + "@vue/babel-helper-vue-jsx-merge-props": "^1.2.1", + "@vue/babel-plugin-transform-vue-jsx": "^1.2.1", + "camelcase": "^5.0.0", + "html-tags": "^2.0.0", + "svg-tags": "^1.0.0" + }, + "dependencies": { + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + }, + "html-tags": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-2.0.0.tgz", + "integrity": "sha1-ELMKOGCF9Dzt41PMj6fLDe7qZos=", + "dev": true + } + } + }, + "@vue/babel-sugar-v-on": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@vue/babel-sugar-v-on/-/babel-sugar-v-on-1.2.3.tgz", + "integrity": "sha512-kt12VJdz/37D3N3eglBywV8GStKNUhNrsxChXIV+o0MwVXORYuhDTHJRKPgLJRb/EY3vM2aRFQdxJBp9CLikjw==", + "dev": true, + "requires": { + "@babel/plugin-syntax-jsx": "^7.2.0", + "@vue/babel-plugin-transform-vue-jsx": "^1.2.1", + "camelcase": "^5.0.0" + }, + "dependencies": { + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + } + } + }, + "@vue/cli-overlay": { + "version": "4.5.9", + "resolved": "https://registry.npmjs.org/@vue/cli-overlay/-/cli-overlay-4.5.9.tgz", + "integrity": "sha512-E2PWv6tCdUz+eEDj2Th2oxiKmzMe02qi0PcxiNaO7oaqggmEOrp1rLgop7DWpiLDBiqUZk2x0vjK/q2Tz8z/eg==", + "dev": true + }, + "@vue/cli-plugin-babel": { + "version": "4.5.9", + "resolved": "https://registry.npmjs.org/@vue/cli-plugin-babel/-/cli-plugin-babel-4.5.9.tgz", + "integrity": "sha512-2tzaJU5yqAfXVhg1aYyd/Yfif6brv+tDZ49D1aOk7ZgMIwH5YUa0yo5HPcPOcmfpoVoNYcpqVYRfyT4EXIYSpg==", + "dev": true, + "requires": { + "@babel/core": "^7.11.0", + "@vue/babel-preset-app": "^4.5.9", + "@vue/cli-shared-utils": "^4.5.9", + "babel-loader": "^8.1.0", + "cache-loader": "^4.1.0", + "thread-loader": "^2.1.3", + "webpack": "^4.0.0" + } + }, + "@vue/cli-plugin-router": { + "version": "4.5.9", + "resolved": "https://registry.npmjs.org/@vue/cli-plugin-router/-/cli-plugin-router-4.5.9.tgz", + "integrity": "sha512-eBBfbZpQ1sJrdlx8i7iReFxSnuzwmrv+s2OCT3kjBd6uWRqGnD4VihpS4srC7vZLzDQrDplumSn0a93L9Qf3wQ==", + "dev": true, + "requires": { + "@vue/cli-shared-utils": "^4.5.9" + } + }, + "@vue/cli-plugin-vuex": { + "version": "4.5.9", + "resolved": "https://registry.npmjs.org/@vue/cli-plugin-vuex/-/cli-plugin-vuex-4.5.9.tgz", + "integrity": "sha512-mFNIJhYiJjzCgytkDHX00ROy5Yzl7prkZpUbeDE0biwcLteMf2s3qZVbESOQl6GcviqcfEt2f3tHQQtLNa+OLg==", + "dev": true + }, + "@vue/cli-service": { + "version": "4.5.9", + "resolved": "https://registry.npmjs.org/@vue/cli-service/-/cli-service-4.5.9.tgz", + "integrity": "sha512-E3XlfM0q+UnnjbC9rwLIWNo2umZCRwnlMJY0KOhY1hFvqisGIYzFmQQ4o01KGyTx2BZNMuQg7Kw+BZ5gyM1Wig==", + "dev": true, + "requires": { + "@intervolga/optimize-cssnano-plugin": "^1.0.5", + "@soda/friendly-errors-webpack-plugin": "^1.7.1", + "@soda/get-current-script": "^1.0.0", + "@types/minimist": "^1.2.0", + "@types/webpack": "^4.0.0", + "@types/webpack-dev-server": "^3.11.0", + "@vue/cli-overlay": "^4.5.9", + "@vue/cli-plugin-router": "^4.5.9", + "@vue/cli-plugin-vuex": "^4.5.9", + "@vue/cli-shared-utils": "^4.5.9", + "@vue/component-compiler-utils": "^3.1.2", + "@vue/preload-webpack-plugin": "^1.1.0", + "@vue/web-component-wrapper": "^1.2.0", + "acorn": "^7.4.0", + "acorn-walk": "^7.1.1", + "address": "^1.1.2", + "autoprefixer": "^9.8.6", + "browserslist": "^4.12.0", + "cache-loader": "^4.1.0", + "case-sensitive-paths-webpack-plugin": "^2.3.0", + "cli-highlight": "^2.1.4", + "clipboardy": "^2.3.0", + "cliui": "^6.0.0", + "copy-webpack-plugin": "^5.1.1", + "css-loader": "^3.5.3", + "cssnano": "^4.1.10", + "debug": "^4.1.1", + "default-gateway": "^5.0.5", + "dotenv": "^8.2.0", + "dotenv-expand": "^5.1.0", + "file-loader": "^4.2.0", + "fs-extra": "^7.0.1", + "globby": "^9.2.0", + "hash-sum": "^2.0.0", + "html-webpack-plugin": "^3.2.0", + "launch-editor-middleware": "^2.2.1", + "lodash.defaultsdeep": "^4.6.1", + "lodash.mapvalues": "^4.6.0", + "lodash.transform": "^4.6.0", + "mini-css-extract-plugin": "^0.9.0", + "minimist": "^1.2.5", + "pnp-webpack-plugin": "^1.6.4", + "portfinder": "^1.0.26", + "postcss-loader": "^3.0.0", + "ssri": "^7.1.0", + "terser-webpack-plugin": "^2.3.6", + "thread-loader": "^2.1.3", + "url-loader": "^2.2.0", + "vue-loader": "^15.9.2", + "vue-loader-v16": "npm:vue-loader@^16.0.0-beta.7", + "vue-style-loader": "^4.1.2", + "webpack": "^4.0.0", + "webpack-bundle-analyzer": "^3.8.0", + "webpack-chain": "^6.4.0", + "webpack-dev-server": "^3.11.0", + "webpack-merge": "^4.2.2" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "optional": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "optional": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "optional": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "optional": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "optional": true + }, + "loader-utils": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz", + "integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==", + "dev": true, + "optional": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "optional": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "vue-loader-v16": { + "version": "npm:vue-loader@16.1.2", + "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-16.1.2.tgz", + "integrity": "sha512-8QTxh+Fd+HB6fiL52iEVLKqE9N1JSlMXLR92Ijm6g8PZrwIxckgpqjPDWRP5TWxdiPaHR+alUWsnu1ShQOwt+Q==", + "dev": true, + "optional": true, + "requires": { + "chalk": "^4.1.0", + "hash-sum": "^2.0.0", + "loader-utils": "^2.0.0" + } + } + } + }, + "@vue/cli-shared-utils": { + "version": "4.5.9", + "resolved": "https://registry.npmjs.org/@vue/cli-shared-utils/-/cli-shared-utils-4.5.9.tgz", + "integrity": "sha512-anvsrv+rkQC+hgxaT2nQQxnSWSsIzyysZ36LO7qPjXvDRBvcvKLAAviFlUkYbZ+ntbV8puzJ3zw+gUhQw4SEVA==", + "dev": true, + "requires": { + "@hapi/joi": "^15.0.1", + "chalk": "^2.4.2", + "execa": "^1.0.0", + "launch-editor": "^2.2.1", + "lru-cache": "^5.1.1", + "node-ipc": "^9.1.1", + "open": "^6.3.0", + "ora": "^3.4.0", + "read-pkg": "^5.1.1", + "request": "^2.88.2", + "semver": "^6.1.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "@vue/component-compiler-utils": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@vue/component-compiler-utils/-/component-compiler-utils-3.2.0.tgz", + "integrity": "sha512-lejBLa7xAMsfiZfNp7Kv51zOzifnb29FwdnMLa96z26kXErPFioSf9BMcePVIQ6/Gc6/mC0UrPpxAWIHyae0vw==", + "dev": true, + "requires": { + "consolidate": "^0.15.1", + "hash-sum": "^1.0.2", + "lru-cache": "^4.1.2", + "merge-source-map": "^1.1.0", + "postcss": "^7.0.14", + "postcss-selector-parser": "^6.0.2", + "prettier": "^1.18.2", + "source-map": "~0.6.1", + "vue-template-es2015-compiler": "^1.9.0" + }, + "dependencies": { + "hash-sum": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-1.0.2.tgz", + "integrity": "sha1-M7QHd3VMZDJXPBIMw4CLvRDUfwQ=", + "dev": true + }, + "lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "dev": true, + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true + } + } + }, + "@vue/preload-webpack-plugin": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@vue/preload-webpack-plugin/-/preload-webpack-plugin-1.1.2.tgz", + "integrity": "sha512-LIZMuJk38pk9U9Ur4YzHjlIyMuxPlACdBIHH9/nGYVTsaGKOSnSuELiE8vS9wa+dJpIYspYUOqk+L1Q4pgHQHQ==", + "dev": true + }, + "@vue/web-component-wrapper": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@vue/web-component-wrapper/-/web-component-wrapper-1.2.0.tgz", + "integrity": "sha512-Xn/+vdm9CjuC9p3Ae+lTClNutrVhsXpzxvoTXXtoys6kVRX9FkueSUAqSWAyZntmVLlR4DosBV4pH8y5Z/HbUw==", + "dev": true + }, + "@webassemblyjs/ast": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz", + "integrity": "sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA==", + "dev": true, + "requires": { + "@webassemblyjs/helper-module-context": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/wast-parser": "1.9.0" + } + }, + "@webassemblyjs/floating-point-hex-parser": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz", + "integrity": "sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA==", + "dev": true + }, + "@webassemblyjs/helper-api-error": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz", + "integrity": "sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw==", + "dev": true + }, + "@webassemblyjs/helper-buffer": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz", + "integrity": "sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA==", + "dev": true + }, + "@webassemblyjs/helper-code-frame": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz", + "integrity": "sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA==", + "dev": true, + "requires": { + "@webassemblyjs/wast-printer": "1.9.0" + } + }, + "@webassemblyjs/helper-fsm": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz", + "integrity": "sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw==", + "dev": true + }, + "@webassemblyjs/helper-module-context": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz", + "integrity": "sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0" + } + }, + "@webassemblyjs/helper-wasm-bytecode": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz", + "integrity": "sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw==", + "dev": true + }, + "@webassemblyjs/helper-wasm-section": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz", + "integrity": "sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0" + } + }, + "@webassemblyjs/ieee754": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz", + "integrity": "sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg==", + "dev": true, + "requires": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "@webassemblyjs/leb128": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.9.0.tgz", + "integrity": "sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw==", + "dev": true, + "requires": { + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/utf8": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.9.0.tgz", + "integrity": "sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w==", + "dev": true + }, + "@webassemblyjs/wasm-edit": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz", + "integrity": "sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/helper-wasm-section": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0", + "@webassemblyjs/wasm-opt": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0", + "@webassemblyjs/wast-printer": "1.9.0" + } + }, + "@webassemblyjs/wasm-gen": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz", + "integrity": "sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/ieee754": "1.9.0", + "@webassemblyjs/leb128": "1.9.0", + "@webassemblyjs/utf8": "1.9.0" + } + }, + "@webassemblyjs/wasm-opt": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz", + "integrity": "sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0" + } + }, + "@webassemblyjs/wasm-parser": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz", + "integrity": "sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-api-error": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/ieee754": "1.9.0", + "@webassemblyjs/leb128": "1.9.0", + "@webassemblyjs/utf8": "1.9.0" + } + }, + "@webassemblyjs/wast-parser": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz", + "integrity": "sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/floating-point-hex-parser": "1.9.0", + "@webassemblyjs/helper-api-error": "1.9.0", + "@webassemblyjs/helper-code-frame": "1.9.0", + "@webassemblyjs/helper-fsm": "1.9.0", + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/wast-printer": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz", + "integrity": "sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/wast-parser": "1.9.0", + "@xtuc/long": "4.2.2" + } + }, + "@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true + }, + "@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "dev": true + }, + "accepts": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", + "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", + "requires": { + "mime-types": "~2.1.24", + "negotiator": "0.6.2" + } + }, + "acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true + }, + "acorn-walk": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", + "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", + "dev": true + }, + "address": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/address/-/address-1.1.2.tgz", + "integrity": "sha512-aT6camzM4xEA54YVJYSqxz1kv4IHnQZRtThJJHhUMRExaU5spC7jX5ugSwTaTgJliIgs4VhZOk7htClvQ/LmRA==", + "dev": true + }, + "aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "dev": true, + "requires": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + } + }, + "ajv-errors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz", + "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==", + "dev": true + }, + "alphanum-sort": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz", + "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=", + "dev": true + }, + "ansi-colors": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.4.tgz", + "integrity": "sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==", + "dev": true + }, + "ansi-html": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz", + "integrity": "sha1-gTWEAhliqenm/QOflA0S9WynhZ4=", + "dev": true + }, + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha1-q8av7tzqUugJzcA3au0845Y10X8=", + "dev": true + }, + "anymatch": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", + "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", + "dev": true, + "optional": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", + "dev": true + }, + "arch": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz", + "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==", + "dev": true + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "dev": true + }, + "arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", + "dev": true + }, + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" + }, + "array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "dev": true, + "requires": { + "array-uniq": "^1.0.1" + } + }, + "array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, + "asn1": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "dev": true, + "requires": { + "safer-buffer": "~2.1.0" + } + }, + "asn1.js": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", + "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", + "dev": true, + "requires": { + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "safer-buffer": "^2.1.0" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "dev": true + } + } + }, + "assert": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", + "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", + "dev": true, + "requires": { + "object-assign": "^4.1.1", + "util": "0.10.3" + }, + "dependencies": { + "inherits": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", + "dev": true + }, + "util": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", + "dev": true, + "requires": { + "inherits": "2.0.1" + } + } + } + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + }, + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", + "dev": true + }, + "async": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", + "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "dev": true, + "requires": { + "lodash": "^4.17.14" + } + }, + "async-each": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", + "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==", + "dev": true + }, + "async-limiter": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", + "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==", + "dev": true + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true + }, + "atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "dev": true + }, + "autoprefixer": { + "version": "9.8.6", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.8.6.tgz", + "integrity": "sha512-XrvP4VVHdRBCdX1S3WXVD8+RyG9qeb1D5Sn1DeLiG2xfSpzellk5k54xbUERJ3M5DggQxes39UGOTP8CFrEGbg==", + "dev": true, + "requires": { + "browserslist": "^4.12.0", + "caniuse-lite": "^1.0.30001109", + "colorette": "^1.2.1", + "normalize-range": "^0.1.2", + "num2fraction": "^1.2.2", + "postcss": "^7.0.32", + "postcss-value-parser": "^4.1.0" + } + }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", + "dev": true + }, + "aws4": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", + "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==", + "dev": true + }, + "axios": { + "version": "0.21.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.0.tgz", + "integrity": "sha512-fmkJBknJKoZwem3/IKSSLpkdNXZeBu5Q7GA/aRsr2btgrptmSCxi2oFjZHqGdK9DoTil9PIHlPIZw2EcRJXRvw==", + "requires": { + "follow-redirects": "^1.10.0" + } + }, + "babel-loader": { + "version": "8.2.2", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.2.2.tgz", + "integrity": "sha512-JvTd0/D889PQBtUXJ2PXaKU/pjZDMtHA9V2ecm+eNRmmBCMR09a+fmpGTNwnJtFmFl5Ei7Vy47LjBb+L0wQ99g==", + "dev": true, + "requires": { + "find-cache-dir": "^3.3.1", + "loader-utils": "^1.4.0", + "make-dir": "^3.1.0", + "schema-utils": "^2.6.5" + } + }, + "babel-plugin-dynamic-import-node": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", + "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", + "dev": true, + "requires": { + "object.assign": "^4.1.0" + } + }, + "backo2": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", + "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc=" + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "dev": true, + "requires": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + } + } + }, + "base64-arraybuffer": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.4.tgz", + "integrity": "sha1-mBjHngWbE1X5fgQooBfIOOkLqBI=" + }, + "base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true + }, + "base64id": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz", + "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==" + }, + "batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=", + "dev": true + }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "dev": true, + "requires": { + "tweetnacl": "^0.14.3" + } + }, + "bfj": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/bfj/-/bfj-6.1.2.tgz", + "integrity": "sha512-BmBJa4Lip6BPRINSZ0BPEIfB1wUY/9rwbwvIHQA1KjX9om29B6id0wnWXq7m3bn5JrUVjeOTnVuhPT1FiHwPGw==", + "dev": true, + "requires": { + "bluebird": "^3.5.5", + "check-types": "^8.0.3", + "hoopy": "^0.1.4", + "tryer": "^1.0.1" + } + }, + "big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "dev": true + }, + "binary-extensions": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.1.0.tgz", + "integrity": "sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ==", + "dev": true, + "optional": true + }, + "bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "dev": true, + "optional": true, + "requires": { + "file-uri-to-path": "1.0.0" + } + }, + "bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "dev": true + }, + "bn.js": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.1.3.tgz", + "integrity": "sha512-GkTiFpjFtUzU9CbMeJ5iazkCzGL3jrhzerzZIuqLABjbwRaFt33I9tUdSNryIptM+RxDet6OKm2WnLXzW51KsQ==", + "dev": true + }, + "body-parser": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", + "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", + "requires": { + "bytes": "3.1.0", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "~1.1.2", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "on-finished": "~2.3.0", + "qs": "6.7.0", + "raw-body": "2.4.0", + "type-is": "~1.6.17" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "bonjour": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz", + "integrity": "sha1-jokKGD2O6aI5OzhExpGkK897yfU=", + "dev": true, + "requires": { + "array-flatten": "^2.1.0", + "deep-equal": "^1.0.1", + "dns-equal": "^1.0.0", + "dns-txt": "^2.0.2", + "multicast-dns": "^6.0.1", + "multicast-dns-service-types": "^1.1.0" + }, + "dependencies": { + "array-flatten": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", + "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==", + "dev": true + } + } + }, + "boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", + "dev": true + }, + "bootstrap": { + "version": "4.5.3", + "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-4.5.3.tgz", + "integrity": "sha512-o9ppKQioXGqhw8Z7mah6KdTYpNQY//tipnkxppWhPbiSWdD+1raYsnhwEZjkTHYbGee4cVQ0Rx65EhOY/HNLcQ==" + }, + "bootstrap-vue": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/bootstrap-vue/-/bootstrap-vue-2.19.0.tgz", + "integrity": "sha512-IjAXUSrRU5Qu9x3uwUcoj6LtysKbCVeWoJOsODyI/WokStUr95M+tTIajXUjIrB/Nsk0fS+RNvZnm2sWeNFrhg==", + "requires": { + "@nuxt/opencollective": "^0.3.2", + "bootstrap": ">=4.5.3 <5.0.0", + "popper.js": "^1.16.1", + "portal-vue": "^2.1.7", + "vue-functional-data-merge": "^3.1.0" + } + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + } + } + }, + "brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", + "dev": true + }, + "browserify-aes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "dev": true, + "requires": { + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "browserify-cipher": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", + "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", + "dev": true, + "requires": { + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" + } + }, + "browserify-des": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", + "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", + "dev": true, + "requires": { + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "browserify-rsa": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", + "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", + "dev": true, + "requires": { + "bn.js": "^5.0.0", + "randombytes": "^2.0.1" + } + }, + "browserify-sign": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz", + "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==", + "dev": true, + "requires": { + "bn.js": "^5.1.1", + "browserify-rsa": "^4.0.1", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "elliptic": "^6.5.3", + "inherits": "^2.0.4", + "parse-asn1": "^5.1.5", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + } + } + }, + "browserify-zlib": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", + "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", + "dev": true, + "requires": { + "pako": "~1.0.5" + } + }, + "browserslist": { + "version": "4.14.7", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.14.7.tgz", + "integrity": "sha512-BSVRLCeG3Xt/j/1cCGj1019Wbty0H+Yvu2AOuZSuoaUWn3RatbL33Cxk+Q4jRMRAbOm0p7SLravLjpnT6s0vzQ==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30001157", + "colorette": "^1.2.1", + "electron-to-chromium": "^1.3.591", + "escalade": "^3.1.1", + "node-releases": "^1.1.66" + } + }, + "buffer": { + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", + "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", + "dev": true, + "requires": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4", + "isarray": "^1.0.0" + } + }, + "buffer-from": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", + "dev": true + }, + "buffer-indexof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz", + "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==", + "dev": true + }, + "buffer-json": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/buffer-json/-/buffer-json-2.0.0.tgz", + "integrity": "sha512-+jjPFVqyfF1esi9fvfUs3NqM0pH1ziZ36VP4hmA/y/Ssfo/5w5xHKfTw9BwQjoJ1w/oVtpLomqwUHKdefGyuHw==", + "dev": true + }, + "buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", + "dev": true + }, + "builtin-status-codes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", + "dev": true + }, + "bytes": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" + }, + "cacache": { + "version": "12.0.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz", + "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==", + "dev": true, + "requires": { + "bluebird": "^3.5.5", + "chownr": "^1.1.1", + "figgy-pudding": "^3.5.1", + "glob": "^7.1.4", + "graceful-fs": "^4.1.15", + "infer-owner": "^1.0.3", + "lru-cache": "^5.1.1", + "mississippi": "^3.0.0", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "promise-inflight": "^1.0.1", + "rimraf": "^2.6.3", + "ssri": "^6.0.1", + "unique-filename": "^1.1.1", + "y18n": "^4.0.0" + }, + "dependencies": { + "ssri": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz", + "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==", + "dev": true, + "requires": { + "figgy-pudding": "^3.5.1" + } + } + } + }, + "cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "dev": true, + "requires": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + } + }, + "cache-loader": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cache-loader/-/cache-loader-4.1.0.tgz", + "integrity": "sha512-ftOayxve0PwKzBF/GLsZNC9fJBXl8lkZE3TOsjkboHfVHVkL39iUEs1FO07A33mizmci5Dudt38UZrrYXDtbhw==", + "dev": true, + "requires": { + "buffer-json": "^2.0.0", + "find-cache-dir": "^3.0.0", + "loader-utils": "^1.2.3", + "mkdirp": "^0.5.1", + "neo-async": "^2.6.1", + "schema-utils": "^2.0.0" + } + }, + "call-bind": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.0.tgz", + "integrity": "sha512-AEXsYIyyDY3MCzbwdhzG3Jx1R0J2wetQyUynn6dYHAO+bg8l1k7jwZtRv4ryryFs7EP+NDlikJlVe59jr0cM2w==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.0" + } + }, + "call-me-maybe": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz", + "integrity": "sha1-JtII6onje1y95gJQoV8DHBak1ms=", + "dev": true + }, + "caller-callsite": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", + "integrity": "sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=", + "dev": true, + "requires": { + "callsites": "^2.0.0" + } + }, + "caller-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz", + "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=", + "dev": true, + "requires": { + "caller-callsite": "^2.0.0" + } + }, + "callsites": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", + "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=", + "dev": true + }, + "camel-case": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz", + "integrity": "sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M=", + "dev": true, + "requires": { + "no-case": "^2.2.0", + "upper-case": "^1.1.1" + } + }, + "camelcase": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz", + "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==", + "dev": true + }, + "caniuse-api": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", + "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "caniuse-lite": "^1.0.0", + "lodash.memoize": "^4.1.2", + "lodash.uniq": "^4.5.0" + } + }, + "caniuse-lite": { + "version": "1.0.30001161", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001161.tgz", + "integrity": "sha512-JharrCDxOqPLBULF9/SPa6yMcBRTjZARJ6sc3cuKrPfyIk64JN6kuMINWqA99Xc8uElMFcROliwtz0n9pYej+g==", + "dev": true + }, + "case-sensitive-paths-webpack-plugin": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.3.0.tgz", + "integrity": "sha512-/4YgnZS8y1UXXmC02xD5rRrBEu6T5ub+mQHLNRj0fzTRbgdBYhsNo2V5EqwgqrExjxsjtF/OpAKAMkKsxbD5XQ==", + "dev": true + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "dev": true + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "check-types": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/check-types/-/check-types-8.0.3.tgz", + "integrity": "sha512-YpeKZngUmG65rLudJ4taU7VLkOCTMhNl/u4ctNC56LQS/zJTyNH0Lrtwm1tfTsbLlwvlfsA2d1c8vCf/Kh2KwQ==", + "dev": true + }, + "chokidar": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.4.3.tgz", + "integrity": "sha512-DtM3g7juCXQxFVSNPNByEC2+NImtBuxQQvWlHunpJIS5Ocr0lG306cC7FCi7cEA0fzmybPUIl4txBIobk1gGOQ==", + "dev": true, + "optional": true, + "requires": { + "anymatch": "~3.1.1", + "braces": "~3.0.2", + "fsevents": "~2.1.2", + "glob-parent": "~5.1.0", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.5.0" + }, + "dependencies": { + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "optional": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "optional": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "glob-parent": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", + "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", + "dev": true, + "optional": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "optional": true + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "optional": true, + "requires": { + "is-number": "^7.0.0" + } + } + } + }, + "chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", + "dev": true + }, + "chrome-trace-event": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz", + "integrity": "sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, + "cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "clean-css": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.3.tgz", + "integrity": "sha512-VcMWDN54ZN/DS+g58HYL5/n4Zrqe8vHJpGA8KdgUXFU4fuP/aHNw8eld9SyEIyabIMJX/0RaY/fplOo5hYLSFA==", + "dev": true, + "requires": { + "source-map": "~0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "dev": true + }, + "cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", + "dev": true, + "requires": { + "restore-cursor": "^2.0.0" + } + }, + "cli-highlight": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/cli-highlight/-/cli-highlight-2.1.8.tgz", + "integrity": "sha512-mFuTW5UOV3/S0wZE9/1b0EcAM0XOJIhoAWPhWm5voiJ6ugVBkvYBIEL7sbHo9sEtWdEmwDIWab32qpaRI3cfqQ==", + "dev": true, + "requires": { + "chalk": "^4.0.0", + "highlight.js": "^10.0.0", + "mz": "^2.4.0", + "parse5": "^5.1.1", + "parse5-htmlparser2-tree-adapter": "^6.0.0", + "yargs": "^15.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "cli-spinners": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.5.0.tgz", + "integrity": "sha512-PC+AmIuK04E6aeSs/pUccSujsTzBhu4HzC2dL+CfJB/Jcc2qTRbEwZQDfIUpt2Xl8BodYBEq8w4fc0kU2I9DjQ==", + "dev": true + }, + "clipboardy": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/clipboardy/-/clipboardy-2.3.0.tgz", + "integrity": "sha512-mKhiIL2DrQIsuXMgBgnfEHOZOryC7kY7YO//TN6c63wlEm3NG5tz+YgY5rVi29KCmq/QQjKYvM7a19+MDOTHOQ==", + "dev": true, + "requires": { + "arch": "^2.1.1", + "execa": "^1.0.0", + "is-wsl": "^2.1.1" + } + }, + "cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + }, + "dependencies": { + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "string-width": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + } + } + } + }, + "clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", + "dev": true + }, + "coa": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/coa/-/coa-2.0.2.tgz", + "integrity": "sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==", + "dev": true, + "requires": { + "@types/q": "^1.5.1", + "chalk": "^2.4.1", + "q": "^1.1.2" + } + }, + "codemirror": { + "version": "5.58.3", + "resolved": "https://registry.npmjs.org/codemirror/-/codemirror-5.58.3.tgz", + "integrity": "sha512-KBhB+juiyOOgn0AqtRmWyAT3yoElkuvWTI6hsHa9E6GQrl6bk/fdAYcvuqW1/upO9T9rtEtapWdw4XYcNiVDEA==" + }, + "collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "dev": true, + "requires": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + } + }, + "color": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/color/-/color-3.1.3.tgz", + "integrity": "sha512-xgXAcTHa2HeFCGLE9Xs/R82hujGtu9Jd9x4NW3T34+OMs7VoPsjwzRczKHvTAHeJwWFwX5j15+MgAppE8ztObQ==", + "dev": true, + "requires": { + "color-convert": "^1.9.1", + "color-string": "^1.5.4" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "color-string": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.4.tgz", + "integrity": "sha512-57yF5yt8Xa3czSEW1jfQDE79Idk0+AkN/4KWad6tbdxUmAs3MvjxlWSWD4deYytcRfoZ9nhKyFl1kj5tBvidbw==", + "dev": true, + "requires": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } + }, + "colorette": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.1.tgz", + "integrity": "sha512-puCDz0CzydiSYOrnXpz/PKd69zRrribezjtE9yd4zvytoRc8+RY/KJPvtPFKZS3E3wP6neGyMe0vOTlHO5L3Pw==", + "dev": true + }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "commander": { + "version": "2.17.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz", + "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==", + "dev": true + }, + "comment-patterns": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/comment-patterns/-/comment-patterns-0.11.0.tgz", + "integrity": "sha512-YgQOR0QcCIE0mYFywZ0ToK8r7V+48FjEWA6Jflfvxf5JlGZtJEi8BzMcc4BXcaVUyU1DUSGEhppSUfJOI2YC/w==", + "requires": { + "lodash": "^4.17.11" + } + }, + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "dev": true + }, + "component-bind": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz", + "integrity": "sha1-AMYIq33Nk4l8AAllGx06jh5zu9E=" + }, + "component-emitter": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==" + }, + "compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "dev": true, + "requires": { + "mime-db": ">= 1.43.0 < 2" + } + }, + "compression": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", + "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", + "dev": true, + "requires": { + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.16", + "debug": "2.6.9", + "on-headers": "~1.0.2", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" + }, + "dependencies": { + "bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", + "dev": true + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "connect-history-api-fallback": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz", + "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==", + "dev": true + }, + "consola": { + "version": "2.15.0", + "resolved": "https://registry.npmjs.org/consola/-/consola-2.15.0.tgz", + "integrity": "sha512-vlcSGgdYS26mPf7qNi+dCisbhiyDnrN1zaRbw3CSuc2wGOMEGGPsp46PdRG5gqXwgtJfjxDkxRNAgRPr1B77vQ==" + }, + "console-browserify": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", + "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==", + "dev": true + }, + "consolidate": { + "version": "0.15.1", + "resolved": "https://registry.npmjs.org/consolidate/-/consolidate-0.15.1.tgz", + "integrity": "sha512-DW46nrsMJgy9kqAbPt5rKaCr7uFtpo4mSUvLHIUbJEjm0vo+aY5QLwBUq3FK4tRnJr/X0Psc0C4jf/h+HtXSMw==", + "dev": true, + "requires": { + "bluebird": "^3.1.1" + } + }, + "constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", + "dev": true + }, + "content-disposition": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", + "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", + "requires": { + "safe-buffer": "5.1.2" + } + }, + "content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" + }, + "convert-source-map": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", + "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.1" + } + }, + "cookie": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", + "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==" + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" + }, + "copy-concurrently": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", + "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", + "dev": true, + "requires": { + "aproba": "^1.1.1", + "fs-write-stream-atomic": "^1.0.8", + "iferr": "^0.1.5", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.0" + } + }, + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", + "dev": true + }, + "copy-webpack-plugin": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-5.1.2.tgz", + "integrity": "sha512-Uh7crJAco3AjBvgAy9Z75CjK8IG+gxaErro71THQ+vv/bl4HaQcpkexAY8KVW/T6D2W2IRr+couF/knIRkZMIQ==", + "dev": true, + "requires": { + "cacache": "^12.0.3", + "find-cache-dir": "^2.1.0", + "glob-parent": "^3.1.0", + "globby": "^7.1.1", + "is-glob": "^4.0.1", + "loader-utils": "^1.2.3", + "minimatch": "^3.0.4", + "normalize-path": "^3.0.0", + "p-limit": "^2.2.1", + "schema-utils": "^1.0.0", + "serialize-javascript": "^4.0.0", + "webpack-log": "^2.0.0" + }, + "dependencies": { + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "find-cache-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", + "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^2.0.0", + "pkg-dir": "^3.0.0" + } + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "globby": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/globby/-/globby-7.1.1.tgz", + "integrity": "sha1-+yzP+UAfhgCUXfral0QMypcrhoA=", + "dev": true, + "requires": { + "array-union": "^1.0.1", + "dir-glob": "^2.0.0", + "glob": "^7.1.2", + "ignore": "^3.3.5", + "pify": "^3.0.0", + "slash": "^1.0.0" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + } + } + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "requires": { + "pify": "^4.0.1", + "semver": "^5.6.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + }, + "pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "dev": true, + "requires": { + "find-up": "^3.0.0" + } + }, + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + }, + "slash": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", + "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", + "dev": true + } + } + }, + "core-js": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.8.0.tgz", + "integrity": "sha512-W2VYNB0nwQQE7tKS7HzXd7r2y/y2SVJl4ga6oH/dnaLFzM0o2lB2P3zCkWj5Wc/zyMYjtgd5Hmhk0ObkQFZOIA==", + "dev": true + }, + "core-js-compat": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.8.0.tgz", + "integrity": "sha512-o9QKelQSxQMYWHXc/Gc4L8bx/4F7TTraE5rhuN8I7mKBt5dBIUpXpIR3omv70ebr8ST5R3PqbDQr+ZI3+Tt1FQ==", + "dev": true, + "requires": { + "browserslist": "^4.14.7", + "semver": "7.0.0" + }, + "dependencies": { + "semver": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", + "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", + "dev": true + } + } + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + }, + "cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "requires": { + "object-assign": "^4", + "vary": "^1" + } + }, + "cosmiconfig": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", + "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", + "dev": true, + "requires": { + "import-fresh": "^2.0.0", + "is-directory": "^0.3.1", + "js-yaml": "^3.13.1", + "parse-json": "^4.0.0" + } + }, + "create-ecdh": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", + "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "elliptic": "^6.5.3" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "dev": true + } + } + }, + "create-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "dev": true, + "requires": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "create-hmac": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "dev": true, + "requires": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "crypto-browserify": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", + "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", + "dev": true, + "requires": { + "browserify-cipher": "^1.0.0", + "browserify-sign": "^4.0.0", + "create-ecdh": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.0", + "diffie-hellman": "^5.0.0", + "inherits": "^2.0.1", + "pbkdf2": "^3.0.3", + "public-encrypt": "^4.0.0", + "randombytes": "^2.0.0", + "randomfill": "^1.0.3" + } + }, + "css-color-names": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz", + "integrity": "sha1-gIrcLnnPhHOAabZGyyDsJ762KeA=", + "dev": true + }, + "css-declaration-sorter": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz", + "integrity": "sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA==", + "dev": true, + "requires": { + "postcss": "^7.0.1", + "timsort": "^0.3.0" + } + }, + "css-loader": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-3.6.0.tgz", + "integrity": "sha512-M5lSukoWi1If8dhQAUCvj4H8vUt3vOnwbQBH9DdTm/s4Ym2B/3dPMtYZeJmq7Q3S3Pa+I94DcZ7pc9bP14cWIQ==", + "dev": true, + "requires": { + "camelcase": "^5.3.1", + "cssesc": "^3.0.0", + "icss-utils": "^4.1.1", + "loader-utils": "^1.2.3", + "normalize-path": "^3.0.0", + "postcss": "^7.0.32", + "postcss-modules-extract-imports": "^2.0.0", + "postcss-modules-local-by-default": "^3.0.2", + "postcss-modules-scope": "^2.2.0", + "postcss-modules-values": "^3.0.0", + "postcss-value-parser": "^4.1.0", + "schema-utils": "^2.7.0", + "semver": "^6.3.0" + }, + "dependencies": { + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "css-select": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", + "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=", + "dev": true, + "requires": { + "boolbase": "~1.0.0", + "css-what": "2.1", + "domutils": "1.5.1", + "nth-check": "~1.0.1" + } + }, + "css-select-base-adapter": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz", + "integrity": "sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==", + "dev": true + }, + "css-tree": { + "version": "1.0.0-alpha.37", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz", + "integrity": "sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg==", + "dev": true, + "requires": { + "mdn-data": "2.0.4", + "source-map": "^0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "css-what": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.3.tgz", + "integrity": "sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg==", + "dev": true + }, + "cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true + }, + "cssnano": { + "version": "4.1.10", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-4.1.10.tgz", + "integrity": "sha512-5wny+F6H4/8RgNlaqab4ktc3e0/blKutmq8yNlBFXA//nSFFAqAngjNVRzUvCgYROULmZZUoosL/KSoZo5aUaQ==", + "dev": true, + "requires": { + "cosmiconfig": "^5.0.0", + "cssnano-preset-default": "^4.0.7", + "is-resolvable": "^1.0.0", + "postcss": "^7.0.0" + } + }, + "cssnano-preset-default": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-4.0.7.tgz", + "integrity": "sha512-x0YHHx2h6p0fCl1zY9L9roD7rnlltugGu7zXSKQx6k2rYw0Hi3IqxcoAGF7u9Q5w1nt7vK0ulxV8Lo+EvllGsA==", + "dev": true, + "requires": { + "css-declaration-sorter": "^4.0.1", + "cssnano-util-raw-cache": "^4.0.1", + "postcss": "^7.0.0", + "postcss-calc": "^7.0.1", + "postcss-colormin": "^4.0.3", + "postcss-convert-values": "^4.0.1", + "postcss-discard-comments": "^4.0.2", + "postcss-discard-duplicates": "^4.0.2", + "postcss-discard-empty": "^4.0.1", + "postcss-discard-overridden": "^4.0.1", + "postcss-merge-longhand": "^4.0.11", + "postcss-merge-rules": "^4.0.3", + "postcss-minify-font-values": "^4.0.2", + "postcss-minify-gradients": "^4.0.2", + "postcss-minify-params": "^4.0.2", + "postcss-minify-selectors": "^4.0.2", + "postcss-normalize-charset": "^4.0.1", + "postcss-normalize-display-values": "^4.0.2", + "postcss-normalize-positions": "^4.0.2", + "postcss-normalize-repeat-style": "^4.0.2", + "postcss-normalize-string": "^4.0.2", + "postcss-normalize-timing-functions": "^4.0.2", + "postcss-normalize-unicode": "^4.0.1", + "postcss-normalize-url": "^4.0.1", + "postcss-normalize-whitespace": "^4.0.2", + "postcss-ordered-values": "^4.1.2", + "postcss-reduce-initial": "^4.0.3", + "postcss-reduce-transforms": "^4.0.2", + "postcss-svgo": "^4.0.2", + "postcss-unique-selectors": "^4.0.1" + } + }, + "cssnano-util-get-arguments": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz", + "integrity": "sha1-7ToIKZ8h11dBsg87gfGU7UnMFQ8=", + "dev": true + }, + "cssnano-util-get-match": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz", + "integrity": "sha1-wOTKB/U4a7F+xeUiULT1lhNlFW0=", + "dev": true + }, + "cssnano-util-raw-cache": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz", + "integrity": "sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA==", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "cssnano-util-same-parent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz", + "integrity": "sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q==", + "dev": true + }, + "csso": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz", + "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", + "dev": true, + "requires": { + "css-tree": "^1.1.2" + }, + "dependencies": { + "css-tree": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.2.tgz", + "integrity": "sha512-wCoWush5Aeo48GLhfHPbmvZs59Z+M7k5+B1xDnXbdWNcEF423DoFdqSWE0PM5aNk5nI5cp1q7ms36zGApY/sKQ==", + "dev": true, + "requires": { + "mdn-data": "2.0.14", + "source-map": "^0.6.1" + } + }, + "mdn-data": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", + "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "cyclist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz", + "integrity": "sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk=", + "dev": true + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "date-format-parse": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/date-format-parse/-/date-format-parse-0.2.6.tgz", + "integrity": "sha512-sdxnYAWmLopeb+6Hmw+vo3or4OCJOnh4+YoJ9p+Id3o2EnNP0INpTqx7wr8UregfMpgaSZAH473R/ytiaB3gVg==" + }, + "de-indent": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz", + "integrity": "sha1-sgOOhG3DO6pXlhKNCAS0VbjB4h0=" + }, + "debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true + }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "dev": true + }, + "deep-equal": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz", + "integrity": "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==", + "dev": true, + "requires": { + "is-arguments": "^1.0.4", + "is-date-object": "^1.0.1", + "is-regex": "^1.0.4", + "object-is": "^1.0.1", + "object-keys": "^1.1.1", + "regexp.prototype.flags": "^1.2.0" + } + }, + "deepmerge": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-1.5.2.tgz", + "integrity": "sha512-95k0GDqvBjZavkuvzx/YqVLv/6YYa17fz6ILMSf7neqQITCPbnfEnQvEgMPNjH4kgobe7+WIL0yJEHku+H3qtQ==", + "dev": true + }, + "default-gateway": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-5.0.5.tgz", + "integrity": "sha512-z2RnruVmj8hVMmAnEJMTIJNijhKCDiGjbLP+BHJFOT7ld3Bo5qcIBpVYDniqhbMIIf+jZDlkP2MkPXiQy/DBLA==", + "dev": true, + "requires": { + "execa": "^3.3.0" + }, + "dependencies": { + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "execa": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-3.4.0.tgz", + "integrity": "sha512-r9vdGQk4bmCuK1yKQu1KTwcT2zwfWdbdaXfCtAh+5nU/4fSX+JAb7vZGvI5naJrQlvONrEB20jeruESI69530g==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.0", + "get-stream": "^5.0.0", + "human-signals": "^1.1.1", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.0", + "onetime": "^5.1.0", + "p-finally": "^2.0.0", + "signal-exit": "^3.0.2", + "strip-final-newline": "^2.0.0" + } + }, + "get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "is-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", + "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==", + "dev": true + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true + }, + "npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "requires": { + "path-key": "^3.0.0" + } + }, + "onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "p-finally": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-2.0.1.tgz", + "integrity": "sha512-vpm09aKwq6H9phqRQzecoDpD8TmVyGw70qmWlyq5onxY7tqyTTFVvxMykxQSQKILBSFlbXpypIw2T1Ml7+DDtw==", + "dev": true + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "defaults": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", + "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", + "dev": true, + "requires": { + "clone": "^1.0.2" + } + }, + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dev": true, + "requires": { + "object-keys": "^1.0.12" + } + }, + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dev": true, + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + } + }, + "del": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/del/-/del-4.1.1.tgz", + "integrity": "sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ==", + "dev": true, + "requires": { + "@types/glob": "^7.1.1", + "globby": "^6.1.0", + "is-path-cwd": "^2.0.0", + "is-path-in-cwd": "^2.0.0", + "p-map": "^2.0.0", + "pify": "^4.0.1", + "rimraf": "^2.6.3" + }, + "dependencies": { + "globby": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", + "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", + "dev": true, + "requires": { + "array-union": "^1.0.1", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } + } + } + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" + }, + "des.js": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", + "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" + }, + "detect-node": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.0.4.tgz", + "integrity": "sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw==", + "dev": true + }, + "diff-match-patch": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/diff-match-patch/-/diff-match-patch-1.0.5.tgz", + "integrity": "sha512-IayShXAgj/QMXgB0IWmKx+rOPuGMhqm5w6jvFxmVenXKIzRqTAAsbBPT3kWQeGANj3jGgvcvv4yK6SxqYmikgw==" + }, + "diffie-hellman": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "dev": true + } + } + }, + "dir-glob": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.2.2.tgz", + "integrity": "sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw==", + "dev": true, + "requires": { + "path-type": "^3.0.0" + } + }, + "dns-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", + "integrity": "sha1-s55/HabrCnW6nBcySzR1PEfgZU0=", + "dev": true + }, + "dns-packet": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.1.tgz", + "integrity": "sha512-0UxfQkMhYAUaZI+xrNZOz/as5KgDU0M/fQ9b6SpkyLbk3GEswDi6PADJVaYJradtRVsRIlF1zLyOodbcTCDzUg==", + "dev": true, + "requires": { + "ip": "^1.1.0", + "safe-buffer": "^5.0.1" + } + }, + "dns-txt": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz", + "integrity": "sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=", + "dev": true, + "requires": { + "buffer-indexof": "^1.0.0" + } + }, + "dom-converter": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", + "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", + "dev": true, + "requires": { + "utila": "~0.4" + } + }, + "dom-serializer": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", + "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", + "dev": true, + "requires": { + "domelementtype": "^2.0.1", + "entities": "^2.0.0" + }, + "dependencies": { + "domelementtype": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.0.2.tgz", + "integrity": "sha512-wFwTwCVebUrMgGeAwRL/NhZtHAUyT9n9yg4IMDwf10+6iCMxSkVq9MGCVEH+QZWo1nNidy8kNvwmv4zWHDTqvA==", + "dev": true + } + } + }, + "domain-browser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", + "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", + "dev": true + }, + "domelementtype": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", + "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", + "dev": true + }, + "domhandler": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", + "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", + "dev": true, + "requires": { + "domelementtype": "1" + } + }, + "domutils": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", + "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", + "dev": true, + "requires": { + "dom-serializer": "0", + "domelementtype": "1" + } + }, + "dot-prop": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", + "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", + "dev": true, + "requires": { + "is-obj": "^2.0.0" + } + }, + "dotenv": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.2.0.tgz", + "integrity": "sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw==", + "dev": true + }, + "dotenv-expand": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-5.1.0.tgz", + "integrity": "sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==", + "dev": true + }, + "duplexer": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", + "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", + "dev": true + }, + "duplexify": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", + "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", + "dev": true, + "requires": { + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" + } + }, + "easy-stack": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/easy-stack/-/easy-stack-1.0.1.tgz", + "integrity": "sha512-wK2sCs4feiiJeFXn3zvY0p41mdU5VUgbgs1rNsc/y5ngFUijdWd+iIN8eoyuZHKB8xN6BL4PdWmzqFmxNg6V2w==", + "dev": true + }, + "ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "dev": true, + "requires": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" + }, + "ejs": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.7.4.tgz", + "integrity": "sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA==", + "dev": true + }, + "electron-to-chromium": { + "version": "1.3.609", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.609.tgz", + "integrity": "sha512-kcmRWmlHsUKKLfsSKSf7VqeTX4takM5ndjVTM3et3qpDCceITYI1DixvIfSDIngALoaTnpoMXD3SXSMpzHkYKA==", + "dev": true + }, + "elliptic": { + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.3.tgz", + "integrity": "sha512-IMqzv5wNQf+E6aHeIqATs0tOLeOTwj1QKbRcS3jBbYkl5oLAserA8yJTT7/VyHUYG91PRmPyeQDObKLPpeS4dw==", + "dev": true, + "requires": { + "bn.js": "^4.4.0", + "brorand": "^1.0.1", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.0" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "dev": true + } + } + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "dev": true + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" + }, + "end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, + "requires": { + "once": "^1.4.0" + } + }, + "engine.io": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-4.0.4.tgz", + "integrity": "sha512-4ggUX5pICZU17OTZNFv5+uFE/ZyoK+TIXv2SvxWWX8lwStllQ6Lvvs4lDBqvKpV9EYXNcvlNOcjKChd/mo+8Tw==", + "requires": { + "accepts": "~1.3.4", + "base64id": "2.0.0", + "cookie": "~0.4.1", + "cors": "~2.8.5", + "debug": "~4.1.0", + "engine.io-parser": "~4.0.0", + "ws": "^7.1.2" + }, + "dependencies": { + "cookie": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz", + "integrity": "sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==" + }, + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "engine.io-client": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-4.0.4.tgz", + "integrity": "sha512-and4JRvjv+BQ4WBLopYUFePxju3ms3aBRk0XjaLdh/t9TKv2LCKtKKWFRoRzIfUZsu3U38FcYqNLuXhfS16vqw==", + "requires": { + "base64-arraybuffer": "0.1.4", + "component-emitter": "~1.3.0", + "debug": "~4.1.0", + "engine.io-parser": "~4.0.1", + "has-cors": "1.1.0", + "parseqs": "0.0.6", + "parseuri": "0.0.6", + "ws": "~7.2.1", + "xmlhttprequest-ssl": "~1.5.4", + "yeast": "0.1.2" + }, + "dependencies": { + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "requires": { + "ms": "^2.1.1" + } + }, + "ws": { + "version": "7.2.5", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.2.5.tgz", + "integrity": "sha512-C34cIU4+DB2vMyAbmEKossWq2ZQDr6QEyuuCzWrM9zfw1sGc0mYiJ0UnG9zzNykt49C2Fi34hvr2vssFQRS6EA==" + } + } + }, + "engine.io-parser": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-4.0.1.tgz", + "integrity": "sha512-v5aZK1hlckcJDGmHz3W8xvI3NUHYc9t8QtTbqdR5OaH3S9iJZilPubauOm+vLWOMMWzpE3hiq92l9lTAHamRCg==" + }, + "enhanced-resolve": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.3.0.tgz", + "integrity": "sha512-3e87LvavsdxyoCfGusJnrZ5G8SLPOFeHSNpZI/ATL9a5leXo2k0w6MKnbqhdBad9qTobSfB20Ld7UmgoNbAZkQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "memory-fs": "^0.5.0", + "tapable": "^1.0.0" + }, + "dependencies": { + "memory-fs": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz", + "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", + "dev": true, + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + } + } + }, + "entities": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.1.0.tgz", + "integrity": "sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==", + "dev": true + }, + "errno": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz", + "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==", + "dev": true, + "requires": { + "prr": "~1.0.1" + } + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "error-stack-parser": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.0.6.tgz", + "integrity": "sha512-d51brTeqC+BHlwF0BhPtcYgF5nlzf9ZZ0ZIUQNZpc9ZB9qw5IJ2diTrBY9jlCJkTLITYPjmiX6OWCwH+fuyNgQ==", + "dev": true, + "requires": { + "stackframe": "^1.1.1" + } + }, + "es-abstract": { + "version": "1.18.0-next.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0-next.1.tgz", + "integrity": "sha512-I4UGspA0wpZXWENrdA0uHbnhte683t3qT/1VFH9aX2dA5PPSf6QW5HHXf5HImaqPmjXaVeVk4RGWnaylmV7uAA==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.2.2", + "is-negative-zero": "^2.0.0", + "is-regex": "^1.1.1", + "object-inspect": "^1.8.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.1", + "string.prototype.trimend": "^1.0.1", + "string.prototype.trimstart": "^1.0.1" + } + }, + "es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true + }, + "esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "requires": { + "estraverse": "^5.2.0" + }, + "dependencies": { + "estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "dev": true + } + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" + }, + "event-pubsub": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/event-pubsub/-/event-pubsub-4.3.0.tgz", + "integrity": "sha512-z7IyloorXvKbFx9Bpie2+vMJKKx1fH1EN5yiTfp8CiLOTptSYy1g8H4yDpGlEdshL1PBiFtBHepF2cNsqeEeFQ==", + "dev": true + }, + "eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "dev": true + }, + "events": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.2.0.tgz", + "integrity": "sha512-/46HWwbfCX2xTawVfkKLGxMifJYQBWMwY1mjywRtb4c9x8l5NP3KoJtnIOiL1hfdRkIuYhETxQlo62IF8tcnlg==", + "dev": true + }, + "eventsource": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-1.0.7.tgz", + "integrity": "sha512-4Ln17+vVT0k8aWq+t/bF5arcS3EpT9gYtW66EPacdj/mAFevznsnyoHLPy2BA8gbIQeIHoPsvwmfBftfcG//BQ==", + "dev": true, + "requires": { + "original": "^1.0.0" + } + }, + "evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "dev": true, + "requires": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, + "execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dev": true, + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + }, + "dependencies": { + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + } + } + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "express": { + "version": "4.17.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", + "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", + "requires": { + "accepts": "~1.3.7", + "array-flatten": "1.1.1", + "body-parser": "1.19.0", + "content-disposition": "0.5.3", + "content-type": "~1.0.4", + "cookie": "0.4.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "~1.1.2", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "~1.1.2", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.5", + "qs": "6.7.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.1.2", + "send": "0.17.1", + "serve-static": "1.14.1", + "setprototypeof": "1.1.1", + "statuses": "~1.5.0", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + } + } + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "dev": true + }, + "fast-glob": { + "version": "2.2.7", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.7.tgz", + "integrity": "sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw==", + "dev": true, + "requires": { + "@mrmlnc/readdir-enhanced": "^2.2.1", + "@nodelib/fs.stat": "^1.1.2", + "glob-parent": "^3.1.0", + "is-glob": "^4.0.0", + "merge2": "^1.2.3", + "micromatch": "^3.1.10" + } + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "faye-websocket": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz", + "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=", + "dev": true, + "requires": { + "websocket-driver": ">=0.5.1" + } + }, + "figgy-pudding": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz", + "integrity": "sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==", + "dev": true + }, + "file-loader": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-4.3.0.tgz", + "integrity": "sha512-aKrYPYjF1yG3oX0kWRrqrSMfgftm7oJW5M+m4owoldH5C51C0RkIwB++JbRvEW3IU6/ZG5n8UvEcdgwOt2UOWA==", + "dev": true, + "requires": { + "loader-utils": "^1.2.3", + "schema-utils": "^2.5.0" + } + }, + "file-saver": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/file-saver/-/file-saver-2.0.5.tgz", + "integrity": "sha512-P9bmyZ3h/PRG+Nzga+rbdI4OEpNDzAVyy74uVO9ATgzLK6VtAsYybF/+TOCvrc0MO793d6+42lLyZTw7/ArVzA==" + }, + "file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "dev": true, + "optional": true + }, + "filesize": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/filesize/-/filesize-3.6.1.tgz", + "integrity": "sha512-7KjR1vv6qnicaPMi1iiTcI85CyYwRO/PSFCu6SvqL8jN2Wjt/NIYQTFtFs7fSDCYOstUkEWIQGFUg5YZQfjlcg==", + "dev": true + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + } + } + }, + "finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "find-cache-dir": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.1.tgz", + "integrity": "sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ==", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + } + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "flush-write-stream": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", + "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "readable-stream": "^2.3.6" + } + }, + "follow-redirects": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.13.0.tgz", + "integrity": "sha512-aq6gF1BEKje4a9i9+5jimNFIpq4Q1WiwBToeRK5NvZBd/TRsmW8BsJfOEGkr76TbOyPVD3OVDN910EcUNtRYEA==" + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "dev": true + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "dev": true + }, + "form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "dev": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + }, + "forwarded": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", + "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=" + }, + "fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "dev": true, + "requires": { + "map-cache": "^0.2.2" + } + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" + }, + "from2": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", + "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.0" + } + }, + "fs-extra": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", + "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "fs-write-stream-atomic": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", + "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "iferr": "^0.1.5", + "imurmurhash": "^0.1.4", + "readable-stream": "1 || 2" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "fsevents": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", + "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", + "dev": true, + "optional": true + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true + }, + "get-intrinsic": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.0.1.tgz", + "integrity": "sha512-ZnWP+AmS1VUaLgTRy47+zKtjTxz+0xMpx3I52i+aalBK1QP19ggLF3Db89KJX7kjfOfP2eoa01qc++GwPgufPg==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" + } + }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "dev": true + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dev": true, + "requires": { + "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" + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dev": true, + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "glob-to-regexp": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz", + "integrity": "sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=", + "dev": true + }, + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true + }, + "globby": { + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-9.2.0.tgz", + "integrity": "sha512-ollPHROa5mcxDEkwg6bPt3QbEf4pDQSNtd6JPL1YvOvAo/7/0VAm9TccUeoTmarjPw4pfUthSCqcyfNB1I3ZSg==", + "dev": true, + "requires": { + "@types/glob": "^7.1.1", + "array-union": "^1.0.2", + "dir-glob": "^2.2.2", + "fast-glob": "^2.2.6", + "glob": "^7.1.3", + "ignore": "^4.0.3", + "pify": "^4.0.1", + "slash": "^2.0.0" + }, + "dependencies": { + "ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true + } + } + }, + "graceful-fs": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", + "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", + "dev": true + }, + "gzip-size": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-5.1.1.tgz", + "integrity": "sha512-FNHi6mmoHvs1mxZAds4PpdCS6QG8B4C1krxJsMutgxl5t3+GlRTzzI3NEkifXx2pVsOvJdOGSmIgDhQ55FwdPA==", + "dev": true, + "requires": { + "duplexer": "^0.1.1", + "pify": "^4.0.1" + } + }, + "handle-thing": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", + "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", + "dev": true + }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "dev": true + }, + "har-validator": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", + "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", + "dev": true, + "requires": { + "ajv": "^6.12.3", + "har-schema": "^2.0.0" + }, + "dependencies": { + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + } + } + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + } + } + }, + "has-cors": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz", + "integrity": "sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk=" + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "has-symbols": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", + "dev": true + }, + "has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "dev": true, + "requires": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + } + }, + "has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "dependencies": { + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "hash-base": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", + "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", + "dev": true, + "requires": { + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + } + } + }, + "hash-sum": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-2.0.0.tgz", + "integrity": "sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg==", + "dev": true + }, + "hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==" + }, + "hex-color-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/hex-color-regex/-/hex-color-regex-1.1.0.tgz", + "integrity": "sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ==", + "dev": true + }, + "highlight.js": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.4.0.tgz", + "integrity": "sha512-EfrUGcQ63oLJbj0J0RI9ebX6TAITbsDBLbsjr881L/X5fMO9+oadKzEF21C7R3ULKG6Gv3uoab2HiqVJa/4+oA==", + "dev": true + }, + "hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", + "dev": true, + "requires": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "hoopy": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/hoopy/-/hoopy-0.1.4.tgz", + "integrity": "sha512-HRcs+2mr52W0K+x8RzcLzuPPmVIKMSv97RGHy0Ea9y/mpcaK+xTrjICA04KAHi4GRzxliNqNJEFYWHghy3rSfQ==", + "dev": true + }, + "hosted-git-info": { + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", + "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==", + "dev": true + }, + "hpack.js": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" + } + }, + "hsl-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hsl-regex/-/hsl-regex-1.0.0.tgz", + "integrity": "sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4=", + "dev": true + }, + "hsla-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hsla-regex/-/hsla-regex-1.0.0.tgz", + "integrity": "sha1-wc56MWjIxmFAM6S194d/OyJfnDg=", + "dev": true + }, + "html-comment-regex": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/html-comment-regex/-/html-comment-regex-1.1.2.tgz", + "integrity": "sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ==", + "dev": true + }, + "html-entities": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.3.1.tgz", + "integrity": "sha512-rhE/4Z3hIhzHAUKbW8jVcCyuT5oJCXXqhN/6mXXVCpzTmvJnoH2HL/bt3EZ6p55jbFJBeAe1ZNpL5BugLujxNA==", + "dev": true + }, + "html-minifier": { + "version": "3.5.21", + "resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-3.5.21.tgz", + "integrity": "sha512-LKUKwuJDhxNa3uf/LPR/KVjm/l3rBqtYeCOAekvG8F1vItxMUpueGd94i/asDDr8/1u7InxzFA5EeGjhhG5mMA==", + "dev": true, + "requires": { + "camel-case": "3.0.x", + "clean-css": "4.2.x", + "commander": "2.17.x", + "he": "1.2.x", + "param-case": "2.1.x", + "relateurl": "0.2.x", + "uglify-js": "3.4.x" + } + }, + "html-tags": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.1.0.tgz", + "integrity": "sha512-1qYz89hW3lFDEazhjW0yVAV87lw8lVkrJocr72XmBkMKsoSVJCQx3W8BXsC7hO2qAt8BoVjYjtAcZ9perqGnNg==", + "dev": true + }, + "html-webpack-plugin": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-3.2.0.tgz", + "integrity": "sha1-sBq71yOsqqeze2r0SS69oD2d03s=", + "dev": true, + "requires": { + "html-minifier": "^3.2.3", + "loader-utils": "^0.2.16", + "lodash": "^4.17.3", + "pretty-error": "^2.0.2", + "tapable": "^1.0.0", + "toposort": "^1.0.0", + "util.promisify": "1.0.0" + }, + "dependencies": { + "big.js": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", + "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==", + "dev": true + }, + "emojis-list": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", + "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", + "dev": true + }, + "json5": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", + "dev": true + }, + "loader-utils": { + "version": "0.2.17", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz", + "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=", + "dev": true, + "requires": { + "big.js": "^3.1.3", + "emojis-list": "^2.0.0", + "json5": "^0.5.0", + "object-assign": "^4.0.1" + } + } + } + }, + "htmlparser2": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", + "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==", + "dev": true, + "requires": { + "domelementtype": "^1.3.1", + "domhandler": "^2.3.0", + "domutils": "^1.5.1", + "entities": "^1.1.1", + "inherits": "^2.0.1", + "readable-stream": "^3.1.1" + }, + "dependencies": { + "entities": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", + "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==", + "dev": true + }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "http-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=", + "dev": true + }, + "http-errors": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", + "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.1", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.0" + }, + "dependencies": { + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + } + } + }, + "http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "dev": true, + "requires": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + } + }, + "http-proxy-middleware": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz", + "integrity": "sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q==", + "dev": true, + "requires": { + "http-proxy": "^1.17.0", + "is-glob": "^4.0.0", + "lodash": "^4.17.11", + "micromatch": "^3.1.10" + } + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, + "https-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", + "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", + "dev": true + }, + "human-signals": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", + "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==", + "dev": true + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "icss-utils": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-4.1.1.tgz", + "integrity": "sha512-4aFq7wvWyMHKgxsH8QQtGpvbASCf+eM3wPRLI6R+MgAnTCZ6STYsRvttLvRWK0Nfif5piF394St3HeJDaljGPA==", + "dev": true, + "requires": { + "postcss": "^7.0.14" + } + }, + "ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true + }, + "iferr": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", + "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=", + "dev": true + }, + "ignore": { + "version": "3.3.10", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz", + "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==", + "dev": true + }, + "immediate": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", + "integrity": "sha1-nbHb0Pr43m++D13V5Wu2BigN5ps=" + }, + "import": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/import/-/import-0.0.6.tgz", + "integrity": "sha1-0Ot534aqJnfG22FXilISswMeYEI=", + "requires": { + "optimist": "0.3.x" + } + }, + "import-cwd": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-cwd/-/import-cwd-2.1.0.tgz", + "integrity": "sha1-qmzzbnInYShcs3HsZRn1PiQ1sKk=", + "dev": true, + "requires": { + "import-from": "^2.1.0" + } + }, + "import-fresh": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", + "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=", + "dev": true, + "requires": { + "caller-path": "^2.0.0", + "resolve-from": "^3.0.0" + } + }, + "import-from": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-from/-/import-from-2.1.0.tgz", + "integrity": "sha1-M1238qev/VOqpHHUuAId7ja387E=", + "dev": true, + "requires": { + "resolve-from": "^3.0.0" + } + }, + "import-local": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz", + "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==", + "dev": true, + "requires": { + "pkg-dir": "^3.0.0", + "resolve-cwd": "^2.0.0" + }, + "dependencies": { + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + }, + "pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "dev": true, + "requires": { + "find-up": "^3.0.0" + } + } + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, + "indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true + }, + "indexes-of": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", + "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=", + "dev": true + }, + "infer-owner": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", + "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "internal-ip": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-4.3.0.tgz", + "integrity": "sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg==", + "dev": true, + "requires": { + "default-gateway": "^4.2.0", + "ipaddr.js": "^1.9.0" + }, + "dependencies": { + "default-gateway": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-4.2.0.tgz", + "integrity": "sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA==", + "dev": true, + "requires": { + "execa": "^1.0.0", + "ip-regex": "^2.1.0" + } + } + } + }, + "ip": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", + "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=", + "dev": true + }, + "ip-regex": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz", + "integrity": "sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=", + "dev": true + }, + "ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" + }, + "is-absolute-url": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz", + "integrity": "sha1-UFMN+4T8yap9vnhS6Do3uTufKqY=", + "dev": true + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-arguments": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.0.4.tgz", + "integrity": "sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA==", + "dev": true + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "optional": true, + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "is-callable": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.2.tgz", + "integrity": "sha512-dnMqspv5nU3LoewK2N/y7KLtxtakvTuaCsU9FU50/QDmdbHNy/4/JuRtMHqRU22o3q+W89YQndQEeCVwK+3qrA==", + "dev": true + }, + "is-color-stop": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-color-stop/-/is-color-stop-1.1.0.tgz", + "integrity": "sha1-z/9HGu5N1cnhWFmPvhKWe1za00U=", + "dev": true, + "requires": { + "css-color-names": "^0.0.4", + "hex-color-regex": "^1.1.0", + "hsl-regex": "^1.0.0", + "hsla-regex": "^1.0.0", + "rgb-regex": "^1.0.1", + "rgba-regex": "^1.0.0" + } + }, + "is-core-module": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.2.0.tgz", + "integrity": "sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-date-object": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", + "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==", + "dev": true + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "is-directory": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", + "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=", + "dev": true + }, + "is-docker": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.1.1.tgz", + "integrity": "sha512-ZOoqiXfEwtGknTiuDEy8pN2CfE3TxMHprvNer1mXiqwkOT77Rw3YVrUQ52EqAOU3QAWDQ+bQdx7HJzrv7LS2Hw==", + "dev": true + }, + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-negative-zero": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.0.tgz", + "integrity": "sha1-lVOxIbD6wohp2p7UWeIMdUN4hGE=", + "dev": true + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", + "dev": true + }, + "is-path-cwd": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", + "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", + "dev": true + }, + "is-path-in-cwd": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz", + "integrity": "sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ==", + "dev": true, + "requires": { + "is-path-inside": "^2.1.0" + } + }, + "is-path-inside": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-2.1.0.tgz", + "integrity": "sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg==", + "dev": true, + "requires": { + "path-is-inside": "^1.0.2" + } + }, + "is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", + "dev": true + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "is-regex": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.1.tgz", + "integrity": "sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg==", + "dev": true, + "requires": { + "has-symbols": "^1.0.1" + } + }, + "is-resolvable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz", + "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==", + "dev": true + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true + }, + "is-svg": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-3.0.0.tgz", + "integrity": "sha512-gi4iHK53LR2ujhLVVj+37Ykh9GLqYHX6JOVXbLAucaG/Cqw9xwdFOjDM2qeifLs1sF1npXXFvDu0r5HNgCMrzQ==", + "dev": true, + "requires": { + "html-comment-regex": "^1.1.0" + } + }, + "is-symbol": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", + "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", + "dev": true, + "requires": { + "has-symbols": "^1.0.1" + } + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true + }, + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true + }, + "is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, + "requires": { + "is-docker": "^2.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "dev": true + }, + "javascript-stringify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/javascript-stringify/-/javascript-stringify-2.0.1.tgz", + "integrity": "sha512-yV+gqbd5vaOYjqlbk16EG89xB5udgjqQF3C5FAORDg4f/IS1Yc5ERCv5e/57yBcfJYw05V5JyIXabhwb75Xxow==", + "dev": true + }, + "jest-worker": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-25.5.0.tgz", + "integrity": "sha512-/dsSmUkIy5EBGfv/IjjqmFxrNAUpBERfGs1oHROyD7yxjG/w+t0GOJDX8O1k32ySmd7+a5IhnJU2qQFcJ4n1vw==", + "dev": true, + "requires": { + "merge-stream": "^2.0.0", + "supports-color": "^7.0.0" + }, + "dependencies": { + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "js-message": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/js-message/-/js-message-1.0.7.tgz", + "integrity": "sha512-efJLHhLjIyKRewNS9EGZ4UpI8NguuL6fKkhRxVuMmrGV2xN/0APGdQYwLFky5w9naebSZ0OwAGp0G6/2Cg90rA==", + "dev": true + }, + "js-queue": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/js-queue/-/js-queue-2.0.2.tgz", + "integrity": "sha512-pbKLsbCfi7kriM3s1J4DDCo7jQkI58zPLHi0heXPzPlj0hjUsm+FesPUbE0DSbIVIK503A36aUBoCN7eMFedkA==", + "dev": true, + "requires": { + "easy-stack": "^1.0.1" + } + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "js-yaml": { + "version": "3.14.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.0.tgz", + "integrity": "sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "dev": true + }, + "jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true + }, + "json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true + }, + "json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true + }, + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "dev": true + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "dev": true + }, + "json3": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.3.tgz", + "integrity": "sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA==", + "dev": true + }, + "json5": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz", + "integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "jszip": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.5.0.tgz", + "integrity": "sha512-WRtu7TPCmYePR1nazfrtuF216cIVon/3GWOvHS9QR5bIwSbnxtdpma6un3jyGGNhHsKCSzn5Ypk+EkDRvTGiFA==", + "requires": { + "lie": "~3.3.0", + "pako": "~1.0.2", + "readable-stream": "~2.3.6", + "set-immediate-shim": "~1.0.1" + } + }, + "killable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/killable/-/killable-1.0.1.tgz", + "integrity": "sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg==", + "dev": true + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true + }, + "launch-editor": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.2.1.tgz", + "integrity": "sha512-On+V7K2uZK6wK7x691ycSUbLD/FyKKelArkbaAMSSJU8JmqmhwN2+mnJDNINuJWSrh2L0kDk+ZQtbC/gOWUwLw==", + "dev": true, + "requires": { + "chalk": "^2.3.0", + "shell-quote": "^1.6.1" + } + }, + "launch-editor-middleware": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/launch-editor-middleware/-/launch-editor-middleware-2.2.1.tgz", + "integrity": "sha512-s0UO2/gEGiCgei3/2UN3SMuUj1phjQN8lcpnvgLSz26fAzNWPQ6Nf/kF5IFClnfU2ehp6LrmKdMU/beveO+2jg==", + "dev": true, + "requires": { + "launch-editor": "^2.2.1" + } + }, + "lie": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", + "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", + "requires": { + "immediate": "~3.0.5" + } + }, + "line-counter": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/line-counter/-/line-counter-1.1.0.tgz", + "integrity": "sha1-EN8sBGrTVG5yT7pV+nLN4YpqAfM=" + }, + "lines-and-columns": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", + "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=", + "dev": true + }, + "loader-runner": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz", + "integrity": "sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==", + "dev": true + }, + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + }, + "dependencies": { + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + } + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==" + }, + "lodash.defaultsdeep": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/lodash.defaultsdeep/-/lodash.defaultsdeep-4.6.1.tgz", + "integrity": "sha512-3j8wdDzYuWO3lM3Reg03MuQR957t287Rpcxp1njpEa8oDrikb+FwGdW3n+FELh/A6qib6yPit0j/pv9G/yeAqA==", + "dev": true + }, + "lodash.kebabcase": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz", + "integrity": "sha1-hImxyw0p/4gZXM7KRI/21swpXDY=", + "dev": true + }, + "lodash.mapvalues": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.mapvalues/-/lodash.mapvalues-4.6.0.tgz", + "integrity": "sha1-G6+lAF3p3W9PJmaMMMo3IwzJaJw=", + "dev": true + }, + "lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=", + "dev": true + }, + "lodash.transform": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.transform/-/lodash.transform-4.6.0.tgz", + "integrity": "sha1-EjBkIvYzJK7YSD0/ODMrX2cFR6A=", + "dev": true + }, + "lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=", + "dev": true + }, + "log-symbols": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", + "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", + "dev": true, + "requires": { + "chalk": "^2.0.1" + } + }, + "loglevel": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.7.1.tgz", + "integrity": "sha512-Hesni4s5UkWkwCGJMQGAh71PaLUmKFM60dHvq0zi/vDhhrzuk+4GgNbTXJ12YYQJn6ZKBDNIjYcuQGKudvqrIw==", + "dev": true + }, + "lower-case": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", + "integrity": "sha1-miyr0bno4K6ZOkv31YdcOcQujqw=", + "dev": true + }, + "lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "requires": { + "yallist": "^3.0.2" + } + }, + "luxon": { + "version": "1.25.0", + "resolved": "https://registry.npmjs.org/luxon/-/luxon-1.25.0.tgz", + "integrity": "sha512-hEgLurSH8kQRjY6i4YLey+mcKVAWXbDNlZRmM6AgWDJ1cY3atl8Ztf5wEY7VBReFbmGnwQPz7KYJblL8B2k0jQ==" + }, + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "requires": { + "semver": "^6.0.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "dev": true + }, + "map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "dev": true, + "requires": { + "object-visit": "^1.0.0" + } + }, + "md5.js": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "dev": true, + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "mdn-data": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz", + "integrity": "sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==", + "dev": true + }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" + }, + "memory-fs": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", + "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", + "dev": true, + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + }, + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" + }, + "merge-source-map": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.1.0.tgz", + "integrity": "sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw==", + "dev": true, + "requires": { + "source-map": "^0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + }, + "miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "dev": true, + "requires": { + "bn.js": "^4.0.0", + "brorand": "^1.0.1" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "dev": true + } + } + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" + }, + "mime-db": { + "version": "1.44.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz", + "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==" + }, + "mime-types": { + "version": "2.1.27", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz", + "integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==", + "requires": { + "mime-db": "1.44.0" + } + }, + "mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "dev": true + }, + "mini-css-extract-plugin": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-0.9.0.tgz", + "integrity": "sha512-lp3GeY7ygcgAmVIcRPBVhIkf8Us7FZjA+ILpal44qLdSu11wmjKQ3d9k15lfD7pO4esu9eUIAW7qiYIBppv40A==", + "dev": true, + "requires": { + "loader-utils": "^1.1.0", + "normalize-url": "1.9.1", + "schema-utils": "^1.0.0", + "webpack-sources": "^1.1.0" + }, + "dependencies": { + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + } + } + }, + "minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "dev": true + }, + "minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" + }, + "minipass": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.3.tgz", + "integrity": "sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + }, + "dependencies": { + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + } + }, + "minipass-collect": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", + "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "minipass-flush": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", + "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "minipass-pipeline": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", + "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "mississippi": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz", + "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==", + "dev": true, + "requires": { + "concat-stream": "^1.5.0", + "duplexify": "^3.4.2", + "end-of-stream": "^1.1.0", + "flush-write-stream": "^1.0.0", + "from2": "^2.1.0", + "parallel-transform": "^1.1.0", + "pump": "^3.0.0", + "pumpify": "^1.3.3", + "stream-each": "^1.1.0", + "through2": "^2.0.0" + } + }, + "mixin-deep": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", + "dev": true, + "requires": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + } + }, + "mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "requires": { + "minimist": "^1.2.5" + } + }, + "move-concurrently": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", + "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=", + "dev": true, + "requires": { + "aproba": "^1.1.1", + "copy-concurrently": "^1.0.0", + "fs-write-stream-atomic": "^1.0.8", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.3" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "multicast-dns": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.3.tgz", + "integrity": "sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==", + "dev": true, + "requires": { + "dns-packet": "^1.3.1", + "thunky": "^1.0.2" + } + }, + "multicast-dns-service-types": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz", + "integrity": "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=", + "dev": true + }, + "multilang-extract-comments": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/multilang-extract-comments/-/multilang-extract-comments-0.3.3.tgz", + "integrity": "sha512-9NqT+Cf1yvM/eYp+ILUczzz2ca4upYbdQQwSn550ldFA7hX2WVZzo7jaddFkSfq6EkIkPaeWBL+LP+BZuHK0oA==", + "requires": { + "comment-patterns": "^0.11.0", + "line-counter": "^1.0.3", + "lodash": "^4.17.11", + "quotemeta": "0.0.0" + } + }, + "mz": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "dev": true, + "requires": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + } + }, + "nan": { + "version": "2.14.2", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.2.tgz", + "integrity": "sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ==", + "dev": true, + "optional": true + }, + "nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + } + }, + "negotiator": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", + "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==" + }, + "neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true + }, + "nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true + }, + "no-case": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz", + "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==", + "dev": true, + "requires": { + "lower-case": "^1.1.1" + } + }, + "node-fetch": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", + "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==" + }, + "node-forge": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.10.0.tgz", + "integrity": "sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==", + "dev": true + }, + "node-ipc": { + "version": "9.1.3", + "resolved": "https://registry.npmjs.org/node-ipc/-/node-ipc-9.1.3.tgz", + "integrity": "sha512-8RS4RZyS/KMKKYG8mrje+cLxwATe9dBCuOiqKFSWND4oOuKytfuKCiR9yinvhoXF/nGdX/WnbywaUee+9U87zA==", + "dev": true, + "requires": { + "event-pubsub": "4.3.0", + "js-message": "1.0.7", + "js-queue": "2.0.2" + } + }, + "node-libs-browser": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz", + "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==", + "dev": true, + "requires": { + "assert": "^1.1.1", + "browserify-zlib": "^0.2.0", + "buffer": "^4.3.0", + "console-browserify": "^1.1.0", + "constants-browserify": "^1.0.0", + "crypto-browserify": "^3.11.0", + "domain-browser": "^1.1.1", + "events": "^3.0.0", + "https-browserify": "^1.0.0", + "os-browserify": "^0.3.0", + "path-browserify": "0.0.1", + "process": "^0.11.10", + "punycode": "^1.2.4", + "querystring-es3": "^0.2.0", + "readable-stream": "^2.3.3", + "stream-browserify": "^2.0.1", + "stream-http": "^2.7.2", + "string_decoder": "^1.0.0", + "timers-browserify": "^2.0.4", + "tty-browserify": "0.0.0", + "url": "^0.11.0", + "util": "^0.11.0", + "vm-browserify": "^1.0.1" + }, + "dependencies": { + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true + } + } + }, + "node-releases": { + "version": "1.1.67", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.67.tgz", + "integrity": "sha512-V5QF9noGFl3EymEwUYzO+3NTDpGfQB4ve6Qfnzf3UNydMhjQRVPR1DZTuvWiLzaFJYw2fmDwAfnRNEVb64hSIg==", + "dev": true + }, + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + }, + "normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=", + "dev": true + }, + "normalize-url": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-1.9.1.tgz", + "integrity": "sha1-LMDWazHqIwNkWENuNiDYWVTGbDw=", + "dev": true, + "requires": { + "object-assign": "^4.0.1", + "prepend-http": "^1.0.0", + "query-string": "^4.1.0", + "sort-keys": "^1.0.0" + } + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "dev": true, + "requires": { + "path-key": "^2.0.0" + } + }, + "nth-check": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", + "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", + "dev": true, + "requires": { + "boolbase": "~1.0.0" + } + }, + "num2fraction": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", + "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=", + "dev": true + }, + "oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + }, + "object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "dev": true, + "requires": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "object-inspect": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.8.0.tgz", + "integrity": "sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA==", + "dev": true + }, + "object-is": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.4.tgz", + "integrity": "sha512-1ZvAZ4wlF7IyPVOcE1Omikt7UpaFlOQq0HlSti+ZvDH3UiD2brwGMwDbyV43jao2bKJ+4+WdPJHSd7kgzKYVqg==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3" + } + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true + }, + "object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "dev": true, + "requires": { + "isobject": "^3.0.0" + } + }, + "object.assign": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", + "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" + } + }, + "object.getownpropertydescriptors": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.1.tgz", + "integrity": "sha512-6DtXgZ/lIZ9hqx4GtZETobXLR/ZLaa0aqV0kzbn80Rf8Z2e/XFnhA0I7p07N2wH8bBBltr2xQPi6sbKWAY2Eng==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "es-abstract": "^1.18.0-next.1" + } + }, + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "object.values": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.2.tgz", + "integrity": "sha512-MYC0jvJopr8EK6dPBiO8Nb9mvjdypOachO5REGk6MXzujbBrAisKo3HmdEI6kZDL6fC31Mwee/5YbtMebixeag==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "es-abstract": "^1.18.0-next.1", + "has": "^1.0.3" + } + }, + "obuf": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", + "dev": true + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "requires": { + "ee-first": "1.1.1" + } + }, + "on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "dev": true + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", + "dev": true, + "requires": { + "mimic-fn": "^1.0.0" + } + }, + "open": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/open/-/open-6.4.0.tgz", + "integrity": "sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg==", + "dev": true, + "requires": { + "is-wsl": "^1.1.0" + }, + "dependencies": { + "is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", + "dev": true + } + } + }, + "opener": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz", + "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==", + "dev": true + }, + "opn": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/opn/-/opn-5.5.0.tgz", + "integrity": "sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA==", + "dev": true, + "requires": { + "is-wsl": "^1.1.0" + }, + "dependencies": { + "is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", + "dev": true + } + } + }, + "optimist": { + "version": "0.3.7", + "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.3.7.tgz", + "integrity": "sha1-yQlBrVnkJzMokjB00s8ufLxuwNk=", + "requires": { + "wordwrap": "~0.0.2" + } + }, + "ora": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/ora/-/ora-3.4.0.tgz", + "integrity": "sha512-eNwHudNbO1folBP3JsZ19v9azXWtQZjICdr3Q0TDPIaeBQ3mXLrh54wM+er0+hSp+dWKf+Z8KM58CYzEyIYxYg==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "cli-cursor": "^2.1.0", + "cli-spinners": "^2.0.0", + "log-symbols": "^2.2.0", + "strip-ansi": "^5.2.0", + "wcwidth": "^1.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "original": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/original/-/original-1.0.2.tgz", + "integrity": "sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg==", + "dev": true, + "requires": { + "url-parse": "^1.4.3" + } + }, + "os-browserify": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", + "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", + "dev": true + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "dev": true + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "p-map": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", + "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", + "dev": true + }, + "p-retry": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-3.0.1.tgz", + "integrity": "sha512-XE6G4+YTTkT2a0UWb2kjZe8xNwf8bIbnqpc/IS/idOBVhyves0mK5OJgeocjx7q5pvX/6m23xuzVPYT1uGM73w==", + "dev": true, + "requires": { + "retry": "^0.12.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, + "pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" + }, + "parallel-transform": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.2.0.tgz", + "integrity": "sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==", + "dev": true, + "requires": { + "cyclist": "^1.0.1", + "inherits": "^2.0.3", + "readable-stream": "^2.1.5" + } + }, + "param-case": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-2.1.1.tgz", + "integrity": "sha1-35T9jPZTHs915r75oIWPvHK+Ikc=", + "dev": true, + "requires": { + "no-case": "^2.2.0" + } + }, + "parse-asn1": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", + "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", + "dev": true, + "requires": { + "asn1.js": "^5.2.0", + "browserify-aes": "^1.0.0", + "evp_bytestokey": "^1.0.0", + "pbkdf2": "^3.0.3", + "safe-buffer": "^5.1.1" + } + }, + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "dev": true, + "requires": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } + }, + "parse5": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.1.tgz", + "integrity": "sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==", + "dev": true + }, + "parse5-htmlparser2-tree-adapter": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz", + "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==", + "dev": true, + "requires": { + "parse5": "^6.0.1" + }, + "dependencies": { + "parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", + "dev": true + } + } + }, + "parseqs": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.6.tgz", + "integrity": "sha512-jeAGzMDbfSHHA091hr0r31eYfTig+29g3GKKE/PPbEQ65X0lmMwlEoqmhzu0iztID5uJpZsFlUPDP8ThPL7M8w==" + }, + "parseuri": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.6.tgz", + "integrity": "sha512-AUjen8sAkGgao7UyCX6Ahv0gIK2fABKmYjvP4xmy5JaKvcbTRueIqIPHLAfq30xJddqSE033IOMUSOMCcK3Sow==" + }, + "parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" + }, + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", + "dev": true + }, + "path-browserify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz", + "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==", + "dev": true + }, + "path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", + "dev": true + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", + "dev": true + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true + }, + "path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "dev": true + }, + "path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" + }, + "path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "dev": true, + "requires": { + "pify": "^3.0.0" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + } + } + }, + "pbkdf2": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.1.tgz", + "integrity": "sha512-4Ejy1OPxi9f2tt1rRV7Go7zmfDQ+ZectEQz3VGUQhgq62HtIRPDyG/JtnwIxs6x3uNMwo2V7q1fMvKjb+Tnpqg==", + "dev": true, + "requires": { + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "dev": true + }, + "picomatch": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", + "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", + "dev": true, + "optional": true + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "dev": true + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "dev": true, + "requires": { + "pinkie": "^2.0.0" + } + }, + "pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "requires": { + "find-up": "^4.0.0" + } + }, + "pnp-webpack-plugin": { + "version": "1.6.4", + "resolved": "https://registry.npmjs.org/pnp-webpack-plugin/-/pnp-webpack-plugin-1.6.4.tgz", + "integrity": "sha512-7Wjy+9E3WwLOEL30D+m8TSTF7qJJUJLONBnwQp0518siuMxUQUbgZwssaFX+QKlZkjHZcw/IpZCt/H0srrntSg==", + "dev": true, + "requires": { + "ts-pnp": "^1.1.6" + } + }, + "popper.js": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.16.1.tgz", + "integrity": "sha512-Wb4p1J4zyFTbM+u6WuO4XstYx4Ky9Cewe4DWrel7B0w6VVICvPwdOpotjzcf6eD8TsckVnIMNONQyPIUFOUbCQ==" + }, + "portal-vue": { + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/portal-vue/-/portal-vue-2.1.7.tgz", + "integrity": "sha512-+yCno2oB3xA7irTt0EU5Ezw22L2J51uKAacE/6hMPMoO/mx3h4rXFkkBkT4GFsMDv/vEe8TNKC3ujJJ0PTwb6g==" + }, + "portfinder": { + "version": "1.0.28", + "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.28.tgz", + "integrity": "sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA==", + "dev": true, + "requires": { + "async": "^2.6.2", + "debug": "^3.1.1", + "mkdirp": "^0.5.5" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", + "dev": true + }, + "postcss": { + "version": "7.0.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", + "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "postcss-calc": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-7.0.5.tgz", + "integrity": "sha512-1tKHutbGtLtEZF6PT4JSihCHfIVldU72mZ8SdZHIYriIZ9fh9k9aWSppaT8rHsyI3dX+KSR+W+Ix9BMY3AODrg==", + "dev": true, + "requires": { + "postcss": "^7.0.27", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.0.2" + } + }, + "postcss-colormin": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-4.0.3.tgz", + "integrity": "sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw==", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "color": "^3.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-convert-values": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz", + "integrity": "sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ==", + "dev": true, + "requires": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-discard-comments": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz", + "integrity": "sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg==", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-discard-duplicates": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz", + "integrity": "sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ==", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-discard-empty": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz", + "integrity": "sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w==", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-discard-overridden": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz", + "integrity": "sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg==", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-load-config": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-2.1.2.tgz", + "integrity": "sha512-/rDeGV6vMUo3mwJZmeHfEDvwnTKKqQ0S7OHUi/kJvvtx3aWtyWG2/0ZWnzCt2keEclwN6Tf0DST2v9kITdOKYw==", + "dev": true, + "requires": { + "cosmiconfig": "^5.0.0", + "import-cwd": "^2.0.0" + } + }, + "postcss-loader": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-3.0.0.tgz", + "integrity": "sha512-cLWoDEY5OwHcAjDnkyRQzAXfs2jrKjXpO/HQFcc5b5u/r7aa471wdmChmwfnv7x2u840iat/wi0lQ5nbRgSkUA==", + "dev": true, + "requires": { + "loader-utils": "^1.1.0", + "postcss": "^7.0.0", + "postcss-load-config": "^2.0.0", + "schema-utils": "^1.0.0" + }, + "dependencies": { + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + } + } + }, + "postcss-merge-longhand": { + "version": "4.0.11", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz", + "integrity": "sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw==", + "dev": true, + "requires": { + "css-color-names": "0.0.4", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "stylehacks": "^4.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-merge-rules": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz", + "integrity": "sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ==", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "caniuse-api": "^3.0.0", + "cssnano-util-same-parent": "^4.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0", + "vendors": "^1.0.0" + }, + "dependencies": { + "postcss-selector-parser": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", + "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", + "dev": true, + "requires": { + "dot-prop": "^5.2.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + } + } + }, + "postcss-minify-font-values": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz", + "integrity": "sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg==", + "dev": true, + "requires": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-minify-gradients": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz", + "integrity": "sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q==", + "dev": true, + "requires": { + "cssnano-util-get-arguments": "^4.0.0", + "is-color-stop": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-minify-params": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz", + "integrity": "sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg==", + "dev": true, + "requires": { + "alphanum-sort": "^1.0.0", + "browserslist": "^4.0.0", + "cssnano-util-get-arguments": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "uniqs": "^2.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-minify-selectors": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz", + "integrity": "sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g==", + "dev": true, + "requires": { + "alphanum-sort": "^1.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0" + }, + "dependencies": { + "postcss-selector-parser": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", + "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", + "dev": true, + "requires": { + "dot-prop": "^5.2.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + } + } + }, + "postcss-modules-extract-imports": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz", + "integrity": "sha512-LaYLDNS4SG8Q5WAWqIJgdHPJrDDr/Lv775rMBFUbgjTz6j34lUznACHcdRWroPvXANP2Vj7yNK57vp9eFqzLWQ==", + "dev": true, + "requires": { + "postcss": "^7.0.5" + } + }, + "postcss-modules-local-by-default": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-3.0.3.tgz", + "integrity": "sha512-e3xDq+LotiGesympRlKNgaJ0PCzoUIdpH0dj47iWAui/kyTgh3CiAr1qP54uodmJhl6p9rN6BoNcdEDVJx9RDw==", + "dev": true, + "requires": { + "icss-utils": "^4.1.1", + "postcss": "^7.0.32", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.1.0" + } + }, + "postcss-modules-scope": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-2.2.0.tgz", + "integrity": "sha512-YyEgsTMRpNd+HmyC7H/mh3y+MeFWevy7V1evVhJWewmMbjDHIbZbOXICC2y+m1xI1UVfIT1HMW/O04Hxyu9oXQ==", + "dev": true, + "requires": { + "postcss": "^7.0.6", + "postcss-selector-parser": "^6.0.0" + } + }, + "postcss-modules-values": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-3.0.0.tgz", + "integrity": "sha512-1//E5jCBrZ9DmRX+zCtmQtRSV6PV42Ix7Bzj9GbwJceduuf7IqP8MgeTXuRDHOWj2m0VzZD5+roFWDuU8RQjcg==", + "dev": true, + "requires": { + "icss-utils": "^4.0.0", + "postcss": "^7.0.6" + } + }, + "postcss-normalize-charset": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz", + "integrity": "sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g==", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-normalize-display-values": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz", + "integrity": "sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ==", + "dev": true, + "requires": { + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-normalize-positions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz", + "integrity": "sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA==", + "dev": true, + "requires": { + "cssnano-util-get-arguments": "^4.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-normalize-repeat-style": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz", + "integrity": "sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q==", + "dev": true, + "requires": { + "cssnano-util-get-arguments": "^4.0.0", + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-normalize-string": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz", + "integrity": "sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA==", + "dev": true, + "requires": { + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-normalize-timing-functions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz", + "integrity": "sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A==", + "dev": true, + "requires": { + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-normalize-unicode": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz", + "integrity": "sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg==", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-normalize-url": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz", + "integrity": "sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA==", + "dev": true, + "requires": { + "is-absolute-url": "^2.0.0", + "normalize-url": "^3.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "normalize-url": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-3.3.0.tgz", + "integrity": "sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==", + "dev": true + }, + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-normalize-whitespace": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz", + "integrity": "sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA==", + "dev": true, + "requires": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-ordered-values": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz", + "integrity": "sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw==", + "dev": true, + "requires": { + "cssnano-util-get-arguments": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-reduce-initial": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz", + "integrity": "sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA==", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "caniuse-api": "^3.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0" + } + }, + "postcss-reduce-transforms": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz", + "integrity": "sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg==", + "dev": true, + "requires": { + "cssnano-util-get-match": "^4.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-selector-parser": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.4.tgz", + "integrity": "sha512-gjMeXBempyInaBqpp8gODmwZ52WaYsVOsfr4L4lDQ7n3ncD6mEyySiDtgzCT+NYC0mmeOLvtsF8iaEf0YT6dBw==", + "dev": true, + "requires": { + "cssesc": "^3.0.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1", + "util-deprecate": "^1.0.2" + } + }, + "postcss-svgo": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-4.0.2.tgz", + "integrity": "sha512-C6wyjo3VwFm0QgBy+Fu7gCYOkCmgmClghO+pjcxvrcBKtiKt0uCF+hvbMO1fyv5BMImRK90SMb+dwUnfbGd+jw==", + "dev": true, + "requires": { + "is-svg": "^3.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "svgo": "^1.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-unique-selectors": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz", + "integrity": "sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg==", + "dev": true, + "requires": { + "alphanum-sort": "^1.0.0", + "postcss": "^7.0.0", + "uniqs": "^2.0.0" + } + }, + "postcss-value-parser": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz", + "integrity": "sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==", + "dev": true + }, + "prepend-http": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", + "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=", + "dev": true + }, + "prettier": { + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.19.1.tgz", + "integrity": "sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew==", + "dev": true, + "optional": true + }, + "pretty-error": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-2.1.2.tgz", + "integrity": "sha512-EY5oDzmsX5wvuynAByrmY0P0hcp+QpnAKbJng2A2MPjVKXCxrDSUkzghVJ4ZGPIv+JC4gX8fPUWscC0RtjsWGw==", + "dev": true, + "requires": { + "lodash": "^4.17.20", + "renderkid": "^2.0.4" + } + }, + "process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", + "dev": true + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, + "promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", + "dev": true + }, + "proxy-addr": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz", + "integrity": "sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==", + "requires": { + "forwarded": "~0.1.2", + "ipaddr.js": "1.9.1" + } + }, + "prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", + "dev": true + }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "dev": true + }, + "psl": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", + "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", + "dev": true + }, + "public-encrypt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", + "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "parse-asn1": "^5.0.0", + "randombytes": "^2.0.1", + "safe-buffer": "^5.1.2" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "dev": true + } + } + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "pumpify": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", + "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", + "dev": true, + "requires": { + "duplexify": "^3.6.0", + "inherits": "^2.0.3", + "pump": "^2.0.0" + }, + "dependencies": { + "pump": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", + "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + } + } + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true + }, + "q": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", + "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=", + "dev": true + }, + "qs": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" + }, + "query-string": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-4.3.4.tgz", + "integrity": "sha1-u7aTucqRXCMlFbIosaArYJBD2+s=", + "dev": true, + "requires": { + "object-assign": "^4.1.0", + "strict-uri-encode": "^1.0.0" + } + }, + "querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", + "dev": true + }, + "querystring-es3": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", + "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", + "dev": true + }, + "querystringify": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", + "dev": true + }, + "quotemeta": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/quotemeta/-/quotemeta-0.0.0.tgz", + "integrity": "sha1-UdOgbuD81uO1AdvSiQQ1Gtelo4w=" + }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "randomfill": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", + "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", + "dev": true, + "requires": { + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.0" + } + }, + "range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" + }, + "raw-body": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", + "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", + "requires": { + "bytes": "3.1.0", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + } + }, + "read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "dev": true, + "requires": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "dependencies": { + "parse-json": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.1.0.tgz", + "integrity": "sha512-+mi/lmVVNKFNVyLXV31ERiy2CY5E1/F6QtJFEzoChPRwwngMNXRDQ9GJ5WdE2Z2P4AujsOi0/+2qHID68KwfIQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + } + } + } + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "readdirp": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz", + "integrity": "sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==", + "dev": true, + "optional": true, + "requires": { + "picomatch": "^2.2.1" + } + }, + "regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", + "dev": true + }, + "regenerate-unicode-properties": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz", + "integrity": "sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA==", + "dev": true, + "requires": { + "regenerate": "^1.4.0" + } + }, + "regenerator-runtime": { + "version": "0.13.7", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz", + "integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==", + "dev": true + }, + "regenerator-transform": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.5.tgz", + "integrity": "sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw==", + "dev": true, + "requires": { + "@babel/runtime": "^7.8.4" + } + }, + "regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + } + }, + "regexp.prototype.flags": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz", + "integrity": "sha512-2+Q0C5g951OlYlJz6yu5/M33IcsESLlLfsyIaLJaG4FA2r4yP8MvVMJUUP/fVBkSpbbbZlS5gynbEWLipiiXiQ==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1" + }, + "dependencies": { + "es-abstract": { + "version": "1.17.7", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.7.tgz", + "integrity": "sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.2.2", + "is-regex": "^1.1.1", + "object-inspect": "^1.8.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.1", + "string.prototype.trimend": "^1.0.1", + "string.prototype.trimstart": "^1.0.1" + } + } + } + }, + "regexpu-core": { + "version": "4.7.1", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.1.tgz", + "integrity": "sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ==", + "dev": true, + "requires": { + "regenerate": "^1.4.0", + "regenerate-unicode-properties": "^8.2.0", + "regjsgen": "^0.5.1", + "regjsparser": "^0.6.4", + "unicode-match-property-ecmascript": "^1.0.4", + "unicode-match-property-value-ecmascript": "^1.2.0" + } + }, + "regjsgen": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz", + "integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==", + "dev": true + }, + "regjsparser": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.4.tgz", + "integrity": "sha512-64O87/dPDgfk8/RQqC4gkZoGyyWFIEUTTh80CU6CWuK5vkCGyekIx+oKcEIYtP/RAxSQltCZHCNu/mdd7fqlJw==", + "dev": true, + "requires": { + "jsesc": "~0.5.0" + }, + "dependencies": { + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "dev": true + } + } + }, + "relateurl": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", + "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=", + "dev": true + }, + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", + "dev": true + }, + "renderkid": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-2.0.4.tgz", + "integrity": "sha512-K2eXrSOJdq+HuKzlcjOlGoOarUu5SDguDEhE7+Ah4zuOWL40j8A/oHvLlLob9PSTNvVnBd+/q0Er1QfpEuem5g==", + "dev": true, + "requires": { + "css-select": "^1.1.0", + "dom-converter": "^0.2", + "htmlparser2": "^3.3.0", + "lodash": "^4.17.20", + "strip-ansi": "^3.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + } + } + }, + "repeat-element": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", + "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", + "dev": true + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "dev": true + }, + "request": { + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", + "dev": true, + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.3", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.5.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + }, + "dependencies": { + "qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "dev": true + } + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true + }, + "require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "dev": true + }, + "requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", + "dev": true + }, + "resolve": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.19.0.tgz", + "integrity": "sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==", + "dev": true, + "requires": { + "is-core-module": "^2.1.0", + "path-parse": "^1.0.6" + } + }, + "resolve-cwd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", + "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", + "dev": true, + "requires": { + "resolve-from": "^3.0.0" + } + }, + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "dev": true + }, + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", + "dev": true + }, + "restore-cursor": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", + "dev": true, + "requires": { + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" + } + }, + "ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "dev": true + }, + "retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=", + "dev": true + }, + "rgb-regex": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/rgb-regex/-/rgb-regex-1.0.1.tgz", + "integrity": "sha1-wODWiC3w4jviVKR16O3UGRX+rrE=", + "dev": true + }, + "rgba-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/rgba-regex/-/rgba-regex-1.0.0.tgz", + "integrity": "sha1-QzdOLiyglosO8VI0YLfXMP8i7rM=", + "dev": true + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "dev": true, + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "run-queue": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", + "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=", + "dev": true, + "requires": { + "aproba": "^1.1.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "dev": true, + "requires": { + "ret": "~0.1.10" + } + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "dev": true + }, + "schema-utils": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", + "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.5", + "ajv": "^6.12.4", + "ajv-keywords": "^3.5.2" + }, + "dependencies": { + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + } + } + }, + "select-hose": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=", + "dev": true + }, + "selfsigned": { + "version": "1.10.8", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.8.tgz", + "integrity": "sha512-2P4PtieJeEwVgTU9QEcwIRDQ/mXJLX8/+I3ur+Pg16nS8oNbrGxEso9NyYWy8NAmXiNl4dlAp5MwoNeCWzON4w==", + "dev": true, + "requires": { + "node-forge": "^0.10.0" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "send": { + "version": "0.17.1", + "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", + "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", + "requires": { + "debug": "2.6.9", + "depd": "~1.1.2", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "~1.7.2", + "mime": "1.6.0", + "ms": "2.1.1", + "on-finished": "~2.3.0", + "range-parser": "~1.2.1", + "statuses": "~1.5.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + }, + "dependencies": { + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" + } + } + }, + "serialize-javascript": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", + "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", + "dev": true, + "requires": { + "randombytes": "^2.1.0" + } + }, + "serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=", + "dev": true, + "requires": { + "accepts": "~1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", + "dev": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "dev": true + } + } + }, + "serve-static": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", + "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.17.1" + } + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true + }, + "set-immediate-shim": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", + "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=" + }, + "set-value": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + } + } + }, + "setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", + "dev": true + }, + "setprototypeof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" + }, + "sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true + }, + "shell-quote": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.2.tgz", + "integrity": "sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg==", + "dev": true + }, + "signal-exit": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", + "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", + "dev": true + }, + "simple-swizzle": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", + "integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=", + "dev": true, + "requires": { + "is-arrayish": "^0.3.1" + }, + "dependencies": { + "is-arrayish": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", + "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==", + "dev": true + } + } + }, + "slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "dev": true + }, + "snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "dev": true, + "requires": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "dev": true, + "requires": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "dev": true, + "requires": { + "kind-of": "^3.2.0" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "socket.io": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-3.0.3.tgz", + "integrity": "sha512-TC1GnSXhDVmd3bHji5aG7AgWB8UL7E6quACbKra8uFXBqlMwEDbrJFK+tjuIY5Pe9N0L+MAPPDv3pycnn0000A==", + "requires": { + "@types/cookie": "^0.4.0", + "@types/cors": "^2.8.8", + "@types/node": "^14.14.7", + "accepts": "~1.3.4", + "base64id": "~2.0.0", + "debug": "~4.1.0", + "engine.io": "~4.0.0", + "socket.io-adapter": "~2.0.3", + "socket.io-parser": "~4.0.1" + }, + "dependencies": { + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "socket.io-adapter": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.0.3.tgz", + "integrity": "sha512-2wo4EXgxOGSFueqvHAdnmi5JLZzWqMArjuP4nqC26AtLh5PoCPsaRbRdah2xhcwTAMooZfjYiNVNkkmmSMaxOQ==" + }, + "socket.io-client": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-3.0.3.tgz", + "integrity": "sha512-kwCJAKb6JMqE9ZYXg78Dgt8rYLSwtJ/g/LJqpb/pOTFRZMSr1cKAsCaisHZ+IBwKHBY7DYOOkjtkHqseY3ZLpw==", + "requires": { + "@types/component-emitter": "^1.2.10", + "backo2": "1.0.2", + "component-bind": "1.0.0", + "component-emitter": "~1.3.0", + "debug": "~4.1.0", + "engine.io-client": "~4.0.0", + "parseuri": "0.0.6", + "socket.io-parser": "~4.0.1" + }, + "dependencies": { + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "socket.io-parser": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.0.2.tgz", + "integrity": "sha512-Bs3IYHDivwf+bAAuW/8xwJgIiBNtlvnjYRc4PbXgniLmcP1BrakBoq/QhO24rgtgW7VZ7uAaswRGxutUnlAK7g==", + "requires": { + "@types/component-emitter": "^1.2.10", + "component-emitter": "~1.3.0", + "debug": "~4.1.0" + }, + "dependencies": { + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "socketio-auth": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/socketio-auth/-/socketio-auth-0.1.1.tgz", + "integrity": "sha512-TDM/yiA5tnDiJqn8fO5zHrvTaKmN4EK4Dci9RaJLO11LEEbC1/E7z352OFrIWg8d/rn+Nk666ks9RhjlkGILlA==", + "requires": { + "debug": "^2.1.3", + "lodash": "^4.17.5" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "sockjs": { + "version": "0.3.20", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.20.tgz", + "integrity": "sha512-SpmVOVpdq0DJc0qArhF3E5xsxvaiqGNb73XfgBpK1y3UD5gs8DSo8aCTsuT5pX8rssdc2NDIzANwP9eCAiSdTA==", + "dev": true, + "requires": { + "faye-websocket": "^0.10.0", + "uuid": "^3.4.0", + "websocket-driver": "0.6.5" + } + }, + "sockjs-client": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.4.0.tgz", + "integrity": "sha512-5zaLyO8/nri5cua0VtOrFXBPK1jbL4+1cebT/mmKA1E1ZXOvJrII75bPu0l0k843G/+iAbhEqzyKr0w/eCCj7g==", + "dev": true, + "requires": { + "debug": "^3.2.5", + "eventsource": "^1.0.7", + "faye-websocket": "~0.11.1", + "inherits": "^2.0.3", + "json3": "^3.3.2", + "url-parse": "^1.4.3" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "faye-websocket": { + "version": "0.11.3", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.3.tgz", + "integrity": "sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA==", + "dev": true, + "requires": { + "websocket-driver": ">=0.5.1" + } + } + } + }, + "sort-keys": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", + "integrity": "sha1-RBttTTRnmPG05J6JIK37oOVD+a0=", + "dev": true, + "requires": { + "is-plain-obj": "^1.0.0" + } + }, + "source-list-map": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", + "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "source-map-resolve": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", + "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", + "dev": true, + "requires": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "source-map-support": { + "version": "0.5.19", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", + "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "source-map-url": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", + "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", + "dev": true + }, + "spdx-correct": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", + "dev": true, + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "dev": true + }, + "spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.6.tgz", + "integrity": "sha512-+orQK83kyMva3WyPf59k1+Y525csj5JejicWut55zeTWANuN17qSiSLUXWtzHeNWORSvT7GLDJ/E/XiIWoXBTw==", + "dev": true + }, + "spdy": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", + "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", + "dev": true, + "requires": { + "debug": "^4.1.0", + "handle-thing": "^2.0.0", + "http-deceiver": "^1.2.7", + "select-hose": "^2.0.0", + "spdy-transport": "^3.0.0" + } + }, + "spdy-transport": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", + "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", + "dev": true, + "requires": { + "debug": "^4.1.0", + "detect-node": "^2.0.4", + "hpack.js": "^2.1.6", + "obuf": "^1.1.2", + "readable-stream": "^3.0.6", + "wbuf": "^1.7.3" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.0" + } + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, + "sshpk": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", + "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", + "dev": true, + "requires": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + } + }, + "ssri": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-7.1.0.tgz", + "integrity": "sha512-77/WrDZUWocK0mvA5NTRQyveUf+wsrIc6vyrxpS8tVvYBcX215QbafrJR3KtkpskIzoFLqqNuuYQvxaMjXJ/0g==", + "dev": true, + "requires": { + "figgy-pudding": "^3.5.1", + "minipass": "^3.1.1" + } + }, + "stable": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", + "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", + "dev": true + }, + "stackframe": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.2.0.tgz", + "integrity": "sha512-GrdeshiRmS1YLMYgzF16olf2jJ/IzxXY9lhKOskuVziubpTYcYqyOwYeJKzQkwy7uN0fYSsbsC4RQaXf9LCrYA==", + "dev": true + }, + "static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "dev": true, + "requires": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" + }, + "stream-browserify": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", + "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==", + "dev": true, + "requires": { + "inherits": "~2.0.1", + "readable-stream": "^2.0.2" + } + }, + "stream-each": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz", + "integrity": "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "stream-shift": "^1.0.0" + } + }, + "stream-http": { + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", + "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", + "dev": true, + "requires": { + "builtin-status-codes": "^3.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.3.6", + "to-arraybuffer": "^1.0.0", + "xtend": "^4.0.0" + } + }, + "stream-shift": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", + "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==", + "dev": true + }, + "strict-uri-encode": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", + "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=", + "dev": true + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "string.prototype.trimend": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.3.tgz", + "integrity": "sha512-ayH0pB+uf0U28CtjlLvL7NaohvR1amUvVZk+y3DYb0Ey2PUV5zPkkKy9+U1ndVEIXO8hNg18eIv9Jntbii+dKw==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3" + } + }, + "string.prototype.trimstart": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.3.tgz", + "integrity": "sha512-oBIBUy5lea5tt0ovtOFiEQaBkoBBkyJhZXzJYrSmDo5IUUqbOPvVezuRs/agBIdZ2p2Eo1FD6bD9USyBLfl3xg==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + }, + "strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "dev": true + }, + "strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true + }, + "stylehacks": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-4.0.3.tgz", + "integrity": "sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g==", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0" + }, + "dependencies": { + "postcss-selector-parser": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", + "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", + "dev": true, + "requires": { + "dot-prop": "^5.2.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + } + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "svg-tags": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/svg-tags/-/svg-tags-1.0.0.tgz", + "integrity": "sha1-WPcc7jvVGbWdSyqEO2x95krAR2Q=", + "dev": true + }, + "svgo": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-1.3.2.tgz", + "integrity": "sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==", + "dev": true, + "requires": { + "chalk": "^2.4.1", + "coa": "^2.0.2", + "css-select": "^2.0.0", + "css-select-base-adapter": "^0.1.1", + "css-tree": "1.0.0-alpha.37", + "csso": "^4.0.2", + "js-yaml": "^3.13.1", + "mkdirp": "~0.5.1", + "object.values": "^1.1.0", + "sax": "~1.2.4", + "stable": "^0.1.8", + "unquote": "~1.1.1", + "util.promisify": "~1.0.0" + }, + "dependencies": { + "css-select": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz", + "integrity": "sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==", + "dev": true, + "requires": { + "boolbase": "^1.0.0", + "css-what": "^3.2.1", + "domutils": "^1.7.0", + "nth-check": "^1.0.2" + } + }, + "css-what": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.4.2.tgz", + "integrity": "sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==", + "dev": true + }, + "domutils": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", + "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", + "dev": true, + "requires": { + "dom-serializer": "0", + "domelementtype": "1" + } + } + } + }, + "sweetalert2": { + "version": "10.10.4", + "resolved": "https://registry.npmjs.org/sweetalert2/-/sweetalert2-10.10.4.tgz", + "integrity": "sha512-qQJcqMaN9i5J0W7wrrttPpmZ5Ws6MrffT61asBLiCj+5sme2wII0ZeOGr8EoPrn8Hd56o58D33KcQMy01JodIQ==" + }, + "tapable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", + "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", + "dev": true + }, + "terser": { + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.0.tgz", + "integrity": "sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==", + "dev": true, + "requires": { + "commander": "^2.20.0", + "source-map": "~0.6.1", + "source-map-support": "~0.5.12" + }, + "dependencies": { + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "terser-webpack-plugin": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-2.3.8.tgz", + "integrity": "sha512-/fKw3R+hWyHfYx7Bv6oPqmk4HGQcrWLtV3X6ggvPuwPNHSnzvVV51z6OaaCOus4YLjutYGOz3pEpbhe6Up2s1w==", + "dev": true, + "requires": { + "cacache": "^13.0.1", + "find-cache-dir": "^3.3.1", + "jest-worker": "^25.4.0", + "p-limit": "^2.3.0", + "schema-utils": "^2.6.6", + "serialize-javascript": "^4.0.0", + "source-map": "^0.6.1", + "terser": "^4.6.12", + "webpack-sources": "^1.4.3" + }, + "dependencies": { + "cacache": { + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-13.0.1.tgz", + "integrity": "sha512-5ZvAxd05HDDU+y9BVvcqYu2LLXmPnQ0hW62h32g4xBTgL/MppR4/04NHfj/ycM2y6lmTnbw6HVi+1eN0Psba6w==", + "dev": true, + "requires": { + "chownr": "^1.1.2", + "figgy-pudding": "^3.5.1", + "fs-minipass": "^2.0.0", + "glob": "^7.1.4", + "graceful-fs": "^4.2.2", + "infer-owner": "^1.0.4", + "lru-cache": "^5.1.1", + "minipass": "^3.0.0", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.2", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "p-map": "^3.0.0", + "promise-inflight": "^1.0.1", + "rimraf": "^2.7.1", + "ssri": "^7.0.0", + "unique-filename": "^1.1.1" + } + }, + "p-map": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz", + "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==", + "dev": true, + "requires": { + "aggregate-error": "^3.0.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "thenify": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", + "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", + "dev": true, + "requires": { + "any-promise": "^1.0.0" + } + }, + "thenify-all": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", + "integrity": "sha1-GhkY1ALY/D+Y+/I02wvMjMEOlyY=", + "dev": true, + "requires": { + "thenify": ">= 3.1.0 < 4" + } + }, + "thread-loader": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/thread-loader/-/thread-loader-2.1.3.tgz", + "integrity": "sha512-wNrVKH2Lcf8ZrWxDF/khdlLlsTMczdcwPA9VEK4c2exlEPynYWxi9op3nPTo5lAnDIkE0rQEB3VBP+4Zncc9Hg==", + "dev": true, + "requires": { + "loader-runner": "^2.3.1", + "loader-utils": "^1.1.0", + "neo-async": "^2.6.0" + } + }, + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "thunky": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", + "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", + "dev": true + }, + "timers-browserify": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz", + "integrity": "sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==", + "dev": true, + "requires": { + "setimmediate": "^1.0.4" + } + }, + "timsort": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz", + "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=", + "dev": true + }, + "to-arraybuffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", + "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", + "dev": true + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true + }, + "to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "dev": true, + "requires": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + }, + "toidentifier": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", + "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==" + }, + "toposort": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/toposort/-/toposort-1.0.7.tgz", + "integrity": "sha1-LmhELZ9k7HILjMieZEOsbKqVACk=", + "dev": true + }, + "tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "dev": true, + "requires": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + } + }, + "tryer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tryer/-/tryer-1.0.1.tgz", + "integrity": "sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA==", + "dev": true + }, + "ts-pnp": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/ts-pnp/-/ts-pnp-1.2.0.tgz", + "integrity": "sha512-csd+vJOb/gkzvcCHgTGSChYpy5f1/XKNsmvBGO4JXS+z1v2HobugDz4s1IeFXM3wZB44uczs+eazB5Q/ccdhQw==", + "dev": true + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "tty-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", + "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=", + "dev": true + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "dev": true, + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "dev": true + }, + "type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "dev": true + }, + "type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "requires": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + } + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "dev": true + }, + "uglify-js": { + "version": "3.4.10", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.4.10.tgz", + "integrity": "sha512-Y2VsbPVs0FIshJztycsO2SfPk7/KAF/T72qzv9u5EpQ4kB2hQoHlhNQTsNyy6ul7lQtqJN/AoWeS23OzEiEFxw==", + "dev": true, + "requires": { + "commander": "~2.19.0", + "source-map": "~0.6.1" + }, + "dependencies": { + "commander": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.19.0.tgz", + "integrity": "sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "unicode-canonical-property-names-ecmascript": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", + "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==", + "dev": true + }, + "unicode-match-property-ecmascript": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz", + "integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==", + "dev": true, + "requires": { + "unicode-canonical-property-names-ecmascript": "^1.0.4", + "unicode-property-aliases-ecmascript": "^1.0.4" + } + }, + "unicode-match-property-value-ecmascript": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz", + "integrity": "sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ==", + "dev": true + }, + "unicode-property-aliases-ecmascript": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz", + "integrity": "sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==", + "dev": true + }, + "union-value": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + } + } + }, + "uniq": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", + "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=", + "dev": true + }, + "uniqs": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz", + "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI=", + "dev": true + }, + "unique-filename": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", + "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", + "dev": true, + "requires": { + "unique-slug": "^2.0.0" + } + }, + "unique-slug": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", + "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4" + } + }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" + }, + "unquote": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz", + "integrity": "sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ=", + "dev": true + }, + "unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "dev": true, + "requires": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "dev": true, + "requires": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", + "dev": true + } + } + }, + "upath": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", + "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", + "dev": true + }, + "upper-case": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz", + "integrity": "sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg=", + "dev": true + }, + "uri-js": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.0.tgz", + "integrity": "sha512-B0yRTzYdUCCn9n+F4+Gh4yIDtMQcaJsmYBDsTSG8g/OejKBodLQ2IHfN3bM7jUsRXndopT7OIXWdYqc1fjmV6g==", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", + "dev": true + }, + "url": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", + "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", + "dev": true, + "requires": { + "punycode": "1.3.2", + "querystring": "0.2.0" + }, + "dependencies": { + "punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", + "dev": true + } + } + }, + "url-loader": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-2.3.0.tgz", + "integrity": "sha512-goSdg8VY+7nPZKUEChZSEtW5gjbS66USIGCeSJ1OVOJ7Yfuh/36YxCwMi5HVEJh6mqUYOoy3NJ0vlOMrWsSHog==", + "dev": true, + "requires": { + "loader-utils": "^1.2.3", + "mime": "^2.4.4", + "schema-utils": "^2.5.0" + }, + "dependencies": { + "mime": { + "version": "2.4.6", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.6.tgz", + "integrity": "sha512-RZKhC3EmpBchfTGBVb8fb+RL2cWyw/32lshnsETttkBAyAUXSGHxbEJWWRXc751DrIxG1q04b8QwMbAwkRPpUA==", + "dev": true + } + } + }, + "url-parse": { + "version": "1.4.7", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.7.tgz", + "integrity": "sha512-d3uaVyzDB9tQoSXFvuSUNFibTd9zxd2bkVrDRvF5TmvWWQwqE4lgYJ5m+x1DbecWkw+LK4RNl2CU1hHuOKPVlg==", + "dev": true, + "requires": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, + "use": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", + "dev": true + }, + "util": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", + "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", + "dev": true, + "requires": { + "inherits": "2.0.3" + }, + "dependencies": { + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + } + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "util.promisify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.0.tgz", + "integrity": "sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "object.getownpropertydescriptors": "^2.0.3" + } + }, + "utila": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", + "integrity": "sha1-ihagXURWV6Oupe7MWxKk+lN5dyw=", + "dev": true + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" + }, + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "dev": true + }, + "validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" + }, + "vendors": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.4.tgz", + "integrity": "sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w==", + "dev": true + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "vm-browserify": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", + "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==", + "dev": true + }, + "vue": { + "version": "2.6.12", + "resolved": "https://registry.npmjs.org/vue/-/vue-2.6.12.tgz", + "integrity": "sha512-uhmLFETqPPNyuLLbsKz6ioJ4q7AZHzD8ZVFNATNyICSZouqP2Sz0rotWQC8UNBF6VGSCs5abnKJoStA6JbCbfg==" + }, + "vue-codemirror": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/vue-codemirror/-/vue-codemirror-4.0.6.tgz", + "integrity": "sha512-ilU7Uf0mqBNSSV3KT7FNEeRIxH4s1fmpG4TfHlzvXn0QiQAbkXS9lLfwuZpaBVEnpP5CSE62iGJjoliTuA8poQ==", + "requires": { + "codemirror": "^5.41.0", + "diff-match-patch": "^1.0.0" + } + }, + "vue-functional-data-merge": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/vue-functional-data-merge/-/vue-functional-data-merge-3.1.0.tgz", + "integrity": "sha512-leT4kdJVQyeZNY1kmnS1xiUlQ9z1B/kdBFCILIjYYQDqZgLqCLa0UhjSSeRX6c3mUe6U5qYeM8LrEqkHJ1B4LA==" + }, + "vue-hot-reload-api": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/vue-hot-reload-api/-/vue-hot-reload-api-2.3.4.tgz", + "integrity": "sha512-BXq3jwIagosjgNVae6tkHzzIk6a8MHFtzAdwhnV5VlvPTFxDCvIttgSiHWjdGoTJvXtmRu5HacExfdarRcFhog==", + "dev": true + }, + "vue-loader": { + "version": "15.9.5", + "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-15.9.5.tgz", + "integrity": "sha512-oeMOs2b5o5gRqkxfds10bCx6JeXYTwivRgbb8hzOrcThD2z1+GqEKE3EX9A2SGbsYDf4rXwRg6D5n1w0jO5SwA==", + "dev": true, + "requires": { + "@vue/component-compiler-utils": "^3.1.0", + "hash-sum": "^1.0.2", + "loader-utils": "^1.1.0", + "vue-hot-reload-api": "^2.3.0", + "vue-style-loader": "^4.1.0" + }, + "dependencies": { + "hash-sum": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-1.0.2.tgz", + "integrity": "sha1-M7QHd3VMZDJXPBIMw4CLvRDUfwQ=", + "dev": true + } + } + }, + "vue-socket.io-extended": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/vue-socket.io-extended/-/vue-socket.io-extended-4.0.5.tgz", + "integrity": "sha512-7OUA76lpqHqVWD6+Qpc9UnEGBL4HzswDnaJSSOtd0TGwOLj+E2L59ExwLhHUuXB7QlLheFU/RzGJQ708YysABA==", + "requires": { + "@types/socket.io-client": "1.4.34" + } + }, + "vue-style-loader": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/vue-style-loader/-/vue-style-loader-4.1.2.tgz", + "integrity": "sha512-0ip8ge6Gzz/Bk0iHovU9XAUQaFt/G2B61bnWa2tCcqqdgfHs1lF9xXorFbE55Gmy92okFT+8bfmySuUOu13vxQ==", + "dev": true, + "requires": { + "hash-sum": "^1.0.2", + "loader-utils": "^1.0.2" + }, + "dependencies": { + "hash-sum": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-1.0.2.tgz", + "integrity": "sha1-M7QHd3VMZDJXPBIMw4CLvRDUfwQ=", + "dev": true + } + } + }, + "vue-sweetalert2": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/vue-sweetalert2/-/vue-sweetalert2-4.1.1.tgz", + "integrity": "sha512-9ytddeXkjixIGzUxgmVAVdIOrbPiWcjEPQuO3mEPq4zc8clbQbhOn192zvYUdcM0SbRPzbafyXTFx9mNMNJzQA==", + "requires": { + "sweetalert2": "10.x" + } + }, + "vue-template-compiler": { + "version": "2.6.12", + "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.6.12.tgz", + "integrity": "sha512-OzzZ52zS41YUbkCBfdXShQTe69j1gQDZ9HIX8miuC9C3rBCk9wIRjLiZZLrmX9V+Ftq/YEyv1JaVr5Y/hNtByg==", + "requires": { + "de-indent": "^1.0.2", + "he": "^1.1.0" + } + }, + "vue-template-es2015-compiler": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/vue-template-es2015-compiler/-/vue-template-es2015-compiler-1.9.1.tgz", + "integrity": "sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw==", + "dev": true + }, + "vue2-datepicker": { + "version": "3.8.2", + "resolved": "https://registry.npmjs.org/vue2-datepicker/-/vue2-datepicker-3.8.2.tgz", + "integrity": "sha512-GUoNLyzPl3Xi7ruSQFF59BzMXWuflxzP9yM3P4ARz9GfhzLLFgYVLAEkJi6DNQU7zozBMzz+VNIQDwPaDNMo6Q==", + "requires": { + "date-format-parse": "^0.2.6" + } + }, + "vuex": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/vuex/-/vuex-3.6.0.tgz", + "integrity": "sha512-W74OO2vCJPs9/YjNjW8lLbj+jzT24waTo2KShI8jLvJW8OaIkgb3wuAMA7D+ZiUxDOx3ubwSZTaJBip9G8a3aQ==" + }, + "watchpack": { + "version": "1.7.5", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.5.tgz", + "integrity": "sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ==", + "dev": true, + "requires": { + "chokidar": "^3.4.1", + "graceful-fs": "^4.1.2", + "neo-async": "^2.5.0", + "watchpack-chokidar2": "^2.0.1" + } + }, + "watchpack-chokidar2": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/watchpack-chokidar2/-/watchpack-chokidar2-2.0.1.tgz", + "integrity": "sha512-nCFfBIPKr5Sh61s4LPpy1Wtfi0HE8isJ3d2Yb5/Ppw2P2B/3eVSEBjKfN0fmHJSK14+31KwMKmcrzs2GM4P0Ww==", + "dev": true, + "optional": true, + "requires": { + "chokidar": "^2.1.8" + }, + "dependencies": { + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "optional": true, + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + }, + "dependencies": { + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "optional": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + } + } + }, + "binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", + "dev": true, + "optional": true + }, + "chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "dev": true, + "optional": true, + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "fsevents": "^1.2.7", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + } + }, + "fsevents": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", + "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", + "dev": true, + "optional": true, + "requires": { + "bindings": "^1.5.0", + "nan": "^2.12.1" + } + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "dev": true, + "optional": true, + "requires": { + "binary-extensions": "^1.0.0" + } + }, + "readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "dev": true, + "optional": true, + "requires": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + } + } + } + }, + "wbuf": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", + "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", + "dev": true, + "requires": { + "minimalistic-assert": "^1.0.0" + } + }, + "wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=", + "dev": true, + "requires": { + "defaults": "^1.0.3" + } + }, + "webpack": { + "version": "4.44.2", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.44.2.tgz", + "integrity": "sha512-6KJVGlCxYdISyurpQ0IPTklv+DULv05rs2hseIXer6D7KrUicRDLFb4IUM1S6LUAKypPM/nSiVSuv8jHu1m3/Q==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-module-context": "1.9.0", + "@webassemblyjs/wasm-edit": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0", + "acorn": "^6.4.1", + "ajv": "^6.10.2", + "ajv-keywords": "^3.4.1", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^4.3.0", + "eslint-scope": "^4.0.3", + "json-parse-better-errors": "^1.0.2", + "loader-runner": "^2.4.0", + "loader-utils": "^1.2.3", + "memory-fs": "^0.4.1", + "micromatch": "^3.1.10", + "mkdirp": "^0.5.3", + "neo-async": "^2.6.1", + "node-libs-browser": "^2.2.1", + "schema-utils": "^1.0.0", + "tapable": "^1.1.3", + "terser-webpack-plugin": "^1.4.3", + "watchpack": "^1.7.4", + "webpack-sources": "^1.4.1" + }, + "dependencies": { + "acorn": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", + "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", + "dev": true + }, + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true + }, + "eslint-scope": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", + "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", + "dev": true, + "requires": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "find-cache-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", + "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^2.0.0", + "pkg-dir": "^3.0.0" + } + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", + "dev": true + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "requires": { + "pify": "^4.0.1", + "semver": "^5.6.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + }, + "pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "dev": true, + "requires": { + "find-up": "^3.0.0" + } + }, + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "terser-webpack-plugin": { + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz", + "integrity": "sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw==", + "dev": true, + "requires": { + "cacache": "^12.0.2", + "find-cache-dir": "^2.1.0", + "is-wsl": "^1.1.0", + "schema-utils": "^1.0.0", + "serialize-javascript": "^4.0.0", + "source-map": "^0.6.1", + "terser": "^4.1.2", + "webpack-sources": "^1.4.0", + "worker-farm": "^1.7.0" + } + } + } + }, + "webpack-bundle-analyzer": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-3.9.0.tgz", + "integrity": "sha512-Ob8amZfCm3rMB1ScjQVlbYYUEJyEjdEtQ92jqiFUYt5VkEeO2v5UMbv49P/gnmCZm3A6yaFQzCBvpZqN4MUsdA==", + "dev": true, + "requires": { + "acorn": "^7.1.1", + "acorn-walk": "^7.1.1", + "bfj": "^6.1.1", + "chalk": "^2.4.1", + "commander": "^2.18.0", + "ejs": "^2.6.1", + "express": "^4.16.3", + "filesize": "^3.6.1", + "gzip-size": "^5.0.0", + "lodash": "^4.17.19", + "mkdirp": "^0.5.1", + "opener": "^1.5.1", + "ws": "^6.0.0" + }, + "dependencies": { + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "ws": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz", + "integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==", + "dev": true, + "requires": { + "async-limiter": "~1.0.0" + } + } + } + }, + "webpack-chain": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/webpack-chain/-/webpack-chain-6.5.1.tgz", + "integrity": "sha512-7doO/SRtLu8q5WM0s7vPKPWX580qhi0/yBHkOxNkv50f6qB76Zy9o2wRTrrPULqYTvQlVHuvbA8v+G5ayuUDsA==", + "dev": true, + "requires": { + "deepmerge": "^1.5.2", + "javascript-stringify": "^2.0.1" + } + }, + "webpack-dev-middleware": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.7.2.tgz", + "integrity": "sha512-1xC42LxbYoqLNAhV6YzTYacicgMZQTqRd27Sim9wn5hJrX3I5nxYy1SxSd4+gjUFsz1dQFj+yEe6zEVmSkeJjw==", + "dev": true, + "requires": { + "memory-fs": "^0.4.1", + "mime": "^2.4.4", + "mkdirp": "^0.5.1", + "range-parser": "^1.2.1", + "webpack-log": "^2.0.0" + }, + "dependencies": { + "mime": { + "version": "2.4.6", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.6.tgz", + "integrity": "sha512-RZKhC3EmpBchfTGBVb8fb+RL2cWyw/32lshnsETttkBAyAUXSGHxbEJWWRXc751DrIxG1q04b8QwMbAwkRPpUA==", + "dev": true + } + } + }, + "webpack-dev-server": { + "version": "3.11.0", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.11.0.tgz", + "integrity": "sha512-PUxZ+oSTxogFQgkTtFndEtJIPNmml7ExwufBZ9L2/Xyyd5PnOL5UreWe5ZT7IU25DSdykL9p1MLQzmLh2ljSeg==", + "dev": true, + "requires": { + "ansi-html": "0.0.7", + "bonjour": "^3.5.0", + "chokidar": "^2.1.8", + "compression": "^1.7.4", + "connect-history-api-fallback": "^1.6.0", + "debug": "^4.1.1", + "del": "^4.1.1", + "express": "^4.17.1", + "html-entities": "^1.3.1", + "http-proxy-middleware": "0.19.1", + "import-local": "^2.0.0", + "internal-ip": "^4.3.0", + "ip": "^1.1.5", + "is-absolute-url": "^3.0.3", + "killable": "^1.0.1", + "loglevel": "^1.6.8", + "opn": "^5.5.0", + "p-retry": "^3.0.1", + "portfinder": "^1.0.26", + "schema-utils": "^1.0.0", + "selfsigned": "^1.10.7", + "semver": "^6.3.0", + "serve-index": "^1.9.1", + "sockjs": "0.3.20", + "sockjs-client": "1.4.0", + "spdy": "^4.0.2", + "strip-ansi": "^3.0.1", + "supports-color": "^6.1.0", + "url": "^0.11.0", + "webpack-dev-middleware": "^3.7.2", + "webpack-log": "^2.0.0", + "ws": "^6.2.1", + "yargs": "^13.3.2" + }, + "dependencies": { + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + }, + "dependencies": { + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + } + } + }, + "binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", + "dev": true + }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + }, + "chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "dev": true, + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "fsevents": "^1.2.7", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + } + }, + "cliui": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", + "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", + "dev": true, + "requires": { + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "fsevents": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", + "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", + "dev": true, + "optional": true, + "requires": { + "bindings": "^1.5.0", + "nan": "^2.12.1" + } + }, + "is-absolute-url": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-3.0.3.tgz", + "integrity": "sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q==", + "dev": true + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "dev": true, + "requires": { + "binary-extensions": "^1.0.0" + } + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + }, + "readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + } + }, + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "wrap-ansi": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", + "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "ws": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz", + "integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==", + "dev": true, + "requires": { + "async-limiter": "~1.0.0" + } + }, + "yargs": { + "version": "13.3.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", + "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", + "dev": true, + "requires": { + "cliui": "^5.0.0", + "find-up": "^3.0.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^3.0.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^13.1.2" + } + }, + "yargs-parser": { + "version": "13.1.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", + "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + } + }, + "webpack-log": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/webpack-log/-/webpack-log-2.0.0.tgz", + "integrity": "sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg==", + "dev": true, + "requires": { + "ansi-colors": "^3.0.0", + "uuid": "^3.3.2" + } + }, + "webpack-merge": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-4.2.2.tgz", + "integrity": "sha512-TUE1UGoTX2Cd42j3krGYqObZbOD+xF7u28WB7tfUordytSjbWTIjK/8V0amkBfTYN4/pB/GIDlJZZ657BGG19g==", + "dev": true, + "requires": { + "lodash": "^4.17.15" + } + }, + "webpack-sources": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", + "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", + "dev": true, + "requires": { + "source-list-map": "^2.0.0", + "source-map": "~0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "websocket-driver": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.6.5.tgz", + "integrity": "sha1-XLJVbOuF9Dc8bYI4qmkchFThOjY=", + "dev": true, + "requires": { + "websocket-extensions": ">=0.1.1" + } + }, + "websocket-extensions": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", + "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", + "dev": true + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "dev": true + }, + "wordwrap": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", + "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=" + }, + "worker-farm": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz", + "integrity": "sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==", + "dev": true, + "requires": { + "errno": "~0.1.7" + } + }, + "wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "string-width": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + } + } + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "ws": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.0.tgz", + "integrity": "sha512-kyFwXuV/5ymf+IXhS6f0+eAFvydbaBW3zjpT6hUdAh/hbVjTIB5EHBGi0bPoCLSK2wcuz3BrEkB9LrYv1Nm4NQ==" + }, + "xmlhttprequest-ssl": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz", + "integrity": "sha1-wodrBhaKrcQOV9l+gRkayPQ5iz4=" + }, + "xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dev": true + }, + "y18n": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", + "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", + "dev": true + }, + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + }, + "yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "dev": true, + "requires": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" + }, + "dependencies": { + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "string-width": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + } + } + } + }, + "yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + }, + "dependencies": { + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + } + } + }, + "yeast": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz", + "integrity": "sha1-AI4G2AlDIMNy28L47XagymyKxBk=" + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..dbd141b --- /dev/null +++ b/package.json @@ -0,0 +1,65 @@ +{ + "name": "bootstrap-vue-example", + "version": "0.1.0", + "private": true, + "scripts": { + "docs:build": "documentation build src/** -f html -o public/docs", + "docs:serve": "documentation build src/** -c jsdoc.conf.json -f html -o public/docs", + "serve": "vue-cli-service serve", + "build": "vue-cli-service build", + "lint": "vue-cli-service lint" + }, + "dependencies": { + "@fortawesome/fontawesome-svg-core": "^1.2.32", + "@fortawesome/free-brands-svg-icons": "^5.15.1", + "@fortawesome/free-solid-svg-icons": "^5.15.1", + "@fortawesome/vue-fontawesome": "^2.0.0", + "axios": "^0.21.0", + "bootstrap-vue": "^2.19.0", + "express": "^4.17.1", + "file-saver": "^2.0.5", + "import": "^0.0.6", + "jszip": "^3.5.0", + "luxon": "^1.25.0", + "mkdirp": "^0.5.5", + "multilang-extract-comments": "^0.3.3", + "socket.io": "^3.0.3", + "socket.io-client": "^3.0.3", + "socketio-auth": "^0.1.1", + "vue": "^2.6.12", + "vue-codemirror": "^4.0.6", + "vue-socket.io-extended": "^4.0.5", + "vue-sweetalert2": "^4.1.1", + "vue-template-compiler": "^2.6.12", + "vue2-datepicker": "^3.8.2", + "vuex": "^3.6.0" + }, + "devDependencies": { + "@vue/cli-plugin-babel": "^4.5.7", + "@vue/cli-service": "^4.5.7" + }, + "eslintConfig": { + "root": true, + "env": { + "node": true + }, + "extends": [ + "plugin:vue/essential", + "eslint:recommended" + ], + "rules": {}, + "parserOptions": { + "parser": "babel-eslint" + } + }, + "postcss": { + "plugins": { + "autoprefixer": {} + } + }, + "browserslist": [ + "> 1%", + "last 2 versions", + "not ie <= 8" + ] +} diff --git a/src/App.vue b/src/App.vue new file mode 100644 index 0000000..bab8306 --- /dev/null +++ b/src/App.vue @@ -0,0 +1,176 @@ + + + + + diff --git a/src/assets/css/themify-icons.css b/src/assets/css/themify-icons.css new file mode 100644 index 0000000..267c0c2 --- /dev/null +++ b/src/assets/css/themify-icons.css @@ -0,0 +1,1093 @@ +@font-face { + font-family: 'themify'; + src:url('../fonts/themify.eot'); + src:url('../fonts/themify.eot') format('embedded-opentype'), + url('../fonts/themify.woff') format('woff'), + url('../fonts/themify.ttf') format('truetype'), + url('../fonts/themify.svg') format('svg'); + font-weight: normal; + font-style: normal; +} + +[class^="ti-"], [class*=" ti-"] { + font-family: 'themify'; + speak: none; + font-style: normal; + font-weight: bold; + font-variant: normal; + text-transform: none; + line-height: 1; + + /* Better Font Rendering =========== */ + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.ti-wand:before { + content: "\e600"; +} +.ti-volume:before { + content: "\e601"; +} +.ti-user:before { + content: "\e602"; +} +.ti-unlock:before { + content: "\e603"; +} +.ti-unlink:before { + content: "\e604"; +} +.ti-trash:before { + content: "\e605"; +} +.ti-swarmlab:before { + position: relative; + top:-5px; + right:-8px; + font-size: 1.5em; + font-weight: 300; + content: "\e606"; + color: #222; + /*color: #5FCF80; */ + color: #74B3C8; + border-color: #c60000; +} +.ti-thought:before { + content: "\e606"; +} +.ti-target:before { + content: "\e607"; +} +.ti-tag:before { + content: "\e608"; +} +.ti-tablet:before { + content: "\e609"; +} +.ti-star:before { + content: "\e60a"; +} +.ti-spray:before { + content: "\e60b"; +} +.ti-signal:before { + content: "\e60c"; +} +.ti-shopping-cart:before { + content: "\e60d"; +} +.ti-shopping-cart-full:before { + content: "\e60e"; +} +.ti-settings:before { + content: "\e60f"; +} +.ti-search:before { + content: "\e610"; +} +.ti-zoom-in:before { + content: "\e611"; +} +.ti-zoom-out:before { + content: "\e612"; +} +.ti-cut:before { + content: "\e613"; +} +.ti-ruler:before { + content: "\e614"; +} +.ti-ruler-pencil:before { + content: "\e615"; +} +.ti-ruler-alt:before { + content: "\e616"; +} +.ti-bookmark:before { + content: "\e617"; +} +.ti-bookmark-alt:before { + content: "\e618"; +} +.ti-reload:before { + content: "\e619"; +} +.ti-plus:before { + content: "\e61a"; +} +.ti-pin:before { + content: "\e61b"; +} +.ti-pencil:before { + content: "\e61c"; +} +.ti-pencil-alt:before { + content: "\e61d"; +} +.ti-paint-roller:before { + content: "\e61e"; +} +.ti-paint-bucket:before { + content: "\e61f"; +} +.ti-na:before { + content: "\e620"; +} +.ti-mobile:before { + content: "\e621"; +} +.ti-minus:before { + content: "\e622"; +} +.ti-medall:before { + content: "\e623"; +} +.ti-medall-alt:before { + content: "\e624"; +} +.ti-marker:before { + content: "\e625"; +} +.ti-marker-alt:before { + content: "\e626"; +} +.ti-arrow-up:before { + content: "\e627"; +} +.ti-arrow-right:before { + content: "\e628"; +} +.ti-arrow-left:before { + content: "\e629"; +} +.ti-arrow-down:before { + content: "\e62a"; +} +.ti-lock:before { + content: "\e62b"; +} +.ti-location-arrow:before { + content: "\e62c"; +} +.ti-link:before { + content: "\e62d"; +} +.ti-layout:before { + content: "\e62e"; +} +.ti-layers:before { + content: "\e62f"; +} +.ti-layers-alt:before { + content: "\e630"; +} +.ti-key:before { + content: "\e631"; +} +.ti-import:before { + content: "\e632"; +} +.ti-image:before { + content: "\e633"; +} +.ti-heart:before { + content: "\e634"; +} +.ti-heart-broken:before { + content: "\e635"; +} +.ti-hand-stop:before { + content: "\e636"; +} +.ti-hand-open:before { + content: "\e637"; +} +.ti-hand-drag:before { + content: "\e638"; +} +.ti-folder:before { + content: "\e639"; +} +.ti-flag:before { + content: "\e63a"; +} +.ti-flag-alt:before { + content: "\e63b"; +} +.ti-flag-alt-2:before { + content: "\e63c"; +} +.ti-eye:before { + content: "\e63d"; +} +.ti-export:before { + content: "\e63e"; +} +.ti-exchange-vertical:before { + content: "\e63f"; +} +.ti-desktop:before { + content: "\e640"; +} +.ti-cup:before { + content: "\e641"; +} +.ti-crown:before { + content: "\e642"; +} +.ti-comments:before { + content: "\e643"; +} +.ti-comment:before { + content: "\e644"; +} +.ti-comment-alt:before { + content: "\e645"; +} +.ti-close:before { + content: "\e646"; +} +.ti-clip:before { + content: "\e647"; +} +.ti-angle-up:before { + content: "\e648"; +} +.ti-angle-right:before { + content: "\e649"; +} +.ti-angle-left:before { + content: "\e64a"; +} +.ti-angle-down:before { + content: "\e64b"; +} +.ti-check:before { + content: "\e64c"; +} +.ti-check-box:before { + content: "\e64d"; +} +.ti-camera:before { + content: "\e64e"; +} +.ti-announcement:before { + content: "\e64f"; +} +.ti-brush:before { + content: "\e650"; +} +.ti-briefcase:before { + content: "\e651"; +} +.ti-bolt:before { + content: "\e652"; +} +.ti-bolt-alt:before { + content: "\e653"; +} +.ti-blackboard:before { + content: "\e654"; +} +.ti-bag:before { + content: "\e655"; +} +.ti-move:before { + content: "\e656"; +} +.ti-arrows-vertical:before { + content: "\e657"; +} +.ti-arrows-horizontal:before { + content: "\e658"; +} +.ti-fullscreen:before { + content: "\e659"; +} +.ti-arrow-top-right:before { + content: "\e65a"; +} +.ti-arrow-top-left:before { + content: "\e65b"; +} +.ti-arrow-circle-up:before { + content: "\e65c"; +} +.ti-arrow-circle-right:before { + content: "\e65d"; +} +.ti-arrow-circle-left:before { + content: "\e65e"; +} +.ti-arrow-circle-down:before { + content: "\e65f"; +} +.ti-angle-double-up:before { + content: "\e660"; +} +.ti-angle-double-right:before { + content: "\e661"; +} +.ti-angle-double-left:before { + content: "\e662"; +} +.ti-angle-double-down:before { + content: "\e663"; +} +.ti-zip:before { + content: "\e664"; +} +.ti-world:before { + content: "\e665"; +} +.ti-wheelchair:before { + content: "\e666"; +} +.ti-view-list:before { + content: "\e667"; +} +.ti-view-list-alt:before { + content: "\e668"; +} +.ti-view-grid:before { + content: "\e669"; +} +.ti-uppercase:before { + content: "\e66a"; +} +.ti-upload:before { + content: "\e66b"; +} +.ti-underline:before { + content: "\e66c"; +} +.ti-truck:before { + content: "\e66d"; +} +.ti-timer:before { + content: "\e66e"; +} +.ti-ticket:before { + content: "\e66f"; +} +.ti-thumb-up:before { + content: "\e670"; +} +.ti-thumb-down:before { + content: "\e671"; +} +.ti-text:before { + content: "\e672"; +} +.ti-stats-up:before { + content: "\e673"; +} +.ti-stats-down:before { + content: "\e674"; +} +.ti-split-v:before { + content: "\e675"; +} +.ti-split-h:before { + content: "\e676"; +} +.ti-smallcap:before { + content: "\e677"; +} +.ti-shine:before { + content: "\e678"; +} +.ti-shift-right:before { + content: "\e679"; +} +.ti-shift-left:before { + content: "\e67a"; +} +.ti-shield:before { + content: "\e67b"; +} +.ti-notepad:before { + content: "\e67c"; +} +.ti-server:before { + content: "\e67d"; +} +.ti-quote-right:before { + content: "\e67e"; +} +.ti-quote-left:before { + content: "\e67f"; +} +.ti-pulse:before { + content: "\e680"; +} +.ti-printer:before { + content: "\e681"; +} +.ti-power-off:before { + content: "\e682"; +} +.ti-plug:before { + content: "\e683"; +} +.ti-pie-chart:before { + content: "\e684"; +} +.ti-paragraph:before { + content: "\e685"; +} +.ti-panel:before { + content: "\e686"; +} +.ti-package:before { + content: "\e687"; +} +.ti-music:before { + content: "\e688"; +} +.ti-music-alt:before { + content: "\e689"; +} +.ti-mouse:before { + content: "\e68a"; +} +.ti-mouse-alt:before { + content: "\e68b"; +} +.ti-money:before { + content: "\e68c"; +} +.ti-microphone:before { + content: "\e68d"; +} +.ti-menu:before { + content: "\e68e"; +} +.ti-menu-alt:before { + content: "\e68f"; +} +.ti-map:before { + content: "\e690"; +} +.ti-map-alt:before { + content: "\e691"; +} +.ti-loop:before { + content: "\e692"; +} +.ti-location-pin:before { + content: "\e693"; +} +.ti-list:before { + content: "\e694"; +} +.ti-light-bulb:before { + content: "\e695"; +} +.ti-Italic:before { + content: "\e696"; +} +.ti-info:before { + content: "\e697"; +} +.ti-infinite:before { + content: "\e698"; +} +.ti-id-badge:before { + content: "\e699"; +} +.ti-hummer:before { + content: "\e69a"; +} +.ti-home:before { + content: "\e69b"; +} +.ti-help:before { + content: "\e69c"; +} +.ti-headphone:before { + content: "\e69d"; +} +.ti-harddrives:before { + content: "\e69e"; +} +.ti-harddrive:before { + content: "\e69f"; +} +.ti-gift:before { + content: "\e6a0"; +} +.ti-game:before { + content: "\e6a1"; +} +.ti-filter:before { + content: "\e6a2"; +} +.ti-files:before { + content: "\e6a3"; +} +.ti-file:before { + content: "\e6a4"; +} +.ti-eraser:before { + content: "\e6a5"; +} +.ti-envelope:before { + content: "\e6a6"; +} +.ti-download:before { + content: "\e6a7"; +} +.ti-direction:before { + content: "\e6a8"; +} +.ti-direction-alt:before { + content: "\e6a9"; +} +.ti-dashboard:before { + content: "\e6aa"; +} +.ti-control-stop:before { + content: "\e6ab"; +} +.ti-control-shuffle:before { + content: "\e6ac"; +} +.ti-control-play:before { + content: "\e6ad"; +} +.ti-control-pause:before { + content: "\e6ae"; +} +.ti-control-forward:before { + content: "\e6af"; +} +.ti-control-backward:before { + content: "\e6b0"; +} +.ti-cloud:before { + content: "\e6b1"; +} +.ti-cloud-up:before { + content: "\e6b2"; +} +.ti-cloud-down:before { + content: "\e6b3"; +} +.ti-clipboard:before { + content: "\e6b4"; +} +.ti-car:before { + content: "\e6b5"; +} +.ti-calendar:before { + content: "\e6b6"; +} +.ti-book:before { + content: "\e6b7"; +} +.ti-bell:before { + content: "\e6b8"; +} +.ti-basketball:before { + content: "\e6b9"; +} +.ti-bar-chart:before { + content: "\e6ba"; +} +.ti-bar-chart-alt:before { + content: "\e6bb"; +} +.ti-back-right:before { + content: "\e6bc"; +} +.ti-back-left:before { + content: "\e6bd"; +} +.ti-arrows-corner:before { + content: "\e6be"; +} +.ti-archive:before { + content: "\e6bf"; +} +.ti-anchor:before { + content: "\e6c0"; +} +.ti-align-right:before { + content: "\e6c1"; +} +.ti-align-left:before { + content: "\e6c2"; +} +.ti-align-justify:before { + content: "\e6c3"; +} +.ti-align-center:before { + content: "\e6c4"; +} +.ti-alert:before { + content: "\e6c5"; +} +.ti-alarm-clock:before { + content: "\e6c6"; +} +.ti-agenda:before { + content: "\e6c7"; +} +.ti-write:before { + content: "\e6c8"; +} +.ti-window:before { + content: "\e6c9"; +} +.ti-widgetized:before { + content: "\e6ca"; +} +.ti-widget:before { + content: "\e6cb"; +} +.ti-widget-alt:before { + content: "\e6cc"; +} +.ti-wallet:before { + content: "\e6cd"; +} +.ti-video-clapper:before { + content: "\e6ce"; +} +.ti-video-camera:before { + content: "\e6cf"; +} +.ti-vector:before { + content: "\e6d0"; +} +.ti-themify-logo:before { + content: "\e6d1"; +} +.ti-themify-favicon:before { + content: "\e6d2"; +} +.ti-themify-favicon-alt:before { + content: "\e6d3"; +} +.ti-support:before { + content: "\e6d4"; +} +.ti-stamp:before { + content: "\e6d5"; +} +.ti-split-v-alt:before { + content: "\e6d6"; +} +.ti-slice:before { + content: "\e6d7"; +} +.ti-shortcode:before { + content: "\e6d8"; +} +.ti-shift-right-alt:before { + content: "\e6d9"; +} +.ti-shift-left-alt:before { + content: "\e6da"; +} +.ti-ruler-alt-2:before { + content: "\e6db"; +} +.ti-receipt:before { + content: "\e6dc"; +} +.ti-pin2:before { + content: "\e6dd"; +} +.ti-pin-alt:before { + content: "\e6de"; +} +.ti-pencil-alt2:before { + content: "\e6df"; +} +.ti-palette:before { + content: "\e6e0"; +} +.ti-more:before { + content: "\e6e1"; +} +.ti-more-alt:before { + content: "\e6e2"; +} +.ti-microphone-alt:before { + content: "\e6e3"; +} +.ti-magnet:before { + content: "\e6e4"; +} +.ti-line-double:before { + content: "\e6e5"; +} +.ti-line-dotted:before { + content: "\e6e6"; +} +.ti-line-dashed:before { + content: "\e6e7"; +} +.ti-layout-width-full:before { + content: "\e6e8"; +} +.ti-layout-width-default:before { + content: "\e6e9"; +} +.ti-layout-width-default-alt:before { + content: "\e6ea"; +} +.ti-layout-tab:before { + content: "\e6eb"; +} +.ti-layout-tab-window:before { + content: "\e6ec"; +} +.ti-layout-tab-v:before { + content: "\e6ed"; +} +.ti-layout-tab-min:before { + content: "\e6ee"; +} +.ti-layout-slider:before { + content: "\e6ef"; +} +.ti-layout-slider-alt:before { + content: "\e6f0"; +} +.ti-layout-sidebar-right:before { + content: "\e6f1"; +} +.ti-layout-sidebar-none:before { + content: "\e6f2"; +} +.ti-layout-sidebar-left:before { + content: "\e6f3"; +} +.ti-layout-placeholder:before { + content: "\e6f4"; +} +.ti-layout-menu:before { + content: "\e6f5"; +} +.ti-layout-menu-v:before { + content: "\e6f6"; +} +.ti-layout-menu-separated:before { + content: "\e6f7"; +} +.ti-layout-menu-full:before { + content: "\e6f8"; +} +.ti-layout-media-right-alt:before { + content: "\e6f9"; +} +.ti-layout-media-right:before { + content: "\e6fa"; +} +.ti-layout-media-overlay:before { + content: "\e6fb"; +} +.ti-layout-media-overlay-alt:before { + content: "\e6fc"; +} +.ti-layout-media-overlay-alt-2:before { + content: "\e6fd"; +} +.ti-layout-media-left-alt:before { + content: "\e6fe"; +} +.ti-layout-media-left:before { + content: "\e6ff"; +} +.ti-layout-media-center-alt:before { + content: "\e700"; +} +.ti-layout-media-center:before { + content: "\e701"; +} +.ti-layout-list-thumb:before { + content: "\e702"; +} +.ti-layout-list-thumb-alt:before { + content: "\e703"; +} +.ti-layout-list-post:before { + content: "\e704"; +} +.ti-layout-list-large-image:before { + content: "\e705"; +} +.ti-layout-line-solid:before { + content: "\e706"; +} +.ti-layout-grid4:before { + content: "\e707"; +} +.ti-layout-grid3:before { + content: "\e708"; +} +.ti-layout-grid2:before { + content: "\e709"; +} +.ti-layout-grid2-thumb:before { + content: "\e70a"; +} +.ti-layout-cta-right:before { + content: "\e70b"; +} +.ti-layout-cta-left:before { + content: "\e70c"; +} +.ti-layout-cta-center:before { + content: "\e70d"; +} +.ti-layout-cta-btn-right:before { + content: "\e70e"; +} +.ti-layout-cta-btn-left:before { + content: "\e70f"; +} +.ti-layout-column4:before { + content: "\e710"; +} +.ti-layout-column3:before { + content: "\e711"; +} +.ti-layout-column2:before { + content: "\e712"; +} +.ti-layout-accordion-separated:before { + content: "\e713"; +} +.ti-layout-accordion-merged:before { + content: "\e714"; +} +.ti-layout-accordion-list:before { + content: "\e715"; +} +.ti-ink-pen:before { + content: "\e716"; +} +.ti-info-alt:before { + content: "\e717"; +} +.ti-help-alt:before { + content: "\e718"; +} +.ti-headphone-alt:before { + content: "\e719"; +} +.ti-hand-point-up:before { + content: "\e71a"; +} +.ti-hand-point-right:before { + content: "\e71b"; +} +.ti-hand-point-left:before { + content: "\e71c"; +} +.ti-hand-point-down:before { + content: "\e71d"; +} +.ti-gallery:before { + content: "\e71e"; +} +.ti-face-smile:before { + content: "\e71f"; +} +.ti-face-sad:before { + content: "\e720"; +} +.ti-credit-card:before { + content: "\e721"; +} +.ti-control-skip-forward:before { + content: "\e722"; +} +.ti-control-skip-backward:before { + content: "\e723"; +} +.ti-control-record:before { + content: "\e724"; +} +.ti-control-eject:before { + content: "\e725"; +} +.ti-comments-smiley:before { + content: "\e726"; +} +.ti-brush-alt:before { + content: "\e727"; +} +.ti-youtube:before { + content: "\e728"; +} +.ti-vimeo:before { + content: "\e729"; +} +.ti-twitter:before { + content: "\e72a"; +} +.ti-time:before { + content: "\e72b"; +} +.ti-tumblr:before { + content: "\e72c"; +} +.ti-skype:before { + content: "\e72d"; +} +.ti-share:before { + content: "\e72e"; +} +.ti-share-alt:before { + content: "\e72f"; +} +.ti-rocket:before { + content: "\e730"; +} +.ti-pinterest:before { + content: "\e731"; +} +.ti-new-window:before { + content: "\e732"; +} +.ti-microsoft:before { + content: "\e733"; +} +.ti-list-ol:before { + content: "\e734"; +} +.ti-linkedin:before { + content: "\e735"; +} +.ti-layout-sidebar-2:before { + content: "\e736"; +} +.ti-layout-grid4-alt:before { + content: "\e737"; +} +.ti-layout-grid3-alt:before { + content: "\e738"; +} +.ti-layout-grid2-alt:before { + content: "\e739"; +} +.ti-layout-column4-alt:before { + content: "\e73a"; +} +.ti-layout-column3-alt:before { + content: "\e73b"; +} +.ti-layout-column2-alt:before { + content: "\e73c"; +} +.ti-instagram:before { + content: "\e73d"; +} +.ti-google:before { + content: "\e73e"; +} +.ti-github:before { + content: "\e73f"; +} +.ti-flickr:before { + content: "\e740"; +} +.ti-facebook:before { + content: "\e741"; +} +.ti-dropbox:before { + content: "\e742"; +} +.ti-dribbble:before { + content: "\e743"; +} +.ti-apple:before { + content: "\e744"; +} +.ti-android:before { + content: "\e745"; +} +.ti-save:before { + content: "\e746"; +} +.ti-save-alt:before { + content: "\e747"; +} +.ti-yahoo:before { + content: "\e748"; +} +.ti-wordpress:before { + content: "\e749"; +} +.ti-vimeo-alt:before { + content: "\e74a"; +} +.ti-twitter-alt:before { + content: "\e74b"; +} +.ti-tumblr-alt:before { + content: "\e74c"; +} +.ti-trello:before { + content: "\e74d"; +} +.ti-stack-overflow:before { + content: "\e74e"; +} +.ti-soundcloud:before { + content: "\e74f"; +} +.ti-sharethis:before { + content: "\e750"; +} +.ti-sharethis-alt:before { + content: "\e751"; +} +.ti-reddit:before { + content: "\e752"; +} +.ti-pinterest-alt:before { + content: "\e753"; +} +.ti-microsoft-alt:before { + content: "\e754"; +} +.ti-linux:before { + content: "\e755"; +} +.ti-jsfiddle:before { + content: "\e756"; +} +.ti-joomla:before { + content: "\e757"; +} +.ti-html5:before { + content: "\e758"; +} +.ti-flickr-alt:before { + content: "\e759"; +} +.ti-email:before { + content: "\e75a"; +} +.ti-drupal:before { + content: "\e75b"; +} +.ti-dropbox-alt:before { + content: "\e75c"; +} +.ti-css3:before { + content: "\e75d"; +} +.ti-rss:before { + content: "\e75e"; +} +.ti-rss-alt:before { + content: "\e75f"; +} diff --git a/src/assets/fonts/glyphicons-halflings-regular.448c34a.woff2 b/src/assets/fonts/glyphicons-halflings-regular.448c34a.woff2 new file mode 100755 index 0000000000000000000000000000000000000000..64539b54c3751a6d9adb44c8e3a45ba5a73b77f0 GIT binary patch literal 18028 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 literal 0 HcmV?d00001 diff --git a/src/assets/fonts/glyphicons-halflings-regular.e18bbf6.ttf b/src/assets/fonts/glyphicons-halflings-regular.e18bbf6.ttf new file mode 100755 index 0000000000000000000000000000000000000000..1413fc609ab6f21774de0cb7e01360095584f65b GIT binary patch literal 45404 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 G`u_lkUM?>H literal 0 HcmV?d00001 diff --git a/src/assets/fonts/themify.eot b/src/assets/fonts/themify.eot new file mode 100755 index 0000000000000000000000000000000000000000..9ec298b9d932b7e9b031debb8e2bba10a59400c5 GIT binary patch literal 78748 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 Rc+gqA^*F1QK2P}i{{RHuc*g($ literal 0 HcmV?d00001 diff --git a/src/assets/fonts/themify.svg b/src/assets/fonts/themify.svg new file mode 100755 index 0000000..3d53854 --- /dev/null +++ b/src/assets/fonts/themify.svg @@ -0,0 +1,362 @@ + + + +Generated by IcoMoon + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/assets/fonts/themify.ttf b/src/assets/fonts/themify.ttf new file mode 100755 index 0000000000000000000000000000000000000000..5d627e701e86da4dde4cbb072995979de86a3db9 GIT binary patch literal 78584 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 z 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 literal 0 HcmV?d00001 diff --git a/src/assets/fonts/themify.woff b/src/assets/fonts/themify.woff new file mode 100755 index 0000000000000000000000000000000000000000..847ebd183be736a7f4e7084546502954f58f9a91 GIT binary patch literal 56108 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 literal 0 HcmV?d00001 diff --git a/src/assets/logo.png b/src/assets/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..f3d2503fc2a44b5053b0837ebea6e87a2d339a43 GIT binary patch literal 6849 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 +
+ +
+ +
+ + +
+ +
+ + +
+
+ +
+ + + + + + diff --git a/src/components/DocLive.vue b/src/components/DocLive.vue new file mode 100644 index 0000000..f8727a6 --- /dev/null +++ b/src/components/DocLive.vue @@ -0,0 +1,162 @@ + + + + + + diff --git a/src/components/docgrep/GrepView.vue b/src/components/docgrep/GrepView.vue new file mode 100644 index 0000000..bb54ad9 --- /dev/null +++ b/src/components/docgrep/GrepView.vue @@ -0,0 +1,210 @@ + + + + diff --git a/src/components/docgrep/rungrep.vue b/src/components/docgrep/rungrep.vue new file mode 100644 index 0000000..b3acd4a --- /dev/null +++ b/src/components/docgrep/rungrep.vue @@ -0,0 +1,216 @@ + + + + diff --git a/src/components/doclive/AdhocView.vue b/src/components/doclive/AdhocView.vue new file mode 100644 index 0000000..2718698 --- /dev/null +++ b/src/components/doclive/AdhocView.vue @@ -0,0 +1,518 @@ + + + + diff --git a/src/components/doclive/runLlo.vue b/src/components/doclive/runLlo.vue new file mode 100644 index 0000000..8eafc77 --- /dev/null +++ b/src/components/doclive/runLlo.vue @@ -0,0 +1,660 @@ + + + + diff --git a/src/main.js b/src/main.js new file mode 100644 index 0000000..9519483 --- /dev/null +++ b/src/main.js @@ -0,0 +1,45 @@ +import Vue from 'vue' +import App from './App.vue' +import store from '@/store/index' +import BootstrapVue from 'bootstrap-vue' +import 'bootstrap/dist/css/bootstrap.css' +import 'bootstrap-vue/dist/bootstrap-vue.css' +import VueSweetalert2 from 'vue-sweetalert2'; +Vue.use(VueSweetalert2); + + + + +import VueSocketIOExt from 'vue-socket.io-extended'; +import io from 'socket.io-client'; + + +const socket = io('https://factory.swarmlab.io:55527', { +//const socket = io('http://factory.swarmlab.io:55528', { + //autoConnect: false + autoConnect: false, + reconnection: true, + reconnectionDelay: 500, + maxReconnectionAttempts: Infinity, + pingInterval: 25000, + pingTimeout: 60000, + //transports: ["websocket"], + transports: [ 'websocket', 'polling' ], + //transports: ["polling"], + secure: true, + rejectUnauthorized: false +}); + +Vue.use(VueSocketIOExt, socket); + + + +Vue.use(BootstrapVue); + +Vue.config.productionTip = false +new Vue({ + el: '#app', + store, + render: h => h(App) +}) + diff --git a/src/store/index.js b/src/store/index.js new file mode 100644 index 0000000..1f94eb3 --- /dev/null +++ b/src/store/index.js @@ -0,0 +1,40 @@ +import Vuex from 'vuex' +import Vue from 'vue' +import { BootstrapVue, BootstrapVueIcons } from 'bootstrap-vue' +// -------------- Playbook---------------- +import pipelineLLO from './modules/create_pipelineLLO' +import { library, dom } from '@fortawesome/fontawesome-svg-core' + +import {faIcons, faSort, faChevronUp, faChevronDown, faBars, fas } from '@fortawesome/free-solid-svg-icons' +import { faJs, faVuejs, fab, faFontAwesome} from '@fortawesome/free-brands-svg-icons' +import { FontAwesomeIcon, FontAwesomeLayers, FontAwesomeLayersText } from '@fortawesome/vue-fontawesome' + + + + + +Vue.use(Vuex) +Vue.use(BootstrapVue); + + + +Vue.component('font-awesome-icon', FontAwesomeIcon) +library.add(faIcons, faSort, faChevronUp, faChevronDown, faBars, faJs, faVuejs, fab, fas, faFontAwesome) +dom.watch() // This will kick of the initial replacement of i to svg tags and configure a MutationObserver + + +import 'bootstrap/dist/css/bootstrap.css' +import 'bootstrap-vue/dist/bootstrap-vue.css' + + +export default new Vuex.Store({ + modules: { + pipelineLLO + }, + state: { // = data + }, + getters: { // = computed properties + }, + mutations: { + } +}) diff --git a/src/store/modules/create_pipelineLLO.js b/src/store/modules/create_pipelineLLO.js new file mode 100644 index 0000000..8f5a963 --- /dev/null +++ b/src/store/modules/create_pipelineLLO.js @@ -0,0 +1,237 @@ +import { mapState, mapActions, commit } from 'vuex' +import store from '@/store/index' +import axios from 'axios' + +export default { + namespaced: true, + state: { + token: '', + llo: {}, + log: [], + mongolog: [], + socketid:'', + restapi:'off' + }, + getters: { + getrestapi (state, container) { + //console.log("js1 get "+JSON.stringify(state.llo)) + return state.restapi + //return state.log + }, + getmongolog (state, container) { + //console.log("js1 get "+JSON.stringify(state.llo)) + return state.mongolog + //return state.log + }, + getlog (state, container) { + //console.log("js1 get "+JSON.stringify(state.llo)) + return state.log + }, + gettoken (state, container) { + //console.log("js1 get "+JSON.stringify(state.llo)) + return state.token + }, + getllosrc (state, container) { + //console.log("js1 get "+JSON.stringify(state.llo)) + return state.llo + }, + getsocketid (state, container) { + //console.log("js1 get "+JSON.stringify(state.llo)) + return state.socketid + } + }, + mutations: { + add_log (state, data) { + //console.log("js1 set "+JSON.stringify(data)) + state.log.push(data); + }, + setrestapi (state, data) { + //console.log("js1 set "+JSON.stringify(data)) + state.restapi=data + }, + set_token (state, data) { + //console.log("js1 set "+JSON.stringify(data)) + state.token=data; + }, + rm_log (state, path) { + //console.log("js1 set "+JSON.stringify(data)) + state.log = state.log.filter((item) => item.tailed_path !== path); + //const filteredArray = myarr.filter(obj => obj.name !== 'foo'); + //console.log("js1 set "+JSON.stringify(filterlog)) + console.log("js1 setrm "+JSON.stringify(state.log)) + + //state.log = filterlog; + }, + tail_log (state, path) { + //console.log("js1 set "+JSON.stringify(data)) + state.log = state.log.filter((item) => item.tailed_path !== path).splice(0, 4); + //const filteredArray = myarr.filter(obj => obj.name !== 'foo'); + //console.log("js1 set "+JSON.stringify(filterlog)) + console.log("js1 setrmrmrmrmrmrmrmrm "+JSON.stringify(state.log)) + + //state.log = filterlog; + }, + setmongolog (state, data) { + //console.log("js1 set "+JSON.stringify(data)) + state.mongolog.push(data); + //state.log.push(data); + }, + rmmongolog (state, data) { + //console.log("js1 set "+JSON.stringify(data)) + state.mongolog = []; + //state.log.push(data); + }, + setllo (state, data) { + //console.log("js1 set "+JSON.stringify(data)) + state.llo=data; + }, + setsocketid (state, data) { + //console.log("js1 set "+JSON.stringify(data)) + state.socketid = data; + } + }, + actions: { + RMmongolog({commit}, value) { + commit('rmmongolog') + }, + addlog({commit}, value) { + //console.log("container "+value) + var tt = {} + tt.message = value.log.log.message + tt.tailed_path = value.log.log.tailed_path + tt.date = value.log.date + commit('add_log', tt) + }, + setRestapi({commit}, value) { + //console.log("container "+value) + commit('setrestapi', value.restapi) + }, + settoken({commit}, value) { + //console.log("container "+value) + commit('set_token', value.token) + }, + rmlog({commit}, value) { + //console.log("containerirm "+value) + commit('rm_log', value.path) + }, + taillog({commit}, value) { + console.log("containerirm "+value) + commit('tail_log', value.path) + }, + async get_data({commit,rootGetters}, value) { + try { + + let p = await axios.get("https://factory.swarmlab.io:55527/run", { + timeout: 45000, + params: { + code: value.code + } + }); + + //var p = value.code + console.log("paramp "+JSON.stringify(p)) + store.dispatch('pipelineLLO/setScriptllo', p) + return p; + + } catch (e) { + if(e.message == "Request failed with status code 401" || /401/i.test(e.message)){ + window.location.href = 'https://api-login.swarmlab.io:8089'; + }else{ + var R = { + ERROR_str: e, + ERROR: 'yes' + } + return R; + } + } + }, + async get_log({commit,rootGetters}, value) { + try { + var token = store.getters['pipelineLLO/gettoken']; + + let p = await axios.get("https://factory.swarmlab.io:55527/get_log", { + timeout: 45000, + params: { + token: token, + start: value.datestart, + end: value.dateend, + swarmlabname: value.swarmlabname + } + }); + + //var p = value.code + console.log("paramp-------------------------- "+JSON.stringify(value)) + store.dispatch('pipelineLLO/set_mongolog', p) + return p; + + } catch (e) { + if(e.message == "Request failed with status code 401" || /401/i.test(e.message)){ + window.location.href = 'https://api-login.swarmlab.io:8089'; + }else{ + var R = { + ERROR_str: e, + ERROR: 'yes' + } + return R; + } + } + }, + async hotreload({commit,rootGetters}, value) { + try { + var token = value.token + var params = { + swarmlabname: value.swarmlabname + } + var options = { + headers: { 'content-type': 'application/x-www-form-urlencoded',Authorization: `Bearer ${token}` }, + }; + var p = await axios.post('https://api.swarmlab.io/swarmlabrunhotreload',params,options); + if(p.error == "invalid_token"){ + console.log(p) + console.log(JSON.stringify(p)) + }else{ + } + //console.log(value.token) + //console.log(value.swarmlabname) + console.log(JSON.stringify(p)) + } catch (e) { + if(e.message == "Request failed with status code 401" || /401/i.test(e.message)){ + //console.log('error '+JSON.stringify(e)) + window.location.href = 'https://api-login.swarmlab.io:8089'; + }else{ + var R = { + ERROR_str: e, + ERROR: 'yes' + } + return R; + } + } + }, + set_mongolog({commit}, value) { + //console.log("container "+value) + //commit('setmongolog', value) + for (let item of value.data.data) { + //console.log(JSON.stringify(item)) + var itemobj = {} + itemobj.message = item.message + itemobj.tailed_path = item.tailed_path + itemobj.date = item.time + //console.log('vvvvvvvvvvvvvvvvvvvvvvvv '+JSON.stringify(itemobj)) + + commit('setmongolog', itemobj) + } + }, + setScriptllo({commit}, value) { + //console.log("container "+value) + commit('setllo', value) + }, + setsocketllo({commit}, value) { + //console.log("container "+value) + commit('setsocketid', value) + }, + setScriptCodlogAction({commit}, value) { + //console.log("container "+value) + commit('setScriptCodelog', value) + } + } +} diff --git a/swarmlab-app/LICENSE b/swarmlab-app/LICENSE deleted file mode 100644 index 82b5650..0000000 --- a/swarmlab-app/LICENSE +++ /dev/null @@ -1,614 +0,0 @@ -GNU AFFERO GENERAL PUBLIC LICENSE - -Version 3, 19 November 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 Affero General Public License is a free, copyleft license for software -and other kinds of works, specifically designed to ensure cooperation with -the community in the case of network server software. - -The licenses for most software and other practical works are designed to take -away your freedom to share and change the works. By contrast, our General -Public Licenses are 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. - -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. - -Developers that use our General Public Licenses protect your rights with two -steps: (1) assert copyright on the software, and (2) offer you this License -which gives you legal permission to copy, distribute and/or modify the software. - -A secondary benefit of defending all users' freedom is that improvements made -in alternate versions of the program, if they receive widespread use, become -available for other developers to incorporate. Many developers of free software -are heartened and encouraged by the resulting cooperation. However, in the -case of software used on network servers, this result may fail to come about. -The GNU General Public License permits making a modified version and letting -the public access it on a server without ever releasing its source code to -the public. - -The GNU Affero General Public License is designed specifically to ensure that, -in such cases, the modified source code becomes available to the community. -It requires the operator of a network server to provide the source code of -the modified version running there to the users of that server. Therefore, -public use of a modified version, on a publicly accessible server, gives the -public access to the source code of the modified version. - -An older license, called the Affero General Public License and published by -Affero, was designed to accomplish similar goals. This is a different license, -not a version of the Affero GPL, but Affero has released a new version of -the Affero GPL which permits relicensing under this license. - -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 Affero 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 s ue 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. Remote Network Interaction; Use with the GNU General Public License. - -Notwithstanding any other provision of this License, if you modify the Program, -your modified version must prominently offer all users interacting with it -remotely through a computer network (if your version supports such interaction) -an opportunity to receive the Corresponding Source of your version by providing -access to the Corresponding Source from a network server at no charge, through -some standard or customary means of facilitating copying of software. This -Corresponding Source shall include the Corresponding Source for any work covered -by version 3 of the GNU General Public License that is incorporated pursuant -to the following paragraph. - -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 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 work with which it is combined will remain -governed by version 3 of the GNU General Public License. - - 14. Revised Versions of this License. - -The Free Software Foundation may publish revised and/or new versions of the -GNU Affero 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 Affero 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 Affero 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 Affero 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 Affero 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 Affero General Public License for more -details. - -You should have received a copy of the GNU Affero General Public License along -with this program. If not, see . - -Also add information on how to contact you by electronic and paper mail. - -If your software can interact with users remotely through a computer network, -you should also make sure that it provides a way for users to get its source. -For example, if your program is a web application, its interface could display -a "Source" link that leads users to an archive of the code. There are many -ways you could offer source, and different solutions will be better for different -programs; see section 13 for the specific requirements. - -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 AGPL, see . diff --git a/swarmlab-app/README.md b/swarmlab-app/README.md deleted file mode 100644 index f6b055b..0000000 --- a/swarmlab-app/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# swarmlab-app - diff --git a/swarmlab-app/src/package.json b/swarmlab-app/src/package.json deleted file mode 100644 index ddf5956..0000000 --- a/swarmlab-app/src/package.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "name": "swarmlab-app", - "version": "1.0.0", - "description": "swarmlab app on node", - "main": "app.js", - "scripts": { - "start": "node ./run/app.js" - }, - "dependencies": { - "async": "^3.2.0", - "axios": "^0.20.0", - "bestikk-log": "^1.0.0-alpha.2", - "mongodb": "^3.6.3", - "chai": "^4.2.0", - "cors": "^2.8.5", - "dirty-chai": "^2.0.1", - "express": "^4.17.1", - "express-validator": "^6.6.1", - "helmet": "^4.1.1", - "luxon": "^1.25.0", - "url-exist-sync": "^1.0.2" - }, - "devDependencies": {} -} diff --git a/swarmlab-app/src/run/app-ok1.js b/swarmlab-app/src/run/app-ok1.js deleted file mode 100755 index 42cb523..0000000 --- a/swarmlab-app/src/run/app-ok1.js +++ /dev/null @@ -1,643 +0,0 @@ -"use strict" - -var pathmodule = require('path'); -var app = require('express')(); -var http = require('http').Server(app); -var https = require('https'); -const io = require("socket.io")(http, { -// pingTimeout: 30000, -// allowUpgrades: false, -// serveClient: false, -// pingInterval: 10000, -// //transports: [ 'websocket', 'polling' ], -// transports: [ 'polling', 'websocket' ], - cors: { - origin: "http://localhost:8080", - methods: ["GET", "POST"], - allowedHeaders: ["my-custom-header"], - credentials: true - }, - cookie: { - name: "test", - httpOnly: false, - path: "/custom" - } -}); - -/* -const Redis = require("ioredis"); -const redistest = new Redis({ - host: 'redisserver', - port: 6379, - }); -const pubtest = new Redis({ - host: 'redisserver', - port: 6379, - }); -*/ - - -//import { createAdapter } from 'socket.io-redis'; -const createAdapter = require('socket.io-redis'); -//const RedisClient = require("redis"); -const Redis = require("ioredis"); -//const pubClient = RedisClient.createClient({ - -const pubClient = new Redis({ - host: 'redisserver', - port: 6379, - }); - -//const pubClient = new RedisClient({ host: 'localhost', port: 6379 }); -const subClient = pubClient.duplicate(); - -io.adapter(createAdapter({ pubClient, subClient })); - - -pubClient.on("connect", function() { - console.log("You are now connected"); -}); - -const MongoClient = require('mongodb').MongoClient; - - var async = require("async"); -const { check, validationResult } = require('express-validator'); -const urlExistSync = require("url-exist-sync"); - -var express = require('express'); -app.use(express.json()); - -const axios = require('axios'); -axios.defaults.timeout = 30000 - - const helmet = require('helmet'); -app.use(helmet()); - -const cors = require('cors') -const whitelist = [ - 'http://localhost:8080', - 'http://localhost:3080', - 'http://localhost:3081', - 'http://localhost:3082' - ] -const corsOptions = { - credentials: true, - methods: ['GET', 'PUT', 'POST', 'DELETE', 'OPTIONS'], - optionsSuccessStatus: 200, // some legacy browsers (IE11, various SmartTVs) choke on 204 - allowedHeaders: [ - 'Content-Type', - 'Authorization', - 'X-Requested-With', - 'device-remember-token', - 'Access-Control-Allow-Origin', - 'Access-Control-Allow-Headers', - 'Origin', - 'Accept' - ], - origin: function(origin, callback) { - if (whitelist.indexOf(origin) !== -1) { - callback(null, true) - } else { - callback(null, true) - //callback(new Error('Not allowed by CORS')) - } - } -} - - -// *************************************************** -// checktoken -// *************************************************** - -async function checkToken(token) { - const agent = new https.Agent({ - rejectUnauthorized: false, - }); - const instance = axios.create({ - baseURL: 'https://api.swarmlab.io', - withCredentials: true, - rejectUnauthorized: false, - crossdomain: true, - httpsAgent: agent, - headers: { - 'Accept': 'application/json', - 'Content-Type': 'multipart/form-data', - 'Authorization': 'Bearer '+token - } - }) - try { - var pipelines = { - "source":'ssologin' - } - var params = { - pipeline: pipelines - } - - var options = { - headers: { 'content-type': 'application/x-www-form-urlencoded',Authorization: `Bearer ${token}` }, - }; - - instance.defaults.timeout = 30000; - const res = await instance.post('/istokenvalidsso',params,options); - if(res.status == 200){ - //console.log("check " +JSON.stringify(res.data)) - return res.data - }else{ - console.log("noerror: " + res) - return res.status - - } - } - catch (err) { - console.error("error: "+err); - var error = new Object(); - error.action = '401' - return error - } -} - - -function convertDateToUTC(date) { -return new Date(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds(),date.getUTCMilliseconds()); -} - -// *************************************************** -// get pipelines -// *************************************************** - -async function getpipelines(token,pipelinename) { - const agent = new https.Agent({ - rejectUnauthorized: false, - }); - const instance = axios.create({ - baseURL: 'https://api.swarmlab.io', - withCredentials: true, - rejectUnauthorized: false, - crossdomain: true, - httpsAgent: agent, - headers: { - 'Accept': 'application/json', - 'Content-Type': 'multipart/form-data', - 'Authorization': 'Bearer '+token - } - }) - /* - var params = { - playbook: value - } - var options = { - params: params, - headers: { 'content-type': 'application/x-www-form-urlencoded',Authorization: `Bearer ${token}` }, - }; - - const playbook = await api.GET('playbookCode',options); - return playbook -*/ - try { - - var pipelines = { - "querytokenFilter":'uWr4FKRqrmpCRkJ9WLuI0DNuDWOGTkfcSzyZkJirZvJwwFDffLWrraqzzSPLeuQqL3TF9', - "filter":pipelinename - } - //var params = { - // pipeline: pipelines - // } - var params = { - querytokenFilter:'uWr4FKRqrmpCRkJ9WLuI0DNuDWOGTkfcSzyZkJirZvJwwFDffLWrraqzzSPLeuQqL3TF9', - filter:pipelinename - } - - var options = { - params: params, - headers: { 'content-type': 'application/x-www-form-urlencoded',Authorization: `Bearer ${token}` }, - }; - - //https://api.swarmlab.io/gettutorlabrooms?sort=pipelinename%7Casc&page=1&per_page=5&filter=&type=scripts&tutor=yes - instance.defaults.timeout = 30000; - //const res = await instance.get('/getplaygrounds',params,options); - const res = await instance.get('/getplaygrounds',options); - if(res.status == 200){ - return res.data - }else{ - console.log("noerror: " + res) - return await res.status - - } - } - catch (err) { - console.error("error: "+err); - var error = new Object(); - error.action = '401' - return await error - } -} - - -global.online='ob'; -global.pipelines=[]; - - function sendlog(reslog,pathfileval){ - var usertmp = global.pipelines.find(x => x.pathlogfile==pathfileval); - //for (var key in usertmp.data){ - var user = usertmp.data[0].user25user; - // if(usertmp.data){ - console.log('-----------------------' + JSON.stringify(usertmp)); - io.in(user).emit("logdata", reslog); - // } - //} - } - function onlogfile(path){ - - console.log('File', path, 'has been added'); - var pathfileval = pathmodule.basename(path); - var arrfile = pathfileval.toString().split("-"); - var pathfile = arrfile[0]; - var indexfind1 = global.pipelines.findIndex(x => x.pathlogfile==pathfileval); - console.log('file11111111111111111111111111111111 ' + JSON.stringify(pathfileval)) - if (indexfind1 === -1 ){ - (async() => { - console.log('file2222222222222222222222222222222222222 ' + JSON.stringify(pathfileval)) - var token = "d2539e5a7ae1f9f1b0eb2b8f22ca467a86d28407"; // desto - var resdata = await getpipelines(token,pathfile) - //resdata.data.pathlogfile = 'test' - var resob = {} - resob.pathlogfile = pathfileval - var resobarray = [] - for (let i in resdata.data) { - var resob1 = {} - resob1.data = resdata.data[i].res25swarmlabname - resob1.user25user = resdata.data[i].res25user - resob1.res25creator = resdata.data[i].res25creator - resob1.res25fileforce = resdata.data[i].res25fileforce - resobarray.push(resob1) - } - resob.data = resobarray - var indexfind = global.pipelines.findIndex(x => x.pathlogfile==pathfileval); - indexfind === -1 ? global.pipelines.push(resob) : console.log("object already exists "+pathfileval) - })() - } - -} - -// *************************************************** -// rest get -// *************************************************** - -app.get('/run', [ - //check('access_token').isLength({ min: 40 }), - //check('llo').isBase64() - ], -cors(corsOptions), (req, res, next) => { - - (async() => { - -var mongourl = "mongodb://playgrounduser:efvvnuioervefSDFSGYGHRDFVsdfergvssppiiedifhwincvinviw_dbfjbsifbsdkjfswuunscfudfgbbfvibqefwrvnine@ondemand_playground_mongo1:27017,ondemand_playground_mongo2:27017,ondemand_playground_mongo3:27017,ondemand_playground_mongo4:27017,ondemand_playground_mongo5:27017,ondemand_playground_mongo6:27017,ondemand_playground_mongo7:27017/fluent?replicaSet=rs1" -const OPTS = { - useNewUrlParser: true, - useUnifiedTopology: true -}; -MongoClient.connect(mongourl, OPTS, function(err, client){ - if(err){ - console.log(err); - } else { - const db = client.db('fluent'); - //db.collection('log', onCollection); - console.log(JSON.stringify('mongo connected')) - var stream = db.collection('logs').find({}, { - tailable: true, - awaitdata: true - /* other options */ -}).stream(); - -stream.on('data', function (doc) { - console.log(JSON.stringify(doc)) - //socket.write(JSON.stringify({'action': 'log','param': doc.log})); -}); - } -}); - var RES = new Object(); - RES.code = req.query["filter"] - RES.token = req.query["filter"] - var isvalid = await checkToken(RES.token); - if(isvalid.action == 'ok'){ - console.log("Authserver ok " + RES.token); - }else{ - console.log("Authserver no " + RES.token); - } - RES.error = false - RES.error_msg = "ok" - res.json(RES) - })() - -}); - -// *************************************************** -// rest post -// *************************************************** - -app.post('/run', [ - //check('access_token').isLength({ min: 40 }), - //check('llo').isBase64() - ], -cors(corsOptions), (req, res, next) => { - - - (async() => { - - //console.log(JSON.stringify(req.headers)); - //console.log(JSON.stringify(req.body)); - //console.log("mongo "+JSON.stringify(req.body)); - //console.log("LOG "+JSON.stringify(req.body[0].message)); - //console.log("PATH "+JSON.stringify(req.body[0].tailed_path)); - for (var i = 0; i < req.body.length; i++){ - //var getpath = await onlogfile(req.body[i].tailed_path) - - var path = req.body[i].tailed_path - - console.log('File', path, 'has been added'); - var pathfileval = pathmodule.basename(path); - var arrfile = pathfileval.toString().split("-"); - var pathfile = arrfile[0]; - var indexfind1 = global.pipelines.findIndex(x => x.pathlogfile==pathfileval); - console.log('file11111111111111111111111111111111 ' + JSON.stringify(pathfileval)) - if (indexfind1 === -1 ){ - (async() => { - console.log('file2222222222222222222222222222222222222 ' + JSON.stringify(pathfileval)) - var token = "d2539e5a7ae1f9f1b0eb2b8f22ca467a86d28407"; // desto - var resdata = await getpipelines(token,pathfile) - //resdata.data.pathlogfile = 'test' - var resob = {} - resob.pathlogfile = pathfileval - var resobarray = [] - for (let i in resdata.data) { - var resob1 = {} - resob1.data = resdata.data[i].res25swarmlabname - resob1.user25user = resdata.data[i].res25user - resob1.res25creator = resdata.data[i].res25creator - resob1.res25fileforce = resdata.data[i].res25fileforce - resobarray.push(resob1) - } - resob.data = resobarray - //var indexfind = global.pipelines.findIndex(x => x.res25swarmlabname==resdata.data[0].res25swarmlabname); - var indexfind = global.pipelines.findIndex(x => x.pathlogfile==pathfileval); - - //indexfind === -1 ? global.pipelines.push({resob}) : console.log("object already exists") - indexfind === -1 ? global.pipelines.push(resob) : console.log("object already exists "+pathfileval) - - //console.log('info', JSON.stringify(resdata)); - //console.log('info------------- ', JSON.stringify(global.pipelines)); - })() - } - // - var obj = req.body[i]; - - //var indexfind = global.pipelines.findIndex(x => x.res25swarmlabname==resdata.data.res25swarmlabname); - //indexfind === -1 ? global.pipelines.push(resob) : console.log("object already exists") - var now = new Date(); - - var reslog = new Object(); - reslog.log = obj - - reslog.date = convertDateToUTC(now) - console.log(reslog); - var pathfileval = pathmodule.basename(reslog.log.tailed_path); - var indexfind = global.pipelines.findIndex(x => x.pathlogfile==pathfileval); - //indexfind === -1 ? sendlog(reslog,pathfileval) : console.log("object already exists") - indexfind === -1 ? console.log("object not found") : sendlog(reslog,pathfileval) - console.log("IOT "+JSON.stringify(reslog.log.tailed_path)); - console.log("IOTindexfind "+JSON.stringify(indexfind)); - console.log("IOTuser "+JSON.stringify(global.pipelines)); - // io.in("iot").emit("message", reslog); - // io.emit("logdata", reslog); - } - })() - - //io.in("iot").emit("message", RES); - - console.error('socket POST from client'); - var RES = new Object(); - RES.error = false - RES.error_msg = "ok" - RES.msg = req.body[0].messsage - - res.json(RES) -}); - -// *************************************************** -// socket -// *************************************************** - -function getSHA256ofJSON(input){ - return require("crypto").createHash("sha256").update(JSON.stringify(input)).digest("hex"); -} - - -function onCollection(err, collection) { - let options = { tailable: true, - awaitdata: true, - numberOfRetries: -1, - tailableRetryInterval: 500 - }; - var cursor = collection.find({},options).stream(); - var itemsProcessed = 0; - - var reslog = new Object(); - var reslog1 = new Object(); - var now = new Date(); - cursor.on('data', function (data) { - reslog1.log=data - (async() => { - var issendob = {}; - issendob.message = data.message - issendob.tailed_path = data.tailed_path - - var issend = getSHA256ofJSON(issendob) - - console.log('++++++++' + JSON.stringify(data)); - console.log('++++++++' + JSON.stringify(issend)); - - var pathfileval = pathmodule.basename(data.tailed_path); - var arrfile = pathfileval.toString().split("-"); - var pathfile = arrfile[0]; - - var indexupdate = "yes" - var resob = {} - await pubClient.get(pathfileval, function(err, object) { - console.log('----------------' + err + '<<<<<<<<<<<<<<<<<<<<<<' + object); - if(object){ - indexupdate = "no" - }else{ - console.log('redis '+JSON.stringify(object)); - } - console.log('update '+JSON.stringify(indexupdate)); - if (indexupdate == "yes" ){ - (async() => { - io.in('anagnostopoulos@uniwa.gr').emit("logdata", reslog1); - var token = "d2539e5a7ae1f9f1b0eb2b8f22ca467a86d28407"; // desto - var resdata = await getpipelines(token,pathfile) - resob.pathlogfile = pathfileval - var resobarray = [] - var resob1 = {} - var i = 0 - resob1.data = resdata.data[i].res25swarmlabname - resob1.user25user = resdata.data[i].res25user - resob1.res25creator = resdata.data[i].res25creator - resob1.res25fileforce = resdata.data[i].res25fileforce - resob1.tailed_path = pathfileval - var resob1string = JSON.stringify(resob1); - pubClient.set(pathfileval, resob1string, function(err, res) { - }); - reslog.data = resob1 - reslog.log = data - reslog.date = convertDateToUTC(now) - var user = resob1.res25creator - console.log('datauser ' + JSON.stringify(user)); - console.log('>>>>>>>>>>>>>>>>>>>>>>>>>>>>> '+JSON.stringify(reslog)); - await pubClient.get(issend, function(err, object) { - if(err == null){ - pubClient.set(issend, itemsProcessed, function(err, res) { - io.in(user).emit("logdata", reslog); - }); - } - itemsProcessed++; - }); - })() //await inside yes - }else{ - (async() => { - await pubClient.get(pathfileval, function(err, object) { - var objecttmp = JSON.parse(object); - var resob1 = {} - resob1.data = objecttmp.res25swarmlabname - resob1.user25user = objecttmp.res25user - resob1.res25creator = objecttmp.res25creator - resob1.res25fileforce = objecttmp.res25fileforce - resob1.tailed_path = objecttmp.tailed_path - - reslog.data = resob1 - reslog.log = data - reslog.date = convertDateToUTC(now) - - console.log('<<<<<<<<<<<---------------------<<<<<<<<<<<<<<<---------------------------<<<<<<<<<<<< '+JSON.stringify(object)); - console.log('<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< '+JSON.stringify(reslog)); - console.log('<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>> '+JSON.stringify(resob1)); - //var user = objecttmp.user25user - var user = resob1.res25creator - //io.in(user).emit("logdata", reslog); - //var user = 'anagnostopoulos@uniwa.gr' - - pubClient.get(issend).then(function (result) { - console.log("---result--- "+result); // Prints "bar" - io.in(user).emit("logdata", reslog); - }); - - pubClient.get(issend, function(err, object) { - if(err == null){ - pubClient.set(issend, itemsProcessed, function(err, res) { - //io.in(user).emit("logdata", reslog); - }); - } - itemsProcessed++; - }); - }); - })() //await inside no - } - }); //redis get - })() //async - - }); - - - setInterval(function () { - console.log('itemsProcessed', itemsProcessed); - // this method is also exposed by the Server instance - //console.log(adapter.rooms); - }, 8000); -} - - - var mongourl = "mongodb://playgrounduser:efvvnuioervefSDFSGYGHRDFVsdfergvssppiiedifhwincvinviw_dbfjbsifbsdkjfswuunscfudfgbbfvibqefwrvnine@ondemand_playground_mongo1:27017,ondemand_playground_mongo2:27017,ondemand_playground_mongo3:27017,ondemand_playground_mongo4:27017,ondemand_playground_mongo5:27017,ondemand_playground_mongo6:27017,ondemand_playground_mongo7:27017/fluent?replicaSet=rs1" - const OPTS = { - useNewUrlParser: true, - useUnifiedTopology: true - }; - var mongooptions = { - autoReconnect: true, - keepAlive: 1, - connectTimeoutMS: 30000, - socketTimeoutMS: 0 - } - MongoClient.connect(mongourl, OPTS, function(err, client){ - if(err){ - console.log(err); - } else { - const db = client.db('fluent'); - db.collection('logs', onCollection); - } - }); - -io.on('connection', s => { - console.error('socket connection'); - -//s.set('transports', ['websocket']); -//s.set('pingTimeout', 30000); -//s.set('allowUpgrades', false); -//s.set('serveClient', false); -//s.set('pingInterval', 10000); - // ------------------------------ - // --- set - // ------------------------------ - var usersession = new Object(); - usersession.SOCKET = {}; - usersession.SOCKET.error = {}; - console.error('socket ...'); - s.auth = false; - - // ------------------------------ - // --- authenticate - // ------------------------------ - s.on('authenticate', function(data){ - const token = data - console.log('invalid 1 ' + token); - (async() => { - var isvalid = await checkToken(token); - if(isvalid.action == 'ok'){ - console.log("Authserver ok ", s.id + ' - ' + token); - // pubClient.set(session, resob1string, function(err, res) { - // }); - usersession.SOCKET.user = isvalid.user - usersession.SOCKET.scope = isvalid.scope // space delimeter - usersession.SOCKET.token = isvalid.token - s.auth = true; - }else{ - console.log("Authserver no ", s.id + ' - ' + token); - s.auth = false; - } - })() - }); - - setTimeout(function(){ - if (!s.auth) { - console.log("Disconnecting timeout socket ", s.id); - //s.disconnect('unauthorized'); - }else{ - var room = usersession.SOCKET.user - //s.on("subscribe", function (room) { - s.join(room); - console.log("joining rooom", s.rooms); - console.log(room + ' created ') - // }); - } - }, 30000); - - - - - var id = s.id - s.on('log', obj => { - console.error('from client '+ s.id + ' obj ' + obj); - }); - -}); - -http.listen(3000, () => console.error('listening on http://localhost:3000/')); -console.error('socket.io example'); diff --git a/swarmlab-app/src/run/app.backup.js b/swarmlab-app/src/run/app.backup.js deleted file mode 100644 index c98c834..0000000 --- a/swarmlab-app/src/run/app.backup.js +++ /dev/null @@ -1,91 +0,0 @@ -var path = require('path'); -var app = require('express')(); -var http = require('http').Server(app); -var io = require('socket.io')(http); -const cors = require("cors"); - -//const socketAuth = require('socketio-auth'); - - - -//const whitelist = ["http://localhost:8080"]; -const whitelist = ["*"]; -const corsOptions = { - credentials: true, - methods: ["GET", "PUT", "POST", "DELETE", "OPTIONS"], - optionsSuccessStatus: 200, // some legacy browsers (IE11, various SmartTVs) choke on 204 - allowedHeaders: [ - "Content-Type", - "Authorization", - "X-Requested-With", - "device-remember-token", - "Access-Control-Allow-Origin", - "Access-Control-Allow-Headers", - "Origin", - "Accept", - ], - origin: function (origin, callback) { - if (whitelist.indexOf(origin) !== -1) { - callback(null, true); - } else { - callback(null, true); - //callback(new Error('Not allowed by CORS')) - } - }, -}; - -app.get( - "/run", - [ - //check('access_token').isLength({ min: 40 }), - //check('llo').isBase64() - ], - cors(corsOptions), - (req, res, next) => { - var RES = new Object(); - RES.code = req.query["code"]; - console.error("socket GET from client " + RES.code); - - RES.error = false; - RES.error_msg = "ok"; - - io.emit("iotdata", RES); - io.in("iot").emit("message", RES); - res.json(RES); - } -); - - -app.get( - "/test", - [ - //check('access_token').isLength({ min: 40 }), - //check('llo').isBase64() - ], - cors(corsOptions), - (req, res) => { - var data = req.query["input"]; - var RES = new Object(); - console.error(`Client called GET from axios`); - res.json(data); - } -); - - io.on("log", (data) => { - console.log(JSON.stringify("d " + data)); - console.error(JSON.stringify("c " + data)); - }); -io.on("connection", (s) => { - console.error(`\nSomeone connected to port 3000`); - var id = s.id; - - s.on("log", (data) => { - console.log(JSON.stringify(data)); - console.error(JSON.stringify(data)); - }); - -}); - -http.listen(3000, () => console.error("listening on http://0.0.0.0:3000/")); -console.error("Run demo project"); -console.log("Hello World!"); diff --git a/swarmlab-app/src/run/app.backup1.js b/swarmlab-app/src/run/app.backup1.js deleted file mode 100755 index d32fd63..0000000 --- a/swarmlab-app/src/run/app.backup1.js +++ /dev/null @@ -1,575 +0,0 @@ -"use strict" - -var pathmodule = require('path'); -var app = require('express')(); -var http = require('http').Server(app); -var https = require('https'); -var io = require('socket.io')(http); - -//import { createAdapter } from 'socket.io-redis'; -const createAdapter = require('socket.io-redis'); -//import { RedisClient } from 'redis'; -const RedisClient = require("redis"); -const pubClient = RedisClient.createClient({ - host: 'redisserver', - port: 6379, - }); - -//const pubClient = new RedisClient({ host: 'localhost', port: 6379 }); -const subClient = pubClient.duplicate(); - -io.adapter(createAdapter({ pubClient, subClient })); - -pubClient.on("connect", function() { - console.log("You are now connected"); -}); - -const MongoClient = require('mongodb').MongoClient; - -//var chokidar = require("chokidar"); -//var logpath = "/var/lab/playground-serverlogs"; -//var watcher = chokidar.watch(logpath, { -// ignored: /[\/\\]\./, -// awaitWriteFinish: true, -// persistent: true -// }); - - - var async = require("async"); -const { check, validationResult } = require('express-validator'); -const urlExistSync = require("url-exist-sync"); - -var express = require('express'); -app.use(express.json()); - -const axios = require('axios'); -axios.defaults.timeout = 30000 - - const helmet = require('helmet'); -app.use(helmet()); - -const cors = require('cors') -const whitelist = [ - 'http://localhost:8080', - 'http://localhost:3080', - 'http://localhost:3081', - 'http://localhost:3082' - ] -const corsOptions = { - credentials: true, - methods: ['GET', 'PUT', 'POST', 'DELETE', 'OPTIONS'], - optionsSuccessStatus: 200, // some legacy browsers (IE11, various SmartTVs) choke on 204 - allowedHeaders: [ - 'Content-Type', - 'Authorization', - 'X-Requested-With', - 'device-remember-token', - 'Access-Control-Allow-Origin', - 'Access-Control-Allow-Headers', - 'Origin', - 'Accept' - ], - origin: function(origin, callback) { - if (whitelist.indexOf(origin) !== -1) { - callback(null, true) - } else { - callback(null, true) - //callback(new Error('Not allowed by CORS')) - } - } -} - - -// *************************************************** -// checktoken -// *************************************************** - -async function checkToken(token) { - const agent = new https.Agent({ - rejectUnauthorized: false, - }); - const instance = axios.create({ - baseURL: 'https://api.swarmlab.io', - withCredentials: true, - rejectUnauthorized: false, - crossdomain: true, - httpsAgent: agent, - headers: { - 'Accept': 'application/json', - 'Content-Type': 'multipart/form-data', - 'Authorization': 'Bearer '+token - } - }) - try { - var pipelines = { - "source":'ssologin' - } - var params = { - pipeline: pipelines - } - - var options = { - headers: { 'content-type': 'application/x-www-form-urlencoded',Authorization: `Bearer ${token}` }, - }; - - instance.defaults.timeout = 30000; - const res = await instance.post('/istokenvalidsso',params,options); - if(res.status == 200){ - //console.log("check " +JSON.stringify(res.data)) - return res.data - }else{ - console.log("noerror: " + res) - return res.status - - } - } - catch (err) { - console.error("error: "+err); - var error = new Object(); - error.action = '401' - return error - } -} - - -function convertDateToUTC(date) { -return new Date(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds(),date.getUTCMilliseconds()); -} - -// *************************************************** -// get pipelines -// *************************************************** - -async function getpipelines(token,pipelinename) { - const agent = new https.Agent({ - rejectUnauthorized: false, - }); - const instance = axios.create({ - baseURL: 'https://api.swarmlab.io', - withCredentials: true, - rejectUnauthorized: false, - crossdomain: true, - httpsAgent: agent, - headers: { - 'Accept': 'application/json', - 'Content-Type': 'multipart/form-data', - 'Authorization': 'Bearer '+token - } - }) - /* - var params = { - playbook: value - } - var options = { - params: params, - headers: { 'content-type': 'application/x-www-form-urlencoded',Authorization: `Bearer ${token}` }, - }; - - const playbook = await api.GET('playbookCode',options); - return playbook -*/ - try { - - var pipelines = { - "querytokenFilter":'uWr4FKRqrmpCRkJ9WLuI0DNuDWOGTkfcSzyZkJirZvJwwFDffLWrraqzzSPLeuQqL3TF9', - "filter":pipelinename - } - //var params = { - // pipeline: pipelines - // } - var params = { - querytokenFilter:'uWr4FKRqrmpCRkJ9WLuI0DNuDWOGTkfcSzyZkJirZvJwwFDffLWrraqzzSPLeuQqL3TF9', - filter:pipelinename - } - - var options = { - params: params, - headers: { 'content-type': 'application/x-www-form-urlencoded',Authorization: `Bearer ${token}` }, - }; - - //https://api.swarmlab.io/gettutorlabrooms?sort=pipelinename%7Casc&page=1&per_page=5&filter=&type=scripts&tutor=yes - instance.defaults.timeout = 30000; - //const res = await instance.get('/getplaygrounds',params,options); - const res = await instance.get('/getplaygrounds',options); - if(res.status == 200){ - return res.data - }else{ - console.log("noerror: " + res) - return res.status - - } - } - catch (err) { - console.error("error: "+err); - var error = new Object(); - error.action = '401' - return error - } -} - - -global.online='ob'; -global.pipelines=[]; - - function sendlog(reslog,pathfileval){ - var usertmp = global.pipelines.find(x => x.pathlogfile==pathfileval); - //for (var key in usertmp.data){ - var user = usertmp.data[0].user25user; - // if(usertmp.data){ - console.log('-----------------------' + JSON.stringify(usertmp)); - io.in(user).emit("logdata", reslog); - // } - //} - } - function onlogfile(path){ - - console.log('File', path, 'has been added'); - var pathfileval = pathmodule.basename(path); - var arrfile = pathfileval.toString().split("-"); - var pathfile = arrfile[0]; - var indexfind1 = global.pipelines.findIndex(x => x.pathlogfile==pathfileval); - console.log('file11111111111111111111111111111111 ' + JSON.stringify(pathfileval)) - if (indexfind1 === -1 ){ - (async() => { - console.log('file2222222222222222222222222222222222222 ' + JSON.stringify(pathfileval)) - var token = "d2539e5a7ae1f9f1b0eb2b8f22ca467a86d28407"; // desto - var resdata = await getpipelines(token,pathfile) - //resdata.data.pathlogfile = 'test' - var resob = {} - resob.pathlogfile = pathfileval - var resobarray = [] - for (let i in resdata.data) { - var resob1 = {} - resob1.data = resdata.data[i].res25swarmlabname - resob1.user25user = resdata.data[i].res25user - resob1.res25creator = resdata.data[i].res25creator - resob1.res25fileforce = resdata.data[i].res25fileforce - resobarray.push(resob1) - } - resob.data = resobarray - var indexfind = global.pipelines.findIndex(x => x.pathlogfile==pathfileval); - indexfind === -1 ? global.pipelines.push(resob) : console.log("object already exists "+pathfileval) - })() - } - -} - -// *************************************************** -// rest get -// *************************************************** - -app.get('/run', [ - //check('access_token').isLength({ min: 40 }), - //check('llo').isBase64() - ], -cors(corsOptions), (req, res, next) => { - - (async() => { - -var mongourl = "mongodb://playgrounduser:efvvnuioervefSDFSGYGHRDFVsdfergvssppiiedifhwincvinviw_dbfjbsifbsdkjfswuunscfudfgbbfvibqefwrvnine@ondemand_playground_mongo1:27017,ondemand_playground_mongo2:27017,ondemand_playground_mongo3:27017,ondemand_playground_mongo4:27017,ondemand_playground_mongo5:27017,ondemand_playground_mongo6:27017,ondemand_playground_mongo7:27017/fluent?replicaSet=rs1" -const OPTS = { - useNewUrlParser: true, - useUnifiedTopology: true -}; -MongoClient.connect(mongourl, OPTS, function(err, client){ - if(err){ - console.log(err); - } else { - const db = client.db('fluent'); - //db.collection('log', onCollection); - console.log(JSON.stringify('mongo connected')) - var stream = db.collection('logs').find({}, { - tailable: true, - awaitdata: true - /* other options */ -}).stream(); - -stream.on('data', function (doc) { - console.log(JSON.stringify(doc)) - //socket.write(JSON.stringify({'action': 'log','param': doc.log})); -}); - } -}); - var RES = new Object(); - RES.code = req.query["filter"] - RES.token = req.query["filter"] - var isvalid = await checkToken(RES.token); - if(isvalid.action == 'ok'){ - console.log("Authserver ok " + RES.token); - }else{ - console.log("Authserver no " + RES.token); - } - RES.error = false - RES.error_msg = "ok" - res.json(RES) - })() - -}); - -// *************************************************** -// rest post -// *************************************************** - -app.post('/run', [ - //check('access_token').isLength({ min: 40 }), - //check('llo').isBase64() - ], -cors(corsOptions), (req, res, next) => { - - - (async() => { - - //console.log(JSON.stringify(req.headers)); - //console.log(JSON.stringify(req.body)); - //console.log("mongo "+JSON.stringify(req.body)); - //console.log("LOG "+JSON.stringify(req.body[0].message)); - //console.log("PATH "+JSON.stringify(req.body[0].tailed_path)); - for (var i = 0; i < req.body.length; i++){ - //var getpath = await onlogfile(req.body[i].tailed_path) - - var path = req.body[i].tailed_path - - console.log('File', path, 'has been added'); - var pathfileval = pathmodule.basename(path); - var arrfile = pathfileval.toString().split("-"); - var pathfile = arrfile[0]; - var indexfind1 = global.pipelines.findIndex(x => x.pathlogfile==pathfileval); - console.log('file11111111111111111111111111111111 ' + JSON.stringify(pathfileval)) - if (indexfind1 === -1 ){ - (async() => { - console.log('file2222222222222222222222222222222222222 ' + JSON.stringify(pathfileval)) - var token = "d2539e5a7ae1f9f1b0eb2b8f22ca467a86d28407"; // desto - var resdata = await getpipelines(token,pathfile) - //resdata.data.pathlogfile = 'test' - var resob = {} - resob.pathlogfile = pathfileval - var resobarray = [] - for (let i in resdata.data) { - var resob1 = {} - resob1.data = resdata.data[i].res25swarmlabname - resob1.user25user = resdata.data[i].res25user - resob1.res25creator = resdata.data[i].res25creator - resob1.res25fileforce = resdata.data[i].res25fileforce - resobarray.push(resob1) - } - resob.data = resobarray - //var indexfind = global.pipelines.findIndex(x => x.res25swarmlabname==resdata.data[0].res25swarmlabname); - var indexfind = global.pipelines.findIndex(x => x.pathlogfile==pathfileval); - - //indexfind === -1 ? global.pipelines.push({resob}) : console.log("object already exists") - indexfind === -1 ? global.pipelines.push(resob) : console.log("object already exists "+pathfileval) - - //console.log('info', JSON.stringify(resdata)); - //console.log('info------------- ', JSON.stringify(global.pipelines)); - })() - } - // - var obj = req.body[i]; - - //var indexfind = global.pipelines.findIndex(x => x.res25swarmlabname==resdata.data.res25swarmlabname); - //indexfind === -1 ? global.pipelines.push(resob) : console.log("object already exists") - var now = new Date(); - - var reslog = new Object(); - reslog.log = obj - - reslog.date = convertDateToUTC(now) - console.log(reslog); - var pathfileval = pathmodule.basename(reslog.log.tailed_path); - var indexfind = global.pipelines.findIndex(x => x.pathlogfile==pathfileval); - //indexfind === -1 ? sendlog(reslog,pathfileval) : console.log("object already exists") - indexfind === -1 ? console.log("object not found") : sendlog(reslog,pathfileval) - console.log("IOT "+JSON.stringify(reslog.log.tailed_path)); - console.log("IOTindexfind "+JSON.stringify(indexfind)); - console.log("IOTuser "+JSON.stringify(global.pipelines)); - // io.in("iot").emit("message", reslog); - // io.emit("logdata", reslog); - } - })() - - //io.in("iot").emit("message", RES); - - console.error('socket POST from client'); - var RES = new Object(); - RES.error = false - RES.error_msg = "ok" - RES.msg = req.body[0].messsage - - res.json(RES) -}); - -// *************************************************** -// socket -// *************************************************** - -io.origins('*:*') // for latest version - - -function onCollection(err, collection) { - let options = { tailable: true, - awaitdata: true, - numberOfRetries: -1, - tailableRetryInterval: 500 - }; - var cursor = collection.find({},options).stream(); - var itemsProcessed = 0; - - var reslog = new Object(); - var now = new Date(); - cursor.on('data', function (data) { - - var pathfileval = pathmodule.basename(data.tailed_path); - var arrfile = pathfileval.toString().split("-"); - var pathfile = arrfile[0]; - - var indexupdate = true - //var indexfind1 = global.pipelines.findIndex(x => x.pathlogfile==pathfileval); - pubClient.hgetall(pathfileval, function(err, object) { - if(object){ - indexupdate = false - }else{ - console.log('redis '+JSON.stringify(object)); - } - }); - var resob = {} - if (indexupdate ){ - (async() => { - console.log('file2222222222222222222222222222222222222 ' + JSON.stringify(pathfileval)) - var token = "d2539e5a7ae1f9f1b0eb2b8f22ca467a86d28407"; // desto - var resdata = await getpipelines(token,pathfile) - console.log('file2222222222222222222222222222222222222------------------------------ ' + JSON.stringify(resdata.data)) - resob.pathlogfile = pathfileval - var resobarray = [] - //for (let i in resdata.data) { - var resob1 = {} - var i = 0 - resob1.data = resdata.data[i].res25swarmlabname - resob1.user25user = resdata.data[i].res25user - resob1.res25creator = resdata.data[i].res25creator - resob1.res25fileforce = resdata.data[i].res25fileforce - resob1.tailed_path = pathfileval - //resobarray.push(resob1) - var resob1string = JSON.stringify(resob1); - pubClient.hmset(pathfileval,resob1string) - pubClient.hgetall(pathfileval, function(err, object) { - console.log('redis>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> '+JSON.stringify(object)); - }); - //} - resob.data = resobarray - //var indexfind = global.pipelines.findIndex(x => x.res25swarmlabname==resdata.data[0].res25swarmlabname); - //var indexfind = global.pipelines.findIndex(x => x.pathlogfile==pathfileval); - - //indexfind === -1 ? global.pipelines.push({resob}) : console.log("object already exists") - //indexfind === -1 ? global.pipelines.push(resob) : console.log("object already exists "+pathfileval) - - reslog.log = data - reslog.date = convertDateToUTC(now) - console.log('data ' + JSON.stringify(reslog)); - //var usertmp = global.pipelines.find(x => x.pathlogfile==pathfileval); - //var user = usertmp.data[0].user25user; - var user = "anagnostopoulos@uniwa.gr" - console.log('datauser ' + JSON.stringify(user)); - io.in(user).emit("logdata", reslog); - itemsProcessed++; - - })() - }else{ - - reslog.log = data - reslog.date = convertDateToUTC(now) - console.log('dataelse ' + JSON.stringify(reslog)); - //var usertmp = global.pipelines.find(x => x.pathlogfile==pathfileval); - //var user = usertmp.data[0].user25user; - ///console.log('datauser ' + JSON.stringify(user)); - var user = "anagnostopoulos@uniwa.gr" - io.in(user).emit("logdata", reslog); - itemsProcessed++; - } - }); - - - setInterval(function () { - console.log('itemsProcessed', itemsProcessed); - }, 1000); -} - - - var mongourl = "mongodb://playgrounduser:efvvnuioervefSDFSGYGHRDFVsdfergvssppiiedifhwincvinviw_dbfjbsifbsdkjfswuunscfudfgbbfvibqefwrvnine@ondemand_playground_mongo1:27017,ondemand_playground_mongo2:27017,ondemand_playground_mongo3:27017,ondemand_playground_mongo4:27017,ondemand_playground_mongo5:27017,ondemand_playground_mongo6:27017,ondemand_playground_mongo7:27017/fluent?replicaSet=rs1" - const OPTS = { - useNewUrlParser: true, - useUnifiedTopology: true - }; - //var mongolab_uri = "mongodb://:@:,:/?replicaSet="; - var mongooptions = { - autoReconnect: true, - keepAlive: 1, - connectTimeoutMS: 30000, - socketTimeoutMS: 0 - } - MongoClient.connect(mongourl, OPTS, function(err, client){ - if(err){ - console.log(err); - } else { - const db = client.db('fluent'); - db.collection('logs', onCollection); - } - }); - -io.on('connection', s => { - console.error('socket connection'); - - // ------------------------------ - // --- set - // ------------------------------ - var usersession = new Object(); - usersession.SOCKET = {}; - usersession.SOCKET.error = {}; - console.error('socket ...'); - s.auth = false; - - // ------------------------------ - // --- authenticate - // ------------------------------ - s.on('authenticate', function(data){ - const token = data - console.log('invalid 1 ' + token); - (async() => { - var isvalid = await checkToken(token); - if(isvalid.action == 'ok'){ - console.log("Authserver ok ", s.id + ' - ' + token); - usersession.SOCKET.user = isvalid.user - usersession.SOCKET.scope = isvalid.scope // space delimeter - usersession.SOCKET.token = isvalid.token - s.auth = true; - }else{ - console.log("Authserver no ", s.id + ' - ' + token); - s.auth = false; - } - })() - }); - - setTimeout(function(){ - if (!s.auth) { - console.log("Disconnecting timeout socket ", s.id); - s.disconnect('unauthorized'); - }else{ - var room = usersession.SOCKET.user - //s.on("subscribe", function (room) { - // console.log("joining room", room); - s.join(room); - // }); - } - }, 30000); - - - - - var id = s.id - s.on('log', obj => { - console.error('from client '+ s.id + ' obj ' + obj); - }); - -}); - -http.listen(3000, () => console.error('listening on http://localhost:3000/')); -console.error('socket.io example'); diff --git a/swarmlab-app/src/run/app.backup2.js b/swarmlab-app/src/run/app.backup2.js deleted file mode 100755 index 875ed23..0000000 --- a/swarmlab-app/src/run/app.backup2.js +++ /dev/null @@ -1,578 +0,0 @@ -"use strict" - -var pathmodule = require('path'); -var app = require('express')(); -var http = require('http').Server(app); -var https = require('https'); -var io = require('socket.io')(http); - -//import { createAdapter } from 'socket.io-redis'; -const createAdapter = require('socket.io-redis'); -//import { RedisClient } from 'redis'; -const RedisClient = require("redis"); -const pubClient = RedisClient.createClient({ - host: 'redisserver', - port: 6379, - }); - -//const pubClient = new RedisClient({ host: 'localhost', port: 6379 }); -const subClient = pubClient.duplicate(); - -io.adapter(createAdapter({ pubClient, subClient })); - -pubClient.on("connect", function() { - console.log("You are now connected"); -}); - -const MongoClient = require('mongodb').MongoClient; - -//var chokidar = require("chokidar"); -//var logpath = "/var/lab/playground-serverlogs"; -//var watcher = chokidar.watch(logpath, { -// ignored: /[\/\\]\./, -// awaitWriteFinish: true, -// persistent: true -// }); - - - var async = require("async"); -const { check, validationResult } = require('express-validator'); -const urlExistSync = require("url-exist-sync"); - -var express = require('express'); -app.use(express.json()); - -const axios = require('axios'); -axios.defaults.timeout = 30000 - - const helmet = require('helmet'); -app.use(helmet()); - -const cors = require('cors') -const whitelist = [ - 'http://localhost:8080', - 'http://localhost:3080', - 'http://localhost:3081', - 'http://localhost:3082' - ] -const corsOptions = { - credentials: true, - methods: ['GET', 'PUT', 'POST', 'DELETE', 'OPTIONS'], - optionsSuccessStatus: 200, // some legacy browsers (IE11, various SmartTVs) choke on 204 - allowedHeaders: [ - 'Content-Type', - 'Authorization', - 'X-Requested-With', - 'device-remember-token', - 'Access-Control-Allow-Origin', - 'Access-Control-Allow-Headers', - 'Origin', - 'Accept' - ], - origin: function(origin, callback) { - if (whitelist.indexOf(origin) !== -1) { - callback(null, true) - } else { - callback(null, true) - //callback(new Error('Not allowed by CORS')) - } - } -} - - -// *************************************************** -// checktoken -// *************************************************** - -async function checkToken(token) { - const agent = new https.Agent({ - rejectUnauthorized: false, - }); - const instance = axios.create({ - baseURL: 'https://api.swarmlab.io', - withCredentials: true, - rejectUnauthorized: false, - crossdomain: true, - httpsAgent: agent, - headers: { - 'Accept': 'application/json', - 'Content-Type': 'multipart/form-data', - 'Authorization': 'Bearer '+token - } - }) - try { - var pipelines = { - "source":'ssologin' - } - var params = { - pipeline: pipelines - } - - var options = { - headers: { 'content-type': 'application/x-www-form-urlencoded',Authorization: `Bearer ${token}` }, - }; - - instance.defaults.timeout = 30000; - const res = await instance.post('/istokenvalidsso',params,options); - if(res.status == 200){ - //console.log("check " +JSON.stringify(res.data)) - return res.data - }else{ - console.log("noerror: " + res) - return res.status - - } - } - catch (err) { - console.error("error: "+err); - var error = new Object(); - error.action = '401' - return error - } -} - - -function convertDateToUTC(date) { -return new Date(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds(),date.getUTCMilliseconds()); -} - -// *************************************************** -// get pipelines -// *************************************************** - -async function getpipelines(token,pipelinename) { - const agent = new https.Agent({ - rejectUnauthorized: false, - }); - const instance = axios.create({ - baseURL: 'https://api.swarmlab.io', - withCredentials: true, - rejectUnauthorized: false, - crossdomain: true, - httpsAgent: agent, - headers: { - 'Accept': 'application/json', - 'Content-Type': 'multipart/form-data', - 'Authorization': 'Bearer '+token - } - }) - /* - var params = { - playbook: value - } - var options = { - params: params, - headers: { 'content-type': 'application/x-www-form-urlencoded',Authorization: `Bearer ${token}` }, - }; - - const playbook = await api.GET('playbookCode',options); - return playbook -*/ - try { - - var pipelines = { - "querytokenFilter":'uWr4FKRqrmpCRkJ9WLuI0DNuDWOGTkfcSzyZkJirZvJwwFDffLWrraqzzSPLeuQqL3TF9', - "filter":pipelinename - } - //var params = { - // pipeline: pipelines - // } - var params = { - querytokenFilter:'uWr4FKRqrmpCRkJ9WLuI0DNuDWOGTkfcSzyZkJirZvJwwFDffLWrraqzzSPLeuQqL3TF9', - filter:pipelinename - } - - var options = { - params: params, - headers: { 'content-type': 'application/x-www-form-urlencoded',Authorization: `Bearer ${token}` }, - }; - - //https://api.swarmlab.io/gettutorlabrooms?sort=pipelinename%7Casc&page=1&per_page=5&filter=&type=scripts&tutor=yes - instance.defaults.timeout = 30000; - //const res = await instance.get('/getplaygrounds',params,options); - const res = await instance.get('/getplaygrounds',options); - if(res.status == 200){ - return res.data - }else{ - console.log("noerror: " + res) - return res.status - - } - } - catch (err) { - console.error("error: "+err); - var error = new Object(); - error.action = '401' - return error - } -} - - -global.online='ob'; -global.pipelines=[]; - - function sendlog(reslog,pathfileval){ - var usertmp = global.pipelines.find(x => x.pathlogfile==pathfileval); - //for (var key in usertmp.data){ - var user = usertmp.data[0].user25user; - // if(usertmp.data){ - console.log('-----------------------' + JSON.stringify(usertmp)); - io.in(user).emit("logdata", reslog); - // } - //} - } - function onlogfile(path){ - - console.log('File', path, 'has been added'); - var pathfileval = pathmodule.basename(path); - var arrfile = pathfileval.toString().split("-"); - var pathfile = arrfile[0]; - var indexfind1 = global.pipelines.findIndex(x => x.pathlogfile==pathfileval); - console.log('file11111111111111111111111111111111 ' + JSON.stringify(pathfileval)) - if (indexfind1 === -1 ){ - (async() => { - console.log('file2222222222222222222222222222222222222 ' + JSON.stringify(pathfileval)) - var token = "d2539e5a7ae1f9f1b0eb2b8f22ca467a86d28407"; // desto - var resdata = await getpipelines(token,pathfile) - //resdata.data.pathlogfile = 'test' - var resob = {} - resob.pathlogfile = pathfileval - var resobarray = [] - for (let i in resdata.data) { - var resob1 = {} - resob1.data = resdata.data[i].res25swarmlabname - resob1.user25user = resdata.data[i].res25user - resob1.res25creator = resdata.data[i].res25creator - resob1.res25fileforce = resdata.data[i].res25fileforce - resobarray.push(resob1) - } - resob.data = resobarray - var indexfind = global.pipelines.findIndex(x => x.pathlogfile==pathfileval); - indexfind === -1 ? global.pipelines.push(resob) : console.log("object already exists "+pathfileval) - })() - } - -} - -// *************************************************** -// rest get -// *************************************************** - -app.get('/run', [ - //check('access_token').isLength({ min: 40 }), - //check('llo').isBase64() - ], -cors(corsOptions), (req, res, next) => { - - (async() => { - -var mongourl = "mongodb://playgrounduser:efvvnuioervefSDFSGYGHRDFVsdfergvssppiiedifhwincvinviw_dbfjbsifbsdkjfswuunscfudfgbbfvibqefwrvnine@ondemand_playground_mongo1:27017,ondemand_playground_mongo2:27017,ondemand_playground_mongo3:27017,ondemand_playground_mongo4:27017,ondemand_playground_mongo5:27017,ondemand_playground_mongo6:27017,ondemand_playground_mongo7:27017/fluent?replicaSet=rs1" -const OPTS = { - useNewUrlParser: true, - useUnifiedTopology: true -}; -MongoClient.connect(mongourl, OPTS, function(err, client){ - if(err){ - console.log(err); - } else { - const db = client.db('fluent'); - //db.collection('log', onCollection); - console.log(JSON.stringify('mongo connected')) - var stream = db.collection('logs').find({}, { - tailable: true, - awaitdata: true - /* other options */ -}).stream(); - -stream.on('data', function (doc) { - console.log(JSON.stringify(doc)) - //socket.write(JSON.stringify({'action': 'log','param': doc.log})); -}); - } -}); - var RES = new Object(); - RES.code = req.query["filter"] - RES.token = req.query["filter"] - var isvalid = await checkToken(RES.token); - if(isvalid.action == 'ok'){ - console.log("Authserver ok " + RES.token); - }else{ - console.log("Authserver no " + RES.token); - } - RES.error = false - RES.error_msg = "ok" - res.json(RES) - })() - -}); - -// *************************************************** -// rest post -// *************************************************** - -app.post('/run', [ - //check('access_token').isLength({ min: 40 }), - //check('llo').isBase64() - ], -cors(corsOptions), (req, res, next) => { - - - (async() => { - - //console.log(JSON.stringify(req.headers)); - //console.log(JSON.stringify(req.body)); - //console.log("mongo "+JSON.stringify(req.body)); - //console.log("LOG "+JSON.stringify(req.body[0].message)); - //console.log("PATH "+JSON.stringify(req.body[0].tailed_path)); - for (var i = 0; i < req.body.length; i++){ - //var getpath = await onlogfile(req.body[i].tailed_path) - - var path = req.body[i].tailed_path - - console.log('File', path, 'has been added'); - var pathfileval = pathmodule.basename(path); - var arrfile = pathfileval.toString().split("-"); - var pathfile = arrfile[0]; - var indexfind1 = global.pipelines.findIndex(x => x.pathlogfile==pathfileval); - console.log('file11111111111111111111111111111111 ' + JSON.stringify(pathfileval)) - if (indexfind1 === -1 ){ - (async() => { - console.log('file2222222222222222222222222222222222222 ' + JSON.stringify(pathfileval)) - var token = "d2539e5a7ae1f9f1b0eb2b8f22ca467a86d28407"; // desto - var resdata = await getpipelines(token,pathfile) - //resdata.data.pathlogfile = 'test' - var resob = {} - resob.pathlogfile = pathfileval - var resobarray = [] - for (let i in resdata.data) { - var resob1 = {} - resob1.data = resdata.data[i].res25swarmlabname - resob1.user25user = resdata.data[i].res25user - resob1.res25creator = resdata.data[i].res25creator - resob1.res25fileforce = resdata.data[i].res25fileforce - resobarray.push(resob1) - } - resob.data = resobarray - //var indexfind = global.pipelines.findIndex(x => x.res25swarmlabname==resdata.data[0].res25swarmlabname); - var indexfind = global.pipelines.findIndex(x => x.pathlogfile==pathfileval); - - //indexfind === -1 ? global.pipelines.push({resob}) : console.log("object already exists") - indexfind === -1 ? global.pipelines.push(resob) : console.log("object already exists "+pathfileval) - - //console.log('info', JSON.stringify(resdata)); - //console.log('info------------- ', JSON.stringify(global.pipelines)); - })() - } - // - var obj = req.body[i]; - - //var indexfind = global.pipelines.findIndex(x => x.res25swarmlabname==resdata.data.res25swarmlabname); - //indexfind === -1 ? global.pipelines.push(resob) : console.log("object already exists") - var now = new Date(); - - var reslog = new Object(); - reslog.log = obj - - reslog.date = convertDateToUTC(now) - console.log(reslog); - var pathfileval = pathmodule.basename(reslog.log.tailed_path); - var indexfind = global.pipelines.findIndex(x => x.pathlogfile==pathfileval); - //indexfind === -1 ? sendlog(reslog,pathfileval) : console.log("object already exists") - indexfind === -1 ? console.log("object not found") : sendlog(reslog,pathfileval) - console.log("IOT "+JSON.stringify(reslog.log.tailed_path)); - console.log("IOTindexfind "+JSON.stringify(indexfind)); - console.log("IOTuser "+JSON.stringify(global.pipelines)); - // io.in("iot").emit("message", reslog); - // io.emit("logdata", reslog); - } - })() - - //io.in("iot").emit("message", RES); - - console.error('socket POST from client'); - var RES = new Object(); - RES.error = false - RES.error_msg = "ok" - RES.msg = req.body[0].messsage - - res.json(RES) -}); - -// *************************************************** -// socket -// *************************************************** - -io.origins('*:*') // for latest version - - -function onCollection(err, collection) { - let options = { tailable: true, - awaitdata: true, - numberOfRetries: -1, - tailableRetryInterval: 500 - }; - var cursor = collection.find({},options).stream(); - var itemsProcessed = 0; - - var reslog = new Object(); - var now = new Date(); - cursor.on('data', function (data) { - - var pathfileval = pathmodule.basename(data.tailed_path); - var arrfile = pathfileval.toString().split("-"); - var pathfile = arrfile[0]; - - var indexupdate = true - var resob = {} - //var indexfind1 = global.pipelines.findIndex(x => x.pathlogfile==pathfileval); - pubClient.hgetall(pathfileval, function(err, object) { - if(object){ - indexupdate = false - }else{ - console.log('redis '+JSON.stringify(object)); - } - }); - if (indexupdate ){ - (async() => { - var token = "d2539e5a7ae1f9f1b0eb2b8f22ca467a86d28407"; // desto - var resdata = await getpipelines(token,pathfile) - console.log('------------------------------ ' + JSON.stringify(resdata.data)) - resob.pathlogfile = pathfileval - var resobarray = [] - //for (let i in resdata.data) { - var resob1 = {} - var i = 0 - resob1.data = resdata.data[i].res25swarmlabname - resob1.user25user = resdata.data[i].res25user - resob1.res25creator = resdata.data[i].res25creator - resob1.res25fileforce = resdata.data[i].res25fileforce - resob1.tailed_path = pathfileval - resobarray.push(resob1) - var resob1string = JSON.stringify(resob1); - console.log('+++++++++++++++++' + resob1string + '<<<<<<<<<<<<<<<<<<<<<<' + pathfileval); - //pubClient.hmset(pathfileval,resob1string) - pubClient.hmset(pathfileval, resob1string, function(err, res) { - - }); - await pubClient.hgetall(pathfileval, function(err, object) { - console.log('>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> '+JSON.stringify(object)); - }); - //} - resob.data = resobarray - //var indexfind = global.pipelines.findIndex(x => x.res25swarmlabname==resdata.data[0].res25swarmlabname); - //var indexfind = global.pipelines.findIndex(x => x.pathlogfile==pathfileval); - - //indexfind === -1 ? global.pipelines.push({resob}) : console.log("object already exists") - //indexfind === -1 ? global.pipelines.push(resob) : console.log("object already exists "+pathfileval) - - reslog.log = data - reslog.date = convertDateToUTC(now) - //console.log('data ' + JSON.stringify(reslog)); - //var usertmp = global.pipelines.find(x => x.pathlogfile==pathfileval); - //var user = usertmp.data[0].user25user; - var user = "anagnostopoulos@uniwa.gr" - console.log('datauser ' + JSON.stringify(user)); - io.in(user).emit("logdata", reslog); - itemsProcessed++; - - })() - }else{ - - reslog.log = data - reslog.date = convertDateToUTC(now) - //console.log('dataelse ' + JSON.stringify(reslog)); - //var usertmp = global.pipelines.find(x => x.pathlogfile==pathfileval); - //var user = usertmp.data[0].user25user; - ///console.log('datauser ' + JSON.stringify(user)); - var user = "anagnostopoulos@uniwa.gr" - io.in(user).emit("logdata", reslog); - itemsProcessed++; - } - }); - - - setInterval(function () { - console.log('itemsProcessed', itemsProcessed); - }, 1000); -} - - - var mongourl = "mongodb://playgrounduser:efvvnuioervefSDFSGYGHRDFVsdfergvssppiiedifhwincvinviw_dbfjbsifbsdkjfswuunscfudfgbbfvibqefwrvnine@ondemand_playground_mongo1:27017,ondemand_playground_mongo2:27017,ondemand_playground_mongo3:27017,ondemand_playground_mongo4:27017,ondemand_playground_mongo5:27017,ondemand_playground_mongo6:27017,ondemand_playground_mongo7:27017/fluent?replicaSet=rs1" - const OPTS = { - useNewUrlParser: true, - useUnifiedTopology: true - }; - //var mongolab_uri = "mongodb://:@:,:/?replicaSet="; - var mongooptions = { - autoReconnect: true, - keepAlive: 1, - connectTimeoutMS: 30000, - socketTimeoutMS: 0 - } - MongoClient.connect(mongourl, OPTS, function(err, client){ - if(err){ - console.log(err); - } else { - const db = client.db('fluent'); - db.collection('logs', onCollection); - } - }); - -io.on('connection', s => { - console.error('socket connection'); - - // ------------------------------ - // --- set - // ------------------------------ - var usersession = new Object(); - usersession.SOCKET = {}; - usersession.SOCKET.error = {}; - console.error('socket ...'); - s.auth = false; - - // ------------------------------ - // --- authenticate - // ------------------------------ - s.on('authenticate', function(data){ - const token = data - console.log('invalid 1 ' + token); - (async() => { - var isvalid = await checkToken(token); - if(isvalid.action == 'ok'){ - console.log("Authserver ok ", s.id + ' - ' + token); - usersession.SOCKET.user = isvalid.user - usersession.SOCKET.scope = isvalid.scope // space delimeter - usersession.SOCKET.token = isvalid.token - s.auth = true; - }else{ - console.log("Authserver no ", s.id + ' - ' + token); - s.auth = false; - } - })() - }); - - setTimeout(function(){ - if (!s.auth) { - console.log("Disconnecting timeout socket ", s.id); - s.disconnect('unauthorized'); - }else{ - var room = usersession.SOCKET.user - //s.on("subscribe", function (room) { - // console.log("joining room", room); - s.join(room); - // }); - } - }, 30000); - - - - - var id = s.id - s.on('log', obj => { - console.error('from client '+ s.id + ' obj ' + obj); - }); - -}); - -http.listen(3000, () => console.error('listening on http://localhost:3000/')); -console.error('socket.io example'); diff --git a/swarmlab-app/src/run/app.backup3.js b/swarmlab-app/src/run/app.backup3.js deleted file mode 100755 index 54ab921..0000000 --- a/swarmlab-app/src/run/app.backup3.js +++ /dev/null @@ -1,48 +0,0 @@ -"use strict" - -var pathmodule = require('path'); -var app = require('express')(); -var http = require('http').Server(app); -var https = require('https'); -var io = require('socket.io')(http); - -//import { createAdapter } from 'socket.io-redis'; -const createAdapter = require('socket.io-redis'); -//import { RedisClient } from 'redis'; -const RedisClient = require("redis"); -const pubClient = RedisClient.createClient({ - host: 'redisserver', - port: 6379, - }); - -//const pubClient = new RedisClient({ host: 'localhost', port: 6379 }); -const subClient = pubClient.duplicate(); - -io.adapter(createAdapter({ pubClient, subClient })); - -pubClient.on("connect", function() { - console.log("You are now connected"); -}); - - setInterval(function () { -var resob1 = {} -resob1.data = '1' -resob1.user25user = 'user' - -var resob1string = JSON.stringify(resob1); - console.log('-------------------- '+JSON.stringify(resob1string)); - -var resob1string = 'test'; -pubClient.hmset('ekjgpiegwerpowfmfsdfsdgsk', resob1string, function(err, res) { - console.log('>>>>>>>>>eroor>>>>>>>>>>>>>>>>>>> '+JSON.stringify(err)); - console.log('>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> '+JSON.stringify(res)); -}); - -pubClient.hgetall('ekjgpiegwerpowfmfsdfsdgsk', function(err, object) { - console.log('<<<<<<<<< console.error('listening on http://localhost:3000/')); -console.error('socket.io example'); diff --git a/swarmlab-app/src/run/app.backup4.js b/swarmlab-app/src/run/app.backup4.js deleted file mode 100755 index 46e9ee1..0000000 --- a/swarmlab-app/src/run/app.backup4.js +++ /dev/null @@ -1,563 +0,0 @@ -"use strict" - -var pathmodule = require('path'); -var app = require('express')(); -var http = require('http').Server(app); -var https = require('https'); -var io = require('socket.io')(http); - -//import { createAdapter } from 'socket.io-redis'; -const createAdapter = require('socket.io-redis'); -//import { RedisClient } from 'redis'; -const RedisClient = require("redis"); -const pubClient = RedisClient.createClient({ - host: 'redisserver', - port: 6379, - }); - -//const pubClient = new RedisClient({ host: 'localhost', port: 6379 }); -const subClient = pubClient.duplicate(); - -io.adapter(createAdapter({ pubClient, subClient })); - -pubClient.on("connect", function() { - console.log("You are now connected"); -}); - -const MongoClient = require('mongodb').MongoClient; - - var async = require("async"); -const { check, validationResult } = require('express-validator'); -const urlExistSync = require("url-exist-sync"); - -var express = require('express'); -app.use(express.json()); - -const axios = require('axios'); -axios.defaults.timeout = 30000 - - const helmet = require('helmet'); -app.use(helmet()); - -const cors = require('cors') -const whitelist = [ - 'http://localhost:8080', - 'http://localhost:3080', - 'http://localhost:3081', - 'http://localhost:3082' - ] -const corsOptions = { - credentials: true, - methods: ['GET', 'PUT', 'POST', 'DELETE', 'OPTIONS'], - optionsSuccessStatus: 200, // some legacy browsers (IE11, various SmartTVs) choke on 204 - allowedHeaders: [ - 'Content-Type', - 'Authorization', - 'X-Requested-With', - 'device-remember-token', - 'Access-Control-Allow-Origin', - 'Access-Control-Allow-Headers', - 'Origin', - 'Accept' - ], - origin: function(origin, callback) { - if (whitelist.indexOf(origin) !== -1) { - callback(null, true) - } else { - callback(null, true) - //callback(new Error('Not allowed by CORS')) - } - } -} - - -// *************************************************** -// checktoken -// *************************************************** - -async function checkToken(token) { - const agent = new https.Agent({ - rejectUnauthorized: false, - }); - const instance = axios.create({ - baseURL: 'https://api.swarmlab.io', - withCredentials: true, - rejectUnauthorized: false, - crossdomain: true, - httpsAgent: agent, - headers: { - 'Accept': 'application/json', - 'Content-Type': 'multipart/form-data', - 'Authorization': 'Bearer '+token - } - }) - try { - var pipelines = { - "source":'ssologin' - } - var params = { - pipeline: pipelines - } - - var options = { - headers: { 'content-type': 'application/x-www-form-urlencoded',Authorization: `Bearer ${token}` }, - }; - - instance.defaults.timeout = 30000; - const res = await instance.post('/istokenvalidsso',params,options); - if(res.status == 200){ - //console.log("check " +JSON.stringify(res.data)) - return res.data - }else{ - console.log("noerror: " + res) - return res.status - - } - } - catch (err) { - console.error("error: "+err); - var error = new Object(); - error.action = '401' - return error - } -} - - -function convertDateToUTC(date) { -return new Date(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds(),date.getUTCMilliseconds()); -} - -// *************************************************** -// get pipelines -// *************************************************** - -async function getpipelines(token,pipelinename) { - const agent = new https.Agent({ - rejectUnauthorized: false, - }); - const instance = axios.create({ - baseURL: 'https://api.swarmlab.io', - withCredentials: true, - rejectUnauthorized: false, - crossdomain: true, - httpsAgent: agent, - headers: { - 'Accept': 'application/json', - 'Content-Type': 'multipart/form-data', - 'Authorization': 'Bearer '+token - } - }) - /* - var params = { - playbook: value - } - var options = { - params: params, - headers: { 'content-type': 'application/x-www-form-urlencoded',Authorization: `Bearer ${token}` }, - }; - - const playbook = await api.GET('playbookCode',options); - return playbook -*/ - try { - - var pipelines = { - "querytokenFilter":'uWr4FKRqrmpCRkJ9WLuI0DNuDWOGTkfcSzyZkJirZvJwwFDffLWrraqzzSPLeuQqL3TF9', - "filter":pipelinename - } - //var params = { - // pipeline: pipelines - // } - var params = { - querytokenFilter:'uWr4FKRqrmpCRkJ9WLuI0DNuDWOGTkfcSzyZkJirZvJwwFDffLWrraqzzSPLeuQqL3TF9', - filter:pipelinename - } - - var options = { - params: params, - headers: { 'content-type': 'application/x-www-form-urlencoded',Authorization: `Bearer ${token}` }, - }; - - //https://api.swarmlab.io/gettutorlabrooms?sort=pipelinename%7Casc&page=1&per_page=5&filter=&type=scripts&tutor=yes - instance.defaults.timeout = 30000; - //const res = await instance.get('/getplaygrounds',params,options); - const res = await instance.get('/getplaygrounds',options); - if(res.status == 200){ - return res.data - }else{ - console.log("noerror: " + res) - return res.status - - } - } - catch (err) { - console.error("error: "+err); - var error = new Object(); - error.action = '401' - return error - } -} - - -global.online='ob'; -global.pipelines=[]; - - function sendlog(reslog,pathfileval){ - var usertmp = global.pipelines.find(x => x.pathlogfile==pathfileval); - //for (var key in usertmp.data){ - var user = usertmp.data[0].user25user; - // if(usertmp.data){ - console.log('-----------------------' + JSON.stringify(usertmp)); - io.in(user).emit("logdata", reslog); - // } - //} - } - function onlogfile(path){ - - console.log('File', path, 'has been added'); - var pathfileval = pathmodule.basename(path); - var arrfile = pathfileval.toString().split("-"); - var pathfile = arrfile[0]; - var indexfind1 = global.pipelines.findIndex(x => x.pathlogfile==pathfileval); - console.log('file11111111111111111111111111111111 ' + JSON.stringify(pathfileval)) - if (indexfind1 === -1 ){ - (async() => { - console.log('file2222222222222222222222222222222222222 ' + JSON.stringify(pathfileval)) - var token = "d2539e5a7ae1f9f1b0eb2b8f22ca467a86d28407"; // desto - var resdata = await getpipelines(token,pathfile) - //resdata.data.pathlogfile = 'test' - var resob = {} - resob.pathlogfile = pathfileval - var resobarray = [] - for (let i in resdata.data) { - var resob1 = {} - resob1.data = resdata.data[i].res25swarmlabname - resob1.user25user = resdata.data[i].res25user - resob1.res25creator = resdata.data[i].res25creator - resob1.res25fileforce = resdata.data[i].res25fileforce - resobarray.push(resob1) - } - resob.data = resobarray - var indexfind = global.pipelines.findIndex(x => x.pathlogfile==pathfileval); - indexfind === -1 ? global.pipelines.push(resob) : console.log("object already exists "+pathfileval) - })() - } - -} - -// *************************************************** -// rest get -// *************************************************** - -app.get('/run', [ - //check('access_token').isLength({ min: 40 }), - //check('llo').isBase64() - ], -cors(corsOptions), (req, res, next) => { - - (async() => { - -var mongourl = "mongodb://playgrounduser:efvvnuioervefSDFSGYGHRDFVsdfergvssppiiedifhwincvinviw_dbfjbsifbsdkjfswuunscfudfgbbfvibqefwrvnine@ondemand_playground_mongo1:27017,ondemand_playground_mongo2:27017,ondemand_playground_mongo3:27017,ondemand_playground_mongo4:27017,ondemand_playground_mongo5:27017,ondemand_playground_mongo6:27017,ondemand_playground_mongo7:27017/fluent?replicaSet=rs1" -const OPTS = { - useNewUrlParser: true, - useUnifiedTopology: true -}; -MongoClient.connect(mongourl, OPTS, function(err, client){ - if(err){ - console.log(err); - } else { - const db = client.db('fluent'); - //db.collection('log', onCollection); - console.log(JSON.stringify('mongo connected')) - var stream = db.collection('logs').find({}, { - tailable: true, - awaitdata: true - /* other options */ -}).stream(); - -stream.on('data', function (doc) { - console.log(JSON.stringify(doc)) - //socket.write(JSON.stringify({'action': 'log','param': doc.log})); -}); - } -}); - var RES = new Object(); - RES.code = req.query["filter"] - RES.token = req.query["filter"] - var isvalid = await checkToken(RES.token); - if(isvalid.action == 'ok'){ - console.log("Authserver ok " + RES.token); - }else{ - console.log("Authserver no " + RES.token); - } - RES.error = false - RES.error_msg = "ok" - res.json(RES) - })() - -}); - -// *************************************************** -// rest post -// *************************************************** - -app.post('/run', [ - //check('access_token').isLength({ min: 40 }), - //check('llo').isBase64() - ], -cors(corsOptions), (req, res, next) => { - - - (async() => { - - //console.log(JSON.stringify(req.headers)); - //console.log(JSON.stringify(req.body)); - //console.log("mongo "+JSON.stringify(req.body)); - //console.log("LOG "+JSON.stringify(req.body[0].message)); - //console.log("PATH "+JSON.stringify(req.body[0].tailed_path)); - for (var i = 0; i < req.body.length; i++){ - //var getpath = await onlogfile(req.body[i].tailed_path) - - var path = req.body[i].tailed_path - - console.log('File', path, 'has been added'); - var pathfileval = pathmodule.basename(path); - var arrfile = pathfileval.toString().split("-"); - var pathfile = arrfile[0]; - var indexfind1 = global.pipelines.findIndex(x => x.pathlogfile==pathfileval); - console.log('file11111111111111111111111111111111 ' + JSON.stringify(pathfileval)) - if (indexfind1 === -1 ){ - (async() => { - console.log('file2222222222222222222222222222222222222 ' + JSON.stringify(pathfileval)) - var token = "d2539e5a7ae1f9f1b0eb2b8f22ca467a86d28407"; // desto - var resdata = await getpipelines(token,pathfile) - //resdata.data.pathlogfile = 'test' - var resob = {} - resob.pathlogfile = pathfileval - var resobarray = [] - for (let i in resdata.data) { - var resob1 = {} - resob1.data = resdata.data[i].res25swarmlabname - resob1.user25user = resdata.data[i].res25user - resob1.res25creator = resdata.data[i].res25creator - resob1.res25fileforce = resdata.data[i].res25fileforce - resobarray.push(resob1) - } - resob.data = resobarray - //var indexfind = global.pipelines.findIndex(x => x.res25swarmlabname==resdata.data[0].res25swarmlabname); - var indexfind = global.pipelines.findIndex(x => x.pathlogfile==pathfileval); - - //indexfind === -1 ? global.pipelines.push({resob}) : console.log("object already exists") - indexfind === -1 ? global.pipelines.push(resob) : console.log("object already exists "+pathfileval) - - //console.log('info', JSON.stringify(resdata)); - //console.log('info------------- ', JSON.stringify(global.pipelines)); - })() - } - // - var obj = req.body[i]; - - //var indexfind = global.pipelines.findIndex(x => x.res25swarmlabname==resdata.data.res25swarmlabname); - //indexfind === -1 ? global.pipelines.push(resob) : console.log("object already exists") - var now = new Date(); - - var reslog = new Object(); - reslog.log = obj - - reslog.date = convertDateToUTC(now) - console.log(reslog); - var pathfileval = pathmodule.basename(reslog.log.tailed_path); - var indexfind = global.pipelines.findIndex(x => x.pathlogfile==pathfileval); - //indexfind === -1 ? sendlog(reslog,pathfileval) : console.log("object already exists") - indexfind === -1 ? console.log("object not found") : sendlog(reslog,pathfileval) - console.log("IOT "+JSON.stringify(reslog.log.tailed_path)); - console.log("IOTindexfind "+JSON.stringify(indexfind)); - console.log("IOTuser "+JSON.stringify(global.pipelines)); - // io.in("iot").emit("message", reslog); - // io.emit("logdata", reslog); - } - })() - - //io.in("iot").emit("message", RES); - - console.error('socket POST from client'); - var RES = new Object(); - RES.error = false - RES.error_msg = "ok" - RES.msg = req.body[0].messsage - - res.json(RES) -}); - -// *************************************************** -// socket -// *************************************************** - -io.origins('*:*') // for latest version - - -function onCollection(err, collection) { - let options = { tailable: true, - awaitdata: true, - numberOfRetries: -1, - tailableRetryInterval: 500 - }; - var cursor = collection.find({},options).stream(); - var itemsProcessed = 0; - - var reslog = new Object(); - var now = new Date(); - cursor.on('data', function (data) { - console.log('+++++++++ondata<<<<<<<<<<<<<<<<<<<<<<' + data); - io.in('anagnostopoulos@uniwa.gr').emit("logdata", data); - - var pathfileval = pathmodule.basename(data.tailed_path); - var arrfile = pathfileval.toString().split("-"); - var pathfile = arrfile[0]; - - var indexupdate = true - var resob = {} - //var indexfind1 = global.pipelines.findIndex(x => x.pathlogfile==pathfileval); - pubClient.get(pathfileval, function(err, object) { - if(object){ - indexupdate = false - }else{ - console.log('redis '+JSON.stringify(object)); - } - }); - if (indexupdate ){ - (async() => { - var token = "d2539e5a7ae1f9f1b0eb2b8f22ca467a86d28407"; // desto - var resdata = await getpipelines(token,pathfile) - resob.pathlogfile = pathfileval - var resobarray = [] - var resob1 = {} - var i = 0 - resob1.data = resdata.data[i].res25swarmlabname - resob1.user25user = resdata.data[i].res25user - resob1.res25creator = resdata.data[i].res25creator - resob1.res25fileforce = resdata.data[i].res25fileforce - resob1.tailed_path = pathfileval - //resobarray.push(resob1) - var resob1string = JSON.stringify(resob1); - console.log('+++++++++++++++++' + resob1string + '<<<<<<<<<<<<<<<<<<<<<<' + pathfileval); - pubClient.set(pathfileval, resob1string, function(err, res) { - }); - reslog.data = resob1 - reslog.log = data - reslog.date = convertDateToUTC(now) - var user = resob1.res25creator - console.log('datauser ' + JSON.stringify(user)); - //io.in(user).emit("logdata", reslog); - var user = 'anagnostopoulos@uniwa.gr' - io.in(user).emit("logdata", reslog); - itemsProcessed++; - })() - }else{ - - pubClient.get(pathfileval, function(err, object) { - var resob1 = {} - var i = 0 - resob1.data = object.res25swarmlabname - resob1.user25user = object.res25user - resob1.res25creator = object.res25creator - resob1.res25fileforce = object.res25fileforce - resob1.tailed_path = object.tailed_path - - reslog.data = resob1 - reslog.log = data - reslog.date = convertDateToUTC(now) - - console.log('>>>>>>>>>>2222222222222>>>>>>>>>>>>>>>>>>>>>>>>>>>>> '+JSON.stringify(object)); - var user = object.user25user - io.in(user).emit("logdata", reslog); - itemsProcessed++; - }); - } - }); - - - setInterval(function () { - console.log('itemsProcessed', itemsProcessed); - }, 1000); -} - - - var mongourl = "mongodb://playgrounduser:efvvnuioervefSDFSGYGHRDFVsdfergvssppiiedifhwincvinviw_dbfjbsifbsdkjfswuunscfudfgbbfvibqefwrvnine@ondemand_playground_mongo1:27017,ondemand_playground_mongo2:27017,ondemand_playground_mongo3:27017,ondemand_playground_mongo4:27017,ondemand_playground_mongo5:27017,ondemand_playground_mongo6:27017,ondemand_playground_mongo7:27017/fluent?replicaSet=rs1" - const OPTS = { - useNewUrlParser: true, - useUnifiedTopology: true - }; - var mongooptions = { - autoReconnect: true, - keepAlive: 1, - connectTimeoutMS: 30000, - socketTimeoutMS: 0 - } - MongoClient.connect(mongourl, OPTS, function(err, client){ - if(err){ - console.log(err); - } else { - const db = client.db('fluent'); - db.collection('logs', onCollection); - } - }); - -io.on('connection', s => { - console.error('socket connection'); - - // ------------------------------ - // --- set - // ------------------------------ - var usersession = new Object(); - usersession.SOCKET = {}; - usersession.SOCKET.error = {}; - console.error('socket ...'); - s.auth = false; - - // ------------------------------ - // --- authenticate - // ------------------------------ - s.on('authenticate', function(data){ - const token = data - console.log('invalid 1 ' + token); - (async() => { - var isvalid = await checkToken(token); - if(isvalid.action == 'ok'){ - console.log("Authserver ok ", s.id + ' - ' + token); - usersession.SOCKET.user = isvalid.user - usersession.SOCKET.scope = isvalid.scope // space delimeter - usersession.SOCKET.token = isvalid.token - s.auth = true; - }else{ - console.log("Authserver no ", s.id + ' - ' + token); - s.auth = false; - } - })() - }); - - setTimeout(function(){ - if (!s.auth) { - console.log("Disconnecting timeout socket ", s.id); - s.disconnect('unauthorized'); - }else{ - var room = usersession.SOCKET.user - //s.on("subscribe", function (room) { - // console.log("joining room", room); - s.join(room); - // }); - } - }, 30000); - - - - - var id = s.id - s.on('log', obj => { - console.error('from client '+ s.id + ' obj ' + obj); - }); - -}); - -http.listen(3000, () => console.error('listening on http://localhost:3000/')); -console.error('socket.io example'); diff --git a/swarmlab-app/src/run/app.js b/swarmlab-app/src/run/app.js deleted file mode 100755 index fe5df33..0000000 --- a/swarmlab-app/src/run/app.js +++ /dev/null @@ -1,889 +0,0 @@ -"use strict" - -var pathmodule = require('path'); -var app = require('express')(); -var http = require('http').Server(app); -var https = require('https'); -var CONFIG = require( pathmodule.resolve( __dirname, "runconfig.js" ) ); -const io = require("socket.io")(http, { -// pingTimeout: 30000, -// allowUpgrades: false, -// serveClient: false, -// pingInterval: 10000, -// //transports: [ 'websocket', 'polling' ], -// transports: [ 'polling', 'websocket' ], - cors: { - origin: "http://localhost:8080", - methods: ["GET", "POST"], - allowedHeaders: ["my-custom-header"], - credentials: true - }, - cookie: { - name: "test", - httpOnly: false, - path: "/custom" - } -}); - -/* -const Redis = require("ioredis"); -const redistest = new Redis({ - host: 'redisserver', - port: 6379, - }); -const pubtest = new Redis({ - host: 'redisserver', - port: 6379, - }); -*/ - - -//import { createAdapter } from 'socket.io-redis'; -const createAdapter = require('socket.io-redis'); -//const RedisClient = require("redis"); -const Redis = require("ioredis"); -//const pubClient = RedisClient.createClient({ - -const pubClient = new Redis({ - host: 'redisserver', - port: 6379, - }); - -//const pubClient = new RedisClient({ host: 'localhost', port: 6379 }); -const subClient = pubClient.duplicate(); - -io.adapter(createAdapter({ pubClient, subClient })); - - -pubClient.on("connect", function() { - console.log("You are now connected"); -}); - -const MongoClient = require('mongodb').MongoClient; -const { DateTime } = require("luxon"); - - - var async = require("async"); -const { check, validationResult } = require('express-validator'); -const urlExistSync = require("url-exist-sync"); - -var express = require('express'); -app.use(express.json()); - -const axios = require('axios'); -axios.defaults.timeout = 30000 - - const helmet = require('helmet'); -app.use(helmet()); - -const cors = require('cors') -const whitelist = [ - 'http://localhost:8080', - 'http://localhost:3080', - 'http://localhost:3081', - 'http://localhost:3082' - ] -const corsOptions = { - credentials: true, - methods: ['GET', 'PUT', 'POST', 'DELETE', 'OPTIONS'], - optionsSuccessStatus: 200, // some legacy browsers (IE11, various SmartTVs) choke on 204 - allowedHeaders: [ - 'Content-Type', - 'Authorization', - 'X-Requested-With', - 'device-remember-token', - 'Access-Control-Allow-Origin', - 'Access-Control-Allow-Headers', - 'Origin', - 'Accept' - ], - origin: function(origin, callback) { - if (whitelist.indexOf(origin) !== -1) { - callback(null, true) - } else { - callback(null, true) - //callback(new Error('Not allowed by CORS')) - } - } -} - - - -// *************************************************** -// checktoken -// *************************************************** - -async function checkToken(token) { - const agent = new https.Agent({ - rejectUnauthorized: false, - }); - const instance = axios.create({ - baseURL: 'https://api.swarmlab.io', - withCredentials: true, - rejectUnauthorized: false, - crossdomain: true, - httpsAgent: agent, - headers: { - 'Accept': 'application/json', - 'Content-Type': 'multipart/form-data', - 'Authorization': 'Bearer '+token - } - }) - try { - var pipelines = { - "source":'ssologin' - } - var params = { - pipeline: pipelines - } - - var options = { - headers: { 'content-type': 'application/x-www-form-urlencoded',Authorization: `Bearer ${token}` }, - }; - - instance.defaults.timeout = 30000; - const res = await instance.post('/istokenvalidsso',params,options); - if(res.status == 200){ - //console.log("check " +JSON.stringify(res.data)) - return res.data - }else{ - console.log("noerror: " + res) - return res.status - - } - } - catch (err) { - console.error("error: "+err); - var error = new Object(); - error.action = '401' - return error - } -} - - -function convertDateToUTC(date) { -return new Date(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds(),date.getUTCMilliseconds()); -} - -// *************************************************** -// get pipelines -// *************************************************** - -async function getpipelines(token,pipelinename) { - const agent = new https.Agent({ - rejectUnauthorized: false, - }); - const instance = axios.create({ - baseURL: 'https://api.swarmlab.io', - withCredentials: true, - rejectUnauthorized: false, - crossdomain: true, - httpsAgent: agent, - headers: { - 'Accept': 'application/json', - 'Content-Type': 'multipart/form-data', - 'Authorization': 'Bearer '+token - } - }) - /* - var params = { - playbook: value - } - var options = { - params: params, - headers: { 'content-type': 'application/x-www-form-urlencoded',Authorization: `Bearer ${token}` }, - }; - - const playbook = await api.GET('playbookCode',options); - return playbook -*/ - try { - - var pipelines = { - "querytokenFilter":CONFIG.api.token, - "filter":pipelinename - } - //var params = { - // pipeline: pipelines - // } - var params = { - querytokenFilter:CONFIG.api.token, - filter:pipelinename - } - - var options = { - params: params, - headers: { 'content-type': 'application/x-www-form-urlencoded',Authorization: `Bearer ${token}` }, - }; - - //https://api.swarmlab.io/gettutorlabrooms?sort=pipelinename%7Casc&page=1&per_page=5&filter=&type=scripts&tutor=yes - instance.defaults.timeout = 30000; - //const res = await instance.get('/getplaygrounds',params,options); - const res = await instance.get('/getplaygrounds',options); - if(res.status == 200){ - return res.data - }else{ - console.log("noerror: " + res) - return await res.status - - } - } - catch (err) { - console.error("error: "+err); - var error = new Object(); - error.action = '401' - return await error - } -} - -// *************************************************** -// get user pipelines -// *************************************************** - -async function getuserpipelines(token,user,swarmlabname) { - var pipelinename = user - const agent = new https.Agent({ - rejectUnauthorized: false, - }); - const instance = axios.create({ - baseURL: 'https://api.swarmlab.io', - withCredentials: true, - rejectUnauthorized: false, - crossdomain: true, - httpsAgent: agent, - headers: { - 'Accept': 'application/json', - 'Content-Type': 'multipart/form-data', - 'Authorization': 'Bearer '+token - } - }) - try { - - var pipelines = { - "querytokenFilter":CONFIG.api.token, - "filter":pipelinename, - swarmlabname:swarmlabname - } - //var params = { - // pipeline: pipelines - // } - var params = { - querytokenFilter:CONFIG.api.token, - filter:pipelinename, - swarmlabname:swarmlabname - } - - var options = { - params: params, - headers: { 'content-type': 'application/x-www-form-urlencoded',Authorization: `Bearer ${token}` }, - }; - - instance.defaults.timeout = 30000; - const res = await instance.get('/getuserplaygrounds',options); - if(res.status == 200){ - return res.data - }else{ - console.log("noerror: " + res) - return await res.status - - } - } - catch (err) { - console.error("error: "+err); - var error = new Object(); - error.action = '401' - error.error = err - return await error - } -} - - -global.online='ob'; -global.pipelines=[]; - - function sendlog(reslog,pathfileval){ - var usertmp = global.pipelines.find(x => x.pathlogfile==pathfileval); - //for (var key in usertmp.data){ - var user = usertmp.data[0].user25user; - // if(usertmp.data){ - console.log('-----------------------' + JSON.stringify(usertmp)); - io.in(user).emit("logdata", reslog); - // } - //} - } - function onlogfile(path){ - - console.log('File', path, 'has been added'); - var pathfileval = pathmodule.basename(path); - var arrfile = pathfileval.toString().split("-"); - var pathfile = arrfile[0]; - var indexfind1 = global.pipelines.findIndex(x => x.pathlogfile==pathfileval); - console.log('file11111111111111111111111111111111 ' + JSON.stringify(pathfileval)) - if (indexfind1 === -1 ){ - (async() => { - console.log('file2222222222222222222222222222222222222 ' + JSON.stringify(pathfileval)) - var token = "d2539e5a7ae1f9f1b0eb2b8f22ca467a86d28407"; // desto - var resdata = await getpipelines(token,pathfile) - //resdata.data.pathlogfile = 'test' - var resob = {} - resob.pathlogfile = pathfileval - var resobarray = [] - for (let i in resdata.data) { - var resob1 = {} - resob1.data = resdata.data[i].res25swarmlabname - resob1.user25user = resdata.data[i].res25user - resob1.res25creator = resdata.data[i].res25creator - resob1.res25fileforce = resdata.data[i].res25fileforce - resobarray.push(resob1) - } - resob.data = resobarray - var indexfind = global.pipelines.findIndex(x => x.pathlogfile==pathfileval); - indexfind === -1 ? global.pipelines.push(resob) : console.log("object already exists "+pathfileval) - })() - } - -} - -// *************************************************** -// rest get -// *************************************************** - -app.get('/get_log', [ - check('token').isLength({ min: 40 }) - ], -cors(corsOptions), (req, res, next) => { - - (async() => { - var RES = new Object(); - RES.token = req.query["token"] - RES.start = req.query["start"] - RES.end = req.query["end"] - RES.swarmlabname = req.query["swarmlabname"] - RES.ok = 'ok' -/* - * - * validate - * - */ - - - - var isvalid = await checkToken(RES.token); - if(isvalid.action == 'ok'){ - console.log("Authserver ok " + RES.token); - RES.error = 'ok' - }else{ - console.log("Authserver no " + RES.token); - RES.error = 'no' - } - if(RES.error == 'ok'){ - - var resdata = await getuserpipelines(RES.token,isvalid.user,RES.swarmlabname) - var mongourl = "mongodb://"+CONFIG.mongo.user+":"+CONFIG.mongo.password+"@ondemand_playground_mongo1:27017,ondemand_playground_mongo2:27017,ondemand_playground_mongo3:27017,ondemand_playground_mongo4:27017,ondemand_playground_mongo5:27017,ondemand_playground_mongo6:27017,ondemand_playground_mongo7:27017/fluent?replicaSet=rs1&authSource=swarmlabplaygroundstats" - const OPTS = { - useNewUrlParser: true, - useUnifiedTopology: true - }; - MongoClient.connect(mongourl, OPTS, function(err, client){ - if(err){ - console.log(err); - } else { - const db = client.db('fluent'); - //usersession.SOCKET.user = isvalid.user - console.log(JSON.stringify('mongo ----------------connected')) - console.log('-----test------- '+JSON.stringify(RES)) - if ((typeof RES.start !== "undefined") && (typeof RES.end !== "undefined")) { - if(DateTime.fromISO(RES.start).isValid){ - var datestart = DateTime.fromISO(RES.start) - var dateend = DateTime.fromISO(RES.end) - var search_term = { - "$and": [ - { - "time": { - $gte: datestart - } - }, - { - "time": { - $lt: dateend - } - }, - ] - } - }else{ - RES.ok = 'no' - } - }else if(typeof RES.end !== "undefined"){ - var dateend = DateTime.fromISO(RES.end) - if(DateTime.fromISO(RES.end).isValid){ - var search_term = { - "$and": [ - { - "time": { - $lt: dateend - } - } - ] - } - }else{ - RES.ok = 'no' - } - }else if(typeof RES.start !== "undefined"){ - var datestart = DateTime.fromISO(RES.start) - if(DateTime.fromISO(RES.start).isValid){ - var search_term = { - "$and": [ - { - "time": { - $gte: datestart - } - } - ] - } - }else{ - RES.ok = 'no' - } - } - if(RES.ok == 'ok'){ - //var search_term = '{"$gte": new Date("2020-12-01T00:00:00.000Z") , "$lt": new Date("2020-12-11T16:17:36.470Z") }' - //var search_term = {"time" : {$lte : datenow}} - var resdataarray = [] - var resraw = {} - var reslab = '' - var datestart1 = DateTime.fromISO(RES.start) - console.log('-----now1------- '+JSON.stringify(search_term)) - console.log('-----now2------- '+JSON.stringify(datestart1)) - console.log('-----now3------- '+JSON.stringify(datestart)) - - db.collection('logs').find(search_term).toArray() - //db.collection('logs').find({"time" : {$gt : datestart}}).toArray() - .then(item => { - console.log('item '+JSON.stringify(item)) - for (let i in item) { - reslab = item[i].tailed_path - var segment_array = reslab.split( '/' ); - var last_segment = segment_array.pop(); - var fieldstmp = last_segment.split('-'); - var nameofswarmlab = fieldstmp[0]; - - var regexlog = new RegExp(nameofswarmlab); - for (let ii in resdata.data) { - if( regexlog.test(resdata.data[ii].res25swarmlabname) ){ - resdataarray.push(item[i]) - RES.found = item[i] - } - } - } - - RES.error_msg = "ok" - RES.data = resdataarray - //RES.dataserver = resdataarray - //RES.dataservertmp = resdata - res.json(RES) - }) - .catch(err => { - console.error(err) - RES.error_msg = err - res.json(RES) - }) - } else{ // RES.ok - RES.error_msg = 'no date' - res.json(RES) - } - } // error mongo connect - }); // mongo connect - }else{ // token error - RES.data = 'no' - RES.error_msg = "token err" - res.json(RES) - } - })() - -}); - -app.get('/run', [ - //check('access_token').isLength({ min: 40 }), - //check('llo').isBase64() - ], -cors(corsOptions), (req, res, next) => { - - (async() => { - -var mongourl = "mongodb://"+CONFIG.mongo.user+":"+CONFIG.mongo.password+"@ondemand_playground_mongo1:27017,ondemand_playground_mongo2:27017,ondemand_playground_mongo3:27017,ondemand_playground_mongo4:27017,ondemand_playground_mongo5:27017,ondemand_playground_mongo6:27017,ondemand_playground_mongo7:27017/fluent?replicaSet=rs1&authSource=swarmlabplaygroundstats" -const OPTS = { - useNewUrlParser: true, - useUnifiedTopology: true -}; -MongoClient.connect(mongourl, OPTS, function(err, client){ - if(err){ - console.log(err); - } else { - const db = client.db('fluent'); - //db.collection('log', onCollection); - console.log(JSON.stringify('mongo connected')) - var stream = db.collection('logs').find({}, { - tailable: true, - awaitdata: true - /* other options */ -}).stream(); - -stream.on('data', function (doc) { - console.log(JSON.stringify(doc)) - //socket.write(JSON.stringify({'action': 'log','param': doc.log})); -}); - } -}); - var RES = new Object(); - RES.code = req.query["filter"] - RES.token = req.query["filter"] - var isvalid = await checkToken(RES.token); - if(isvalid.action == 'ok'){ - console.log("Authserver ok " + RES.token); - }else{ - console.log("Authserver no " + RES.token); - } - RES.error = false - RES.error_msg = "ok" - res.json(RES) - })() - -}); - -// *************************************************** -// rest post -// *************************************************** - -app.post('/run', [ - //check('access_token').isLength({ min: 40 }), - //check('llo').isBase64() - ], -cors(corsOptions), (req, res, next) => { - - - (async() => { - - //console.log(JSON.stringify(req.headers)); - //console.log(JSON.stringify(req.body)); - //console.log("mongo "+JSON.stringify(req.body)); - //console.log("LOG "+JSON.stringify(req.body[0].message)); - //console.log("PATH "+JSON.stringify(req.body[0].tailed_path)); - for (var i = 0; i < req.body.length; i++){ - //var getpath = await onlogfile(req.body[i].tailed_path) - - var path = req.body[i].tailed_path - - console.log('File', path, 'has been added'); - var pathfileval = pathmodule.basename(path); - var arrfile = pathfileval.toString().split("-"); - var pathfile = arrfile[0]; - var indexfind1 = global.pipelines.findIndex(x => x.pathlogfile==pathfileval); - console.log('file11111111111111111111111111111111 ' + JSON.stringify(pathfileval)) - if (indexfind1 === -1 ){ - (async() => { - console.log('file2222222222222222222222222222222222222 ' + JSON.stringify(pathfileval)) - var token = "d2539e5a7ae1f9f1b0eb2b8f22ca467a86d28407"; // desto - var resdata = await getpipelines(token,pathfile) - //resdata.data.pathlogfile = 'test' - var resob = {} - resob.pathlogfile = pathfileval - var resobarray = [] - for (let i in resdata.data) { - var resob1 = {} - resob1.data = resdata.data[i].res25swarmlabname - resob1.user25user = resdata.data[i].res25user - resob1.res25creator = resdata.data[i].res25creator - resob1.res25fileforce = resdata.data[i].res25fileforce - resobarray.push(resob1) - } - resob.data = resobarray - //var indexfind = global.pipelines.findIndex(x => x.res25swarmlabname==resdata.data[0].res25swarmlabname); - var indexfind = global.pipelines.findIndex(x => x.pathlogfile==pathfileval); - - //indexfind === -1 ? global.pipelines.push({resob}) : console.log("object already exists") - indexfind === -1 ? global.pipelines.push(resob) : console.log("object already exists "+pathfileval) - - //console.log('info', JSON.stringify(resdata)); - //console.log('info------------- ', JSON.stringify(global.pipelines)); - })() - } - // - var obj = req.body[i]; - - //var indexfind = global.pipelines.findIndex(x => x.res25swarmlabname==resdata.data.res25swarmlabname); - //indexfind === -1 ? global.pipelines.push(resob) : console.log("object already exists") - var now = new Date(); - - var reslog = new Object(); - reslog.log = obj - - reslog.date = convertDateToUTC(now) - console.log(reslog); - var pathfileval = pathmodule.basename(reslog.log.tailed_path); - var indexfind = global.pipelines.findIndex(x => x.pathlogfile==pathfileval); - //indexfind === -1 ? sendlog(reslog,pathfileval) : console.log("object already exists") - indexfind === -1 ? console.log("object not found") : sendlog(reslog,pathfileval) - console.log("IOT "+JSON.stringify(reslog.log.tailed_path)); - console.log("IOTindexfind "+JSON.stringify(indexfind)); - console.log("IOTuser "+JSON.stringify(global.pipelines)); - // io.in("iot").emit("message", reslog); - // io.emit("logdata", reslog); - } - })() - - //io.in("iot").emit("message", RES); - - console.error('socket POST from client'); - var RES = new Object(); - RES.error = false - RES.error_msg = "ok" - RES.msg = req.body[0].messsage - - res.json(RES) -}); - -// *************************************************** -// socket -// *************************************************** - -//function getSHA256ofJSON(input){ -// return require("crypto").createHash("sha256").update(JSON.stringify(input)).digest("hex"); -//} - -function sleep(ms) { - return new Promise(resolve => setTimeout(resolve, ms)); -} - -function getSHA256ofJSON(data, inputEncoding, encoding){ - if (!data) { - return ''; - } - inputEncoding = inputEncoding || 'utf-8'; - encoding = encoding || 'hex'; - const hash = require("crypto").createHash('md5'); - return hash.update(JSON.stringify(data), inputEncoding).digest(encoding); -} - -//var getkey = function getkey(key) { -async function getkey(key) { - return new Promise((resolve) => { - - - pubClient.get(key, function (err, reply) { - if(err){ - - console.log('----------error------------') - - resolve(null) - } - else { - if(reply){ - console.log('---------fount----------') - resolve(1) - }else{ - console.log('----------not fount------------') - resolve(2) - //return 2 - } - } - }) - }) -} - -var setkey = function setkv(key,value){ - return new Promise((resolve)=>{ - //pubClient.set(key,value, 'EX', expire, function(err,reply){ - pubClient.set(key,value, function(err,reply){ - if(err){ - resolve(null) - } - else{ - resolve(reply) - } - }) - }) -} - -async function iosend(data,issend,io,pubClient,user1){ - var new1 = {} - new1.tailed_path = data.tailed_path - new1.message = data.message - - var now = new Date(); - var reslog1 = {} - //reslog1.data = resob1 - reslog1.log = new1 - reslog1.date = convertDateToUTC(now) - var user = user1 - - const randomTimeInMs = Math.random() * (2000); - await sleep(randomTimeInMs); - var getres = await getkey(issend); - - if(getres == '1'){ - console.log(issend + ' ---1 '+ JSON.stringify(reslog1)) - //io.in(user).emit("logdata", reslog1); - }else if(getres == '2'){ - console.log(issend + ' ---2 '+ JSON.stringify(reslog1)) - setkey(issend,'1') - //pubClient.set(issend, '1', function(err, res) { - //}); - io.in(user).emit("logdata", reslog1); - //} - - } - -} - -function onCollection(err, collection) { - let options = { tailable: true, - awaitdata: true, - numberOfRetries: -1, - tailableRetryInterval: 500 - }; - var cursor = collection.find({},options).stream(); - var itemsProcessed = 0; - - var reslog = new Object(); - var now = new Date(); - cursor.on('data', function (data) { - var issendob = new Object(); - issendob.id = data._id - issendob.message = data.message - issendob.tailed_path = data.tailed_path - - var issend = getSHA256ofJSON(issendob) - - console.log('++++++++' + JSON.stringify(data)); - console.log('++++++++ob' + JSON.stringify(issendob)); - console.log('++++++++sha' + JSON.stringify(issend)); - - var pathfileval = pathmodule.basename(data.tailed_path); - var arrfile = pathfileval.toString().split("-"); - var pathfile = arrfile[0]; - - var indexupdate = "yes" - var resob = {}; - pubClient.get(pathfileval, function(err, object) { - var objecttmp = JSON.parse(object); - if(object){ - var user1 = objecttmp.user25user.replace(/[\n\t\r]/g,"") - iosend(data,issend,io,pubClient,user1) - }else{ - (async() => { - var token = "d2539e5a7ae1f9f1b0eb2b8f22ca467a86d28407"; // desto - var resdata1 = await getpipelines(token,pathfile) - resob.pathlogfile = pathfileval - var resob11 = {} - var i1 = 0 - resob11.data = resdata1.data[i1].res25swarmlabname - resob11.user25user = resdata1.data[i1].res25user.replace(/[\n\t\r]/g,"") - resob11.res25creator = resdata1.data[i1].res25creator - resob11.res25fileforce = resdata1.data[i1].res25fileforce - resob11.tailed_path = pathfileval - var resob1string1 = JSON.stringify(resob11); - await pubClient.set(pathfileval, resob1string1, function(err, res) { - }); - var user1 = resob11.user25user - iosend(data,issend,io,pubClient,user1) - console.log(' ---no--- '+ JSON.stringify(data)) - })() //await inside yes - } - }); - - }); - - - setInterval(function () { - console.log('itemsProcessed', itemsProcessed); - // this method is also exposed by the Server instance - //console.log(adapter.rooms); - }, 8000); -} - - - var mongourl = "mongodb://"+CONFIG.mongo.user+":"+CONFIG.mongo.password+"@ondemand_playground_mongo1:27017,ondemand_playground_mongo2:27017,ondemand_playground_mongo3:27017,ondemand_playground_mongo4:27017,ondemand_playground_mongo5:27017,ondemand_playground_mongo6:27017,ondemand_playground_mongo7:27017/fluent?replicaSet=rs1&authSource=swarmlabplaygroundstats" - const OPTS = { - useNewUrlParser: true, - useUnifiedTopology: true - }; - var mongooptions = { - autoReconnect: true, - keepAlive: 1, - connectTimeoutMS: 30000, - socketTimeoutMS: 0 - } - MongoClient.connect(mongourl, OPTS, function(err, client){ - if(err){ - console.log(err); - } else { - const db = client.db('fluent'); - db.collection('logs', onCollection); - } - }); - -io.on('connection', s => { - console.error('socket connection'); - -//s.set('transports', ['websocket']); -//s.set('pingTimeout', 30000); -//s.set('allowUpgrades', false); -//s.set('serveClient', false); -//s.set('pingInterval', 10000); - // ------------------------------ - // --- set - // ------------------------------ - var usersession = new Object(); - usersession.SOCKET = {}; - usersession.SOCKET.error = {}; - console.error('socket ...'); - s.auth = false; - - // ------------------------------ - // --- authenticate - // ------------------------------ - s.on('authenticate', function(data){ - const token = data - console.log('invalid 1 ' + token); - (async() => { - var isvalid = await checkToken(token); - if(isvalid.action == 'ok'){ - console.log("Authserver ok ", s.id + ' - ' + token); - // pubClient.set(session, resob1string, function(err, res) { - // }); - usersession.SOCKET.user = isvalid.user - usersession.SOCKET.scope = isvalid.scope // space delimeter - usersession.SOCKET.token = isvalid.token - s.auth = true; - }else{ - console.log("Authserver no ", s.id + ' - ' + token); - s.auth = false; - } - })() - }); - - setTimeout(function(){ - if (!s.auth) { - console.log("Disconnecting timeout socket ", s.id); - //s.disconnect('unauthorized'); - }else{ - var room = usersession.SOCKET.user - //s.on("subscribe", function (room) { - s.join(room); - console.log("joining rooom", s.rooms); - console.log(room + ' created ') - // }); - } - }, 30000); - - - - - var id = s.id - s.on('log', obj => { - console.error('from client '+ s.id + ' obj ' + obj); - }); - -}); - -http.listen(3000, () => console.error('listening on http://localhost:3000/')); -console.error('socket.io example'); diff --git a/swarmlab-app/src/run/app.js.backup1 b/swarmlab-app/src/run/app.js.backup1 deleted file mode 100755 index c55bb79..0000000 --- a/swarmlab-app/src/run/app.js.backup1 +++ /dev/null @@ -1,697 +0,0 @@ -"use strict" - -var pathmodule = require('path'); -var app = require('express')(); -var http = require('http').Server(app); -var https = require('https'); -const io = require("socket.io")(http, { -// pingTimeout: 30000, -// allowUpgrades: false, -// serveClient: false, -// pingInterval: 10000, -// //transports: [ 'websocket', 'polling' ], -// transports: [ 'polling', 'websocket' ], - cors: { - origin: "http://localhost:8080", - methods: ["GET", "POST"], - allowedHeaders: ["my-custom-header"], - credentials: true - }, - cookie: { - name: "test", - httpOnly: false, - path: "/custom" - } -}); - -/* -const Redis = require("ioredis"); -const redistest = new Redis({ - host: 'redisserver', - port: 6379, - }); -const pubtest = new Redis({ - host: 'redisserver', - port: 6379, - }); -*/ - - -//import { createAdapter } from 'socket.io-redis'; -const createAdapter = require('socket.io-redis'); -//const RedisClient = require("redis"); -const Redis = require("ioredis"); -//const pubClient = RedisClient.createClient({ - -const pubClient = new Redis({ - host: 'redisserver', - port: 6379, - }); - -//const pubClient = new RedisClient({ host: 'localhost', port: 6379 }); -const subClient = pubClient.duplicate(); - -io.adapter(createAdapter({ pubClient, subClient })); - - -pubClient.on("connect", function() { - console.log("You are now connected"); -}); - -const MongoClient = require('mongodb').MongoClient; - - var async = require("async"); -const { check, validationResult } = require('express-validator'); -const urlExistSync = require("url-exist-sync"); - -var express = require('express'); -app.use(express.json()); - -const axios = require('axios'); -axios.defaults.timeout = 30000 - - const helmet = require('helmet'); -app.use(helmet()); - -const cors = require('cors') -const whitelist = [ - 'http://localhost:8080', - 'http://localhost:3080', - 'http://localhost:3081', - 'http://localhost:3082' - ] -const corsOptions = { - credentials: true, - methods: ['GET', 'PUT', 'POST', 'DELETE', 'OPTIONS'], - optionsSuccessStatus: 200, // some legacy browsers (IE11, various SmartTVs) choke on 204 - allowedHeaders: [ - 'Content-Type', - 'Authorization', - 'X-Requested-With', - 'device-remember-token', - 'Access-Control-Allow-Origin', - 'Access-Control-Allow-Headers', - 'Origin', - 'Accept' - ], - origin: function(origin, callback) { - if (whitelist.indexOf(origin) !== -1) { - callback(null, true) - } else { - callback(null, true) - //callback(new Error('Not allowed by CORS')) - } - } -} - - -// *************************************************** -// checktoken -// *************************************************** - -async function checkToken(token) { - const agent = new https.Agent({ - rejectUnauthorized: false, - }); - const instance = axios.create({ - baseURL: 'https://api.swarmlab.io', - withCredentials: true, - rejectUnauthorized: false, - crossdomain: true, - httpsAgent: agent, - headers: { - 'Accept': 'application/json', - 'Content-Type': 'multipart/form-data', - 'Authorization': 'Bearer '+token - } - }) - try { - var pipelines = { - "source":'ssologin' - } - var params = { - pipeline: pipelines - } - - var options = { - headers: { 'content-type': 'application/x-www-form-urlencoded',Authorization: `Bearer ${token}` }, - }; - - instance.defaults.timeout = 30000; - const res = await instance.post('/istokenvalidsso',params,options); - if(res.status == 200){ - //console.log("check " +JSON.stringify(res.data)) - return res.data - }else{ - console.log("noerror: " + res) - return res.status - - } - } - catch (err) { - console.error("error: "+err); - var error = new Object(); - error.action = '401' - return error - } -} - - -function convertDateToUTC(date) { -return new Date(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds(),date.getUTCMilliseconds()); -} - -// *************************************************** -// get pipelines -// *************************************************** - -async function getpipelines(token,pipelinename) { - const agent = new https.Agent({ - rejectUnauthorized: false, - }); - const instance = axios.create({ - baseURL: 'https://api.swarmlab.io', - withCredentials: true, - rejectUnauthorized: false, - crossdomain: true, - httpsAgent: agent, - headers: { - 'Accept': 'application/json', - 'Content-Type': 'multipart/form-data', - 'Authorization': 'Bearer '+token - } - }) - /* - var params = { - playbook: value - } - var options = { - params: params, - headers: { 'content-type': 'application/x-www-form-urlencoded',Authorization: `Bearer ${token}` }, - }; - - const playbook = await api.GET('playbookCode',options); - return playbook -*/ - try { - - var pipelines = { - "querytokenFilter":'uWr4FKRqrmpCRkJ9WLuI0DNuDWOGTkfcSzyZkJirZvJwwFDffLWrraqzzSPLeuQqL3TF9', - "filter":pipelinename - } - //var params = { - // pipeline: pipelines - // } - var params = { - querytokenFilter:'uWr4FKRqrmpCRkJ9WLuI0DNuDWOGTkfcSzyZkJirZvJwwFDffLWrraqzzSPLeuQqL3TF9', - filter:pipelinename - } - - var options = { - params: params, - headers: { 'content-type': 'application/x-www-form-urlencoded',Authorization: `Bearer ${token}` }, - }; - - //https://api.swarmlab.io/gettutorlabrooms?sort=pipelinename%7Casc&page=1&per_page=5&filter=&type=scripts&tutor=yes - instance.defaults.timeout = 30000; - //const res = await instance.get('/getplaygrounds',params,options); - const res = await instance.get('/getplaygrounds',options); - if(res.status == 200){ - return res.data - }else{ - console.log("noerror: " + res) - return await res.status - - } - } - catch (err) { - console.error("error: "+err); - var error = new Object(); - error.action = '401' - return await error - } -} - - -global.online='ob'; -global.pipelines=[]; - - function sendlog(reslog,pathfileval){ - var usertmp = global.pipelines.find(x => x.pathlogfile==pathfileval); - //for (var key in usertmp.data){ - var user = usertmp.data[0].user25user; - // if(usertmp.data){ - console.log('-----------------------' + JSON.stringify(usertmp)); - io.in(user).emit("logdata", reslog); - // } - //} - } - function onlogfile(path){ - - console.log('File', path, 'has been added'); - var pathfileval = pathmodule.basename(path); - var arrfile = pathfileval.toString().split("-"); - var pathfile = arrfile[0]; - var indexfind1 = global.pipelines.findIndex(x => x.pathlogfile==pathfileval); - console.log('file11111111111111111111111111111111 ' + JSON.stringify(pathfileval)) - if (indexfind1 === -1 ){ - (async() => { - console.log('file2222222222222222222222222222222222222 ' + JSON.stringify(pathfileval)) - var token = "d2539e5a7ae1f9f1b0eb2b8f22ca467a86d28407"; // desto - var resdata = await getpipelines(token,pathfile) - //resdata.data.pathlogfile = 'test' - var resob = {} - resob.pathlogfile = pathfileval - var resobarray = [] - for (let i in resdata.data) { - var resob1 = {} - resob1.data = resdata.data[i].res25swarmlabname - resob1.user25user = resdata.data[i].res25user - resob1.res25creator = resdata.data[i].res25creator - resob1.res25fileforce = resdata.data[i].res25fileforce - resobarray.push(resob1) - } - resob.data = resobarray - var indexfind = global.pipelines.findIndex(x => x.pathlogfile==pathfileval); - indexfind === -1 ? global.pipelines.push(resob) : console.log("object already exists "+pathfileval) - })() - } - -} - -// *************************************************** -// rest get -// *************************************************** - -app.get('/run', [ - //check('access_token').isLength({ min: 40 }), - //check('llo').isBase64() - ], -cors(corsOptions), (req, res, next) => { - - (async() => { - -var mongourl = "mongodb://playgrounduser:efvvnuioervefSDFSGYGHRDFVsdfergvssppiiedifhwincvinviw_dbfjbsifbsdkjfswuunscfudfgbbfvibqefwrvnine@ondemand_playground_mongo1:27017,ondemand_playground_mongo2:27017,ondemand_playground_mongo3:27017,ondemand_playground_mongo4:27017,ondemand_playground_mongo5:27017,ondemand_playground_mongo6:27017,ondemand_playground_mongo7:27017/fluent?replicaSet=rs1" -const OPTS = { - useNewUrlParser: true, - useUnifiedTopology: true -}; -MongoClient.connect(mongourl, OPTS, function(err, client){ - if(err){ - console.log(err); - } else { - const db = client.db('fluent'); - //db.collection('log', onCollection); - console.log(JSON.stringify('mongo connected')) - var stream = db.collection('logs').find({}, { - tailable: true, - awaitdata: true - /* other options */ -}).stream(); - -stream.on('data', function (doc) { - console.log(JSON.stringify(doc)) - //socket.write(JSON.stringify({'action': 'log','param': doc.log})); -}); - } -}); - var RES = new Object(); - RES.code = req.query["filter"] - RES.token = req.query["filter"] - var isvalid = await checkToken(RES.token); - if(isvalid.action == 'ok'){ - console.log("Authserver ok " + RES.token); - }else{ - console.log("Authserver no " + RES.token); - } - RES.error = false - RES.error_msg = "ok" - res.json(RES) - })() - -}); - -// *************************************************** -// rest post -// *************************************************** - -app.post('/run', [ - //check('access_token').isLength({ min: 40 }), - //check('llo').isBase64() - ], -cors(corsOptions), (req, res, next) => { - - - (async() => { - - //console.log(JSON.stringify(req.headers)); - //console.log(JSON.stringify(req.body)); - //console.log("mongo "+JSON.stringify(req.body)); - //console.log("LOG "+JSON.stringify(req.body[0].message)); - //console.log("PATH "+JSON.stringify(req.body[0].tailed_path)); - for (var i = 0; i < req.body.length; i++){ - //var getpath = await onlogfile(req.body[i].tailed_path) - - var path = req.body[i].tailed_path - - console.log('File', path, 'has been added'); - var pathfileval = pathmodule.basename(path); - var arrfile = pathfileval.toString().split("-"); - var pathfile = arrfile[0]; - var indexfind1 = global.pipelines.findIndex(x => x.pathlogfile==pathfileval); - console.log('file11111111111111111111111111111111 ' + JSON.stringify(pathfileval)) - if (indexfind1 === -1 ){ - (async() => { - console.log('file2222222222222222222222222222222222222 ' + JSON.stringify(pathfileval)) - var token = "d2539e5a7ae1f9f1b0eb2b8f22ca467a86d28407"; // desto - var resdata = await getpipelines(token,pathfile) - //resdata.data.pathlogfile = 'test' - var resob = {} - resob.pathlogfile = pathfileval - var resobarray = [] - for (let i in resdata.data) { - var resob1 = {} - resob1.data = resdata.data[i].res25swarmlabname - resob1.user25user = resdata.data[i].res25user - resob1.res25creator = resdata.data[i].res25creator - resob1.res25fileforce = resdata.data[i].res25fileforce - resobarray.push(resob1) - } - resob.data = resobarray - //var indexfind = global.pipelines.findIndex(x => x.res25swarmlabname==resdata.data[0].res25swarmlabname); - var indexfind = global.pipelines.findIndex(x => x.pathlogfile==pathfileval); - - //indexfind === -1 ? global.pipelines.push({resob}) : console.log("object already exists") - indexfind === -1 ? global.pipelines.push(resob) : console.log("object already exists "+pathfileval) - - //console.log('info', JSON.stringify(resdata)); - //console.log('info------------- ', JSON.stringify(global.pipelines)); - })() - } - // - var obj = req.body[i]; - - //var indexfind = global.pipelines.findIndex(x => x.res25swarmlabname==resdata.data.res25swarmlabname); - //indexfind === -1 ? global.pipelines.push(resob) : console.log("object already exists") - var now = new Date(); - - var reslog = new Object(); - reslog.log = obj - - reslog.date = convertDateToUTC(now) - console.log(reslog); - var pathfileval = pathmodule.basename(reslog.log.tailed_path); - var indexfind = global.pipelines.findIndex(x => x.pathlogfile==pathfileval); - //indexfind === -1 ? sendlog(reslog,pathfileval) : console.log("object already exists") - indexfind === -1 ? console.log("object not found") : sendlog(reslog,pathfileval) - console.log("IOT "+JSON.stringify(reslog.log.tailed_path)); - console.log("IOTindexfind "+JSON.stringify(indexfind)); - console.log("IOTuser "+JSON.stringify(global.pipelines)); - // io.in("iot").emit("message", reslog); - // io.emit("logdata", reslog); - } - })() - - //io.in("iot").emit("message", RES); - - console.error('socket POST from client'); - var RES = new Object(); - RES.error = false - RES.error_msg = "ok" - RES.msg = req.body[0].messsage - - res.json(RES) -}); - -// *************************************************** -// socket -// *************************************************** - -function getSHA256ofJSON(input){ - return require("crypto").createHash("sha256").update(JSON.stringify(input)).digest("hex"); -} - - -function onCollection(err, collection) { - let options = { tailable: true, - awaitdata: true, - numberOfRetries: -1, - tailableRetryInterval: 500 - }; - var cursor = collection.find({},options).stream(); - var itemsProcessed = 0; - - var reslog = new Object(); - var reslog1 = new Object(); - var now = new Date(); - cursor.on('data', function (data) { - var issendob = {}; - issendob.message = data.message - issendob.tailed_path = data.tailed_path - - var issend = getSHA256ofJSON(issendob) - - console.log('++++++++' + JSON.stringify(data)); - console.log('++++++++' + JSON.stringify(issend)); - - var pathfileval = pathmodule.basename(data.tailed_path); - var arrfile = pathfileval.toString().split("-"); - var pathfile = arrfile[0]; - - var indexupdate = "yes" - var resob = {}; - pubClient.get(pathfileval, function(err, object) { - var objecttmp = JSON.parse(object); - if(object){ - reslog.log = data - var user1 = objecttmp.user25user.replace(/[\n\t\r]/g,"") - - console.log(' ---get '+ JSON.stringify(reslog)) - pubClient.get(issend, function(err, object) { - if(object){ - console.log(' ---set '+ JSON.stringify(reslog)) - pubClient.set(issend, itemsProcessed, function(err, res) { - io.in(user1).emit("logdata", reslog); - }); - }else{ - console.log(user1 + ' ---isset '+ JSON.stringify(reslog)) - io.in(user1).emit("logdata", reslog); - } - }); - - //io.in(user1).emit("logdata", reslog); - //console.log(' --- '+ JSON.stringify(reslog)) - //console.log(' --->> '+ JSON.stringify(user1)) - //console.log(user1) - }else{ - (async() => { - var token = "d2539e5a7ae1f9f1b0eb2b8f22ca467a86d28407"; // desto - var resdata1 = await getpipelines(token,pathfile) - resob.pathlogfile = pathfileval - var resob11 = {} - var i1 = 0 - resob11.data = resdata1.data[i1].res25swarmlabname - resob11.user25user = resdata1.data[i1].res25user.replace(/[\n\t\r]/g,"") - resob11.res25creator = resdata1.data[i1].res25creator - resob11.res25fileforce = resdata1.data[i1].res25fileforce - resob11.tailed_path = pathfileval - var resob1string1 = JSON.stringify(resob11); - await pubClient.set(pathfileval, resob1string1, function(err, res) { - }); - var user1 = resob11.user25user - reslog.log = 'no' - io.in(user1).emit("logdata", reslog); - console.log(' ---no--- '+ JSON.stringify(reslog)) - })() //await inside yes - } - }); -/* - pubClient.get(pathfileval, function(err, object) { - if(object){ - reslog.log = data - var user1 = object.user25user - io.in(user1).emit("logdata", reslog); - console.log(' --- '+ JSON.stringify(reslog)) - } - }); //redis get -*/ -/* - pubClient.get(pathfileval, function(err, object) { - reslog1.log=object - console.log('----------------' + err + '<<<<<<<<<<<<<<<<<<<<<<' + object); - if(object){ - indexupdate = "no" - }else{ - console.log('redis '+JSON.stringify(object)); - } - console.log('update '+JSON.stringify(indexupdate)); - if (indexupdate == "yes" ){ - (async() => { - var token = "d2539e5a7ae1f9f1b0eb2b8f22ca467a86d28407"; // desto - var resdata = await getpipelines(token,pathfile) - resob.pathlogfile = pathfileval - var resobarray = [] - var resob1 = {} - var i = 0 - resob1.data = resdata.data[i].res25swarmlabname - resob1.user25user = resdata.data[i].res25user - resob1.res25creator = resdata.data[i].res25creator - resob1.res25fileforce = resdata.data[i].res25fileforce - resob1.tailed_path = pathfileval - var resob1string = JSON.stringify(resob1); - pubClient.set(pathfileval, resob1string, function(err, res) { - }); - reslog.data = resob1 - reslog.log = data - reslog.date = convertDateToUTC(now) - var user = resob1.res25creator - console.log('datauser ' + JSON.stringify(user)); - console.log('>>>>>>>>>>>>>>>>>>>>>>>>>>>>> '+JSON.stringify(reslog)); - await pubClient.get(issend, function(err, object) { - if(err == null){ - pubClient.set(issend, itemsProcessed, function(err, res) { - io.in(user).emit("logdata", reslog); - }); - } - itemsProcessed++; - }); - })() //await inside yes - }else{ - (async() => { - await pubClient.get(pathfileval, function(err, object) { - var objecttmp = JSON.parse(object); - var resob1 = {} - resob1.data = objecttmp.res25swarmlabname - resob1.user25user = objecttmp.res25user - resob1.res25creator = objecttmp.res25creator - resob1.res25fileforce = objecttmp.res25fileforce - resob1.tailed_path = objecttmp.tailed_path - - reslog.data = resob1 - reslog.log = data - reslog.date = convertDateToUTC(now) - - console.log('<<<<<<<<<<<---------------------<<<<<<<<<<<<<<<---------------------------<<<<<<<<<<<< '+JSON.stringify(object)); - console.log('<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< '+JSON.stringify(reslog)); - console.log('<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>> '+JSON.stringify(resob1)); - //var user = objecttmp.user25user - var user = resob1.res25creator - //io.in(user).emit("logdata", reslog); - //var user = 'anagnostopoulos@uniwa.gr' - - pubClient.get(issend).then(function (result) { - console.log("---result--- "+result); // Prints "bar" - io.in(user).emit("logdata", reslog); - }); - - pubClient.get(issend, function(err, object) { - if(err == null){ - pubClient.set(issend, itemsProcessed, function(err, res) { - //io.in(user).emit("logdata", reslog); - }); - } - itemsProcessed++; - }); - }); - })() //await inside no - } - }); //redis get -*/ - - }); - - - setInterval(function () { - console.log('itemsProcessed', itemsProcessed); - // this method is also exposed by the Server instance - //console.log(adapter.rooms); - }, 8000); -} - - - var mongourl = "mongodb://playgrounduser:efvvnuioervefSDFSGYGHRDFVsdfergvssppiiedifhwincvinviw_dbfjbsifbsdkjfswuunscfudfgbbfvibqefwrvnine@ondemand_playground_mongo1:27017,ondemand_playground_mongo2:27017,ondemand_playground_mongo3:27017,ondemand_playground_mongo4:27017,ondemand_playground_mongo5:27017,ondemand_playground_mongo6:27017,ondemand_playground_mongo7:27017/fluent?replicaSet=rs1" - const OPTS = { - useNewUrlParser: true, - useUnifiedTopology: true - }; - var mongooptions = { - autoReconnect: true, - keepAlive: 1, - connectTimeoutMS: 30000, - socketTimeoutMS: 0 - } - MongoClient.connect(mongourl, OPTS, function(err, client){ - if(err){ - console.log(err); - } else { - const db = client.db('fluent'); - db.collection('logs', onCollection); - } - }); - -io.on('connection', s => { - console.error('socket connection'); - -//s.set('transports', ['websocket']); -//s.set('pingTimeout', 30000); -//s.set('allowUpgrades', false); -//s.set('serveClient', false); -//s.set('pingInterval', 10000); - // ------------------------------ - // --- set - // ------------------------------ - var usersession = new Object(); - usersession.SOCKET = {}; - usersession.SOCKET.error = {}; - console.error('socket ...'); - s.auth = false; - - // ------------------------------ - // --- authenticate - // ------------------------------ - s.on('authenticate', function(data){ - const token = data - console.log('invalid 1 ' + token); - (async() => { - var isvalid = await checkToken(token); - if(isvalid.action == 'ok'){ - console.log("Authserver ok ", s.id + ' - ' + token); - // pubClient.set(session, resob1string, function(err, res) { - // }); - usersession.SOCKET.user = isvalid.user - usersession.SOCKET.scope = isvalid.scope // space delimeter - usersession.SOCKET.token = isvalid.token - s.auth = true; - }else{ - console.log("Authserver no ", s.id + ' - ' + token); - s.auth = false; - } - })() - }); - - setTimeout(function(){ - if (!s.auth) { - console.log("Disconnecting timeout socket ", s.id); - //s.disconnect('unauthorized'); - }else{ - var room = usersession.SOCKET.user - //s.on("subscribe", function (room) { - s.join(room); - console.log("joining rooom", s.rooms); - console.log(room + ' created ') - // }); - } - }, 30000); - - - - - var id = s.id - s.on('log', obj => { - console.error('from client '+ s.id + ' obj ' + obj); - }); - -}); - -http.listen(3000, () => console.error('listening on http://localhost:3000/')); -console.error('socket.io example'); diff --git a/swarmlab-app/src/run/runconfig.js b/swarmlab-app/src/run/runconfig.js deleted file mode 100644 index fe0e7a2..0000000 --- a/swarmlab-app/src/run/runconfig.js +++ /dev/null @@ -1,11 +0,0 @@ -var config = {}; - -config.mongo = {}; -config.redis = {}; - -config.mongo.user = 'user1' -config.mongo.password= 'pass1' -config.redis.host = 'redisserver'; -config.redis.port = 6379; - -module.exports = config; diff --git a/test-server.js b/test-server.js new file mode 100644 index 0000000..01848aa --- /dev/null +++ b/test-server.js @@ -0,0 +1,53 @@ +var path = require('path'); +var app = require('express')(); +var http = require('http').Server(app); +var io = require('socket.io')(http); + +const socketAuth = require('socketio-auth'); + +socketoptions = { + transports: [ 'websocket', 'polling' ], + secure:true, + reconnect: true, + rejectUnauthorized : false +}; + + +// Client +var io2 = require('socket.io-client'); +//var socket = io2.connect('http://localhost:8084', socketoptions); +//var socket = io2.connect('http://83.212.78.6:55528', socketoptions); +//var socket = io2.connect('http://factory.swarmlab.io:55528', socketoptions); +var socket = io2.connect('https://factory.swarmlab.io:55527', socketoptions); + + + + +socket.on('connection', s => { + console.error('socket2 connection'); + var id = s.id + + + var roomiot = 'iot' + s.emit('subscribe', roomiot); + + s.emit('log', 'Hi from client-n!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!1'); + + + s.on('message', function (data) { + console.log('from room1 '+data); + }); +}); + var roomiot = 'iot' + socket.emit('subscribe', roomiot); + + socket.on('message', function (data) { + console.log('from room '+data); + }); + + socket.emit('log', 'Hi from client-n'); + + + + +